# 关于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规范。