详细说明了导入模块请求和节点导入之间的区别

详细说明了导入模块请求和节点导入之间的区别
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引擎所支持的,你必须升级你的代码,如果你开始部署进口现在,您可能需要在未来做出小的变化。

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部