importimport是es6提出的一种新语法,用于js模块化。import是一种语法,用于将一个模块中导出的函数、对象和初始值导入到另一个模块中。它必须放在文件的开头,使用的格式也是确定的,不容置疑的。它运行后并没有将整个模块赋值给一个变量,而是只选择了import的接口进行编译,在性能上比require好很多。require是赋值过程,import是解构过程MDNimportimportdefaultExportfrom"module-name";//导出默认值exportdefaultimport*asnamefrom"module-name";//导出默认的exportdefault,并将所有输出包装到obj对象import{export1}from"module-name";//导出名为export1的模块import{export1asalias1}from"module-name";//导出名为export1的模块,并将export1的输出包装成alias1对象import{export1,export2}from"module-name";//导出名为export1,export2的模块模块,但实际上不导入任何值varpromise=import("module-name");//动态导入模块requirerequire是Commonjs的规范。Node应用由模块组成,遵循commonjs规范。用于导入模块、JSON或本地文件。相当于module.exports的入口,module.exports后面的内容是什么,require的结果是什么,object,number,string,function...然后把require的结果赋值给一个变量,就是相当于require位置与module.exports重叠的平行空间。//导入本地模块:constmyLocalModule=require('./path/myLocalModule');//导入JSON文件:constjsonData=require('./path/filename.json');//导入node_modules模块或Node.js内置模块:constcrypto=require('crypto');引用知乎引用博客园require在通过require引入基本数据类型时,复制变量。当通过require引入复杂数据类型时,数据浅拷贝对象。当模块之间存在循环引用时,会输出已执行的模块,但不会输出未执行的模块(复杂)CommonJS模块默认会导出一个对象,即使导出了基本数据类型,不管是basic(复杂)数据类型,只是对变量的动态只读引用。动态意味着一个模块中变量的变化会影响另一个模块;read-only表示当一个变量从模块中导入时,该变量的值是不允许修改的。对于复杂的数据类型,可以添加属性和方法,但不允许指向另一个内存空间。当模块之间发生循环引用时,只要模块中存在引用,代码就可以执行。
