# 关于require和import的疑问
1、规范不同
- require 是commonJS 规范。
- import 是JavaScript 的ES6 规范。
2、使用方式
- require 在node项目中用,其默认存在于Nodejs的全局变量中,可以直接使用。 但是不能直接在浏览器使用,会报错。提示
require is not defined
。如果非要直接在浏览器中使用的话,需要browserify
插件(浏览器没有定义 require 方法,但 Node.js 有。 使用 Browserify,您可以编写使用 require 的代码,就像在 Node 中使用 require 一样。)或者webpack
转成浏览器端可识别的代码。(参考:03-前端CommonJS-Browserify模块化.md) - import可以在JavaScript可以直接使用,但是如果想直接在script中使用src的方式引入的话,需要指定
type="module"
,声明引入的是一个js模块。
<script type="module">
import $ from "./jquery/src/jquery.js";
$('#message').text('Hi from jQuery!');
</script>
3、为什么vue中既可以使用require,也可以使用import?
我们平时使用 vue 必然会用到 webpack,从 webpack 1 就对 CommonJS 默认支持,而使用babel可对ES6的模块系统进行了编译,将其转换为CommonJS规范。