ES6标准发布后,模块的标准为标准,是出口使用
命令导出接口,
介绍了导入的模块,但在我们的节点模块,我们使用CommonJS规范要求,采用了模块,使用module.exports输出接口。
如果不明确要求和
输入,在未来的标准编程中将很难死去。
需求时代的模块
在节点编程最重要的理念之一是模块,正是这种想法让Javascript的大型工程可能。模块化编程在流行的js,也正是基于此,然后在
浏览器端,requirejs和seajs,
工具箱也出现了,可以说,在相应的标准,要求在6所有模块编程前,即使是现在,之前在ES6模块完全实现,或。
节点模块遵循CommonJS规范,requirejs跟随AMD,seajs如下命令,虽然是不同的,但总之,还是要保持一个较为统一的代码风格。
/ / a.js
节点——
module.exports = { {
答:
函数(){ },
B:'xxx
};
AMD
定义(函数(需求,导出,模块){)
module.exports = { {
答:函数(){ },
B:'xxx
};
});
可以看出,为了保持高度统一的风格,除了使用定义函数在浏览器模块中
关闭模块外,其他代码可以完全相同。
/ / b.js
节点——
var(=);
(一);
AMD或-命令/
定义(函数(需求,导出,模块){)
var(=);
(一);
});
在使用中,它也非常相似,虽然AMD或CMD提供了更丰富的样式,但我们主要讨论的是节点环境,所以我们不做
扩展。
模块在6
6发布模块不直接使用CommonJS,甚至要求不使用,也就是说需要的仅仅是一个全球私人节点的
方法,module.exports是全局变量节点的私有财产,与标准没有半毛钱。
导出模块接口
出口的使用非常复杂,这里可以看到:
/ / a.js
导出缺省(函数){ }
导出函数(a){
var b = 'xxx;
出口{b}; / /这是6的措辞,实际上是{乙:b }
((setTimeout)= > B = 'ooo ',1000);
导出var C=100;
在要导出的接口前面,添加导出指令。
出口后,乙方可以
修改,这是完全不同的,CommonJS。这篇文章是无耻地不作为的内在机制。
注意,下面的语法有严重
错误:
错误/表示
1导出;绝对不
var a=100;
出口;
出口必须在模块内部的变量有一个对应的
界面时出口。1直接出口已没有意义,这是不可能的一个变量对应一个变量在进口时,出口,虽然它似乎是真实的,是一个值,可以不完全的毁灭,所以它必须被写作为一种出口{一}。即使被分配作为一个
功能,这是不允许的。此外,大多数款式
显示模块应该使用在模块的端口和出口的所有接口,例如:
导出{作为
默认的,A,B,C };
导入模块
导入的语法与需求不同,导入必须放在
文件的开头,前面不允许有其他的逻辑代码。这与所有其他编程
语言相一致。
进口的使用和出口一样复杂,一般可以理解:
进出from'jquery;
进口从_ '_;
从导入A、B、C;
进口{默认为别名,一为a_a,B、C }从' / ';
这里有一些坑,暂时不会透露,下面将提到。
在进口的形式是最基本的使用括号,在括号后面的变量的变量对应于出口。在这里,你必须了解对象的解构和
任务的知识,没有这方面的知识,你不能强迫它在这里。知道解构的任务,在这里一一对应可以理解。
关键词
编程学生很容易理解,只需取一个别名。可以使用导出,实际上可以使用导入:
/ / a.js
Var(a =函数){ };
导出{作为乐趣};
/ / b.js
从导入{;
(a);
上面的代码是由导出提供的,很有趣。这是在A.js的一个函数的别名,但它不能
识别一个外部模块,它只认可的乐趣。
作为进口很简单,那就是,当你使用方法里面的模块,采取这种方法的一个别名,这样你就可以用它在当前文件。这是因为有时两个不同的模块可以通过相同的接口,如通过有趣的界面c.js:
/ / c.js
导出函数(乐趣){ };
如果你使用A和C在B.js的两个模块,你要想
解决接口名称问题的途径,为解决。
关键词
我认为在导出部分写缺省是不好的。在导出时,可以使用默认值。它是白色的,它实际上是别名的语法糖:
/ / d.js
导出缺省(函数){ }
等效:
函数(a){;
导出{为默认};
在进口方面,可以这样使用:
从A导入;
等于或低于
缩写的意思是一样的。
从中导入缺省值为};
当语法糖的好处被导入时,可以
保存括号{ }简单地说,如果你
发现变量在导入时没有被括号括起来(没有*),你应该用花括号把它
恢复成一个语法。
因此,您应该理解以下内容:
进口美元,{每,地图} from'jquery;
进口{ defalut是在第一个$ }词的选择。
*符号
*代表所有,只在导入中,我们来看两个例子:
进口从_ '_;
在这个意义上,从进口_ '_;不同的是,虽然使用的方法是在背后其实是一样的。这是说,所有的接口在模块
安装'_ '_这个对象,所以你可以使用一个_每个调用接口。
另外,模块的接口可以直接由*数继承。
口* '_;
等效:
*所有的进口从'_;
导出所有;
*尽可能少地使用符号,它实际上使用所有导出接口,但很可能您当前的模块将不使用所有接口。它可能只是一个,所以最好的建议是使用花括号和使用一加一。
我应该使用要求还是进口
使用需求非常简单。它相当于module.exports传送门。module.exports背后是什么内容,要求,对象、数、弦的结果是什么,功能…然后要求的结果赋值给一个变量,这相当于重叠的平行
空间的
位置要求和module.exports。
从理论上讲,在代码中的任何地方都可以使用,甚至不需要将变量赋给变量,例如:
需要({ / A')();模块是函数模块立即实现的函数。
var数据=要求( A)。
var =(){ 0 };模块导出是一个数组。
当您使用时,您可以完全忽略模块化的概念来使用需求,只需将其视为节点的内置全局函数,其
参数甚至可以是表达式。
要求(process.cwd()+/);
但进口不同。它是编译的(要求是
运行时)。它必须放在文件的开头,格式也是明确的,它在运行完之后不会将整个模块分配给变量,但只编译导入的接口,这比要求的要好得多。
从理解,需要的是一个评估过程,进口是解构的过程当然需要也可以分配到一组变量的解构,但在进口面临违约,并要求是完全不同的:VAR需要=('jquery美元美元和import'jquery ');是两种不同的概念。
没有要求或进口的答案吗这个问题,由于这个问题,目前还不能回答,因为目前所有的
发动机还没有实现进口。我们用巴贝尔
支持6节点,只有6对ES5的转码,然后导入语法将转码的要求。这也是为什么module.exports时使用的模块输出。进口仍然有效时,引入模块,因为本质上,进口将转码的要求。
然而,我们需要知道这个真相。ES7将很快被释放。JS引擎将达到6标准尽快。如果发动机达不到标准,就会被淘汰。6是迟早的事。如果你还部署需要在代码中,那么当ES6引擎所支持的,你必须
升级你的代码,如果你开始部署进口现在,您可能需要在未来做出小的变化。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。