require的基本语法:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量,对象,方法),在引入的文件中调用require()方法引入对象即可,换一种说法就是require相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数……再把require的结果赋值给某个变量,代码实现首先如:
export {newF as aa ,bb,cc} // 解构赋值语法(as关键字在这里表示将newF作为aa的数据接口暴露给外部,外部不能直接访问aa)
require和import分别使用在:
require 是赋值过程并且是运行时才执行,也就是异步加载。
require可以理解为一个全局方法,因为它是一个方法所以意味着可以在任何地方执行。
import 是解构过程并且是编译时执行。
import必须写在文件的顶部。
require和import的优缺点比较:
require的性能相对于import稍低,因为require是在运行时才引入模块并且还赋值给某个变量,而import只需要依据import中的接口在编译时引入指定模块所以性能稍高。
首先我们要明白require与import的基本语法:require的基本语法:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量,对象,方法),在引入的文件中调用require()方法引入对象即可,换一种说法就是require相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,...
var cjs2es6
import
=
require
('cjs2es6
import
');
var src = "var foo =
require
('bar');";
var newSrc = cjs2es6
import
(src); // "
import
foo from 'bar';"
demo/demo.js更多示例(运行npm start )
require
()调用是静态分析的,类似于 (在),以便
转换
为
import
语句。 ES6 导入旨在强制执行静态模块结构,因此并非所有需求都被翻译。
麻省理工学院
ES6标准发布后,module成为标准,标准的
使用
是以export指令导出接口,以
import
引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,
使用
require
引入模块,
使用
module.exports导出接口。
不把
require
和
import
整清楚,会在未来的标准编程中死的很难看。
require
时代的模块
node编程中最重要的思想之一就是模块,而正是这个思想,让JavaScript的大规模工程成为可能。模块化编程在js界流行,也是基于此,随后在浏览器端,
require
js和seajs之类的工具包也出现了,可以说在对应规范下,
require
统治了ES6之前的所
理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。
但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也就没有”模块”(module)了。
require
时代
Javascript社区做了很多努力,在现有的运行环境中,实现”模块”的效果。
模块就是实现特定功能的一组方法。
只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。
自从
使用
了 es6 的模块系统后,各种地方愉快地
使用
import
export default,但也会在老项目中看到
使用
commonjs规范的
require
module.exports。甚至有时候也会常常看到两者互用的场景。
使用
没有问题,但其中的关联与区别不得其解,
使用
起来也糊里糊涂。比如:
在es6之前js一直没有自己的模块
语法
,为了解决这种尴尬就有了
require
.js的出现。在es6发布之后js又引入了
import
的概念使得不清楚两者之间的区别的同学在实际
使用
过程中造成了自己的误解,在查阅了相关资料之后在此记录下自己的小小见解。
require
的基本
语法
核心概念:在导出的文件中定义module.export,导出的对象的类型不予限定(可以是任何类型,字符串,变量...
ES6标准发布后,module成为标准,标准的
使用
是以export指令导出接口,以
import
引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,
使用
require
引入模块,
使用
module.exports导出接口。
import
的
语法
跟
require
不同,而且
import
必须放在文件的最开始,且前面不允许有其他逻辑代码,这和其他所有编程语言风格一致。
import
...
ES6之前出现了JS模块加载的法案,最主要是CommonJS和AMD规范。CommonJS前者主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如
require
js,为异步加载。
import
和
require
区别
node编程中最重要的思想是模块化,
import
和
require
都是被模块化
使用
require
是运行时调用,所以可以随处引入
import
是编译时调用...
CommonJS的由来
在早期没有模块化思想时代码没有很好的编写规范,导致很多代码、逻辑重复、缺乏条理性且不易管理维护,这也让很多开发者头疼不已。随着JavaScript 社区的发展,社区为JavaScript制定了相应的规范,而CommonJS规范的提出得到了大家的承认和广泛的应用,2009年CommonJS就此诞生了。
CommonJS介绍
CommonJS实现了Javascript的模块化规范,规范了模块的特性和各模块之间的相互依赖性,使得代码可以更好的编写和维护,同时提高了代码的复用性。定义每个文件
require
:在Node.js中
使用
,
语法
为:
require
('模块或库路径')。
import
:在ES6中
使用
,
语法
为:
import
{ 方法或变量名 } from '模块或库路径'。
2.加载方式
require
:同步加载模块或库,一旦加载完成,整个应用程序才能执行。
import
:异步加载模块或库,
使用
的是ES6中的Promise异步方式,不会阻塞后续代码的执行。
3.作用域
require
:在Node.js中,加载的模块为单例,即在整个应用程序中只会被加载一次,且被缓存起来供后续
使用
。
import
:在ES6中,每次加载模块都是独立的,不会对其他模块产生影响。
4.默认导出
require
:不支持导出默认模块,需要
使用
module.exports导出一个对象。
import
:支持导出默认模块,
语法
为:
import
defaultName from '模块或库路径'。
综上,
require
和
import
的
使用
方式和作用有所不同,需要根据具体的环境和需求进行选择。在Node.js中必须
使用
require
,而在ES6中可以选择
使用
import
。
There is no tracking information for the current branch. Please specify which branch you want to...