node中模塊、AMD與CMD、ES6模塊,node中使用ES6


1.Nodejs 中的模塊

在node環境中一個js文件就是一個模塊(module) 我們采用的是CommonJS規范,使用require引入模塊,使用module.exports導出接口

 

node的module遵循CommonJS規范,requirejs遵循AMD,seajs遵循CMD

 

// a.js

// -------- node -----------
module.exports = {
a : function() {},
b : 'xxx'
};

// ----------- AMD or CMD ----------------關於AMD/CMD   http://www.cnblogs.com/chenguangliang/p/5856701.html

 

define(function(require, exports, module){
module.exports = {
a : function() {},
b : 'xxx'
};


// ------------ node ---------
var m = require('./a');
m.a();

// ------------ AMD or CMD -------------
define(function(require, exports, module){
var m = require('./a');
m.a();
});


1-1關於AMD 、CMD

Node 使用 CommonJS 模塊系統。

AMD:AMD即Asynchronous Module Definition,翻譯過來就是異步模塊化定義 requirejs是遵循此規范

CMD: common moudle definition,翻譯過來即通用模塊定義  seajs是遵循此規范

 

1.RequireJS在主文件里是將所有的文件同時加載,然而SeaJS強調一個文件一個模塊。

 

2.AMD推崇依賴前置,CMD推崇依賴就近。

amd 加載完模塊后立即執行  cmd加載完模塊后 遇到require 才執行

 

2.ES6中的模塊

使用export 導出模塊,import 導入模塊

3.兩種引用模塊方式對比

1. import是編譯時的(require是運行時的),它必須放在文件開頭,而且使用格式也是確定的,不容置疑。

2. import不會將整個模塊運行后賦值給某個變量,而是只選擇import的接口進行編譯,這樣在性能上比require好很多。

3. require是賦值過程,import是解構過程,當然,require也可以將結果解構賦值給一組變量,但是import在遇到default時,和require則完全不同: var $ = require('jquery'); 和 import $ from 'jquery' 是完全不同的兩種概念。

目前 我們在node中使用babel支持ES6,也僅僅是將ES6轉碼為ES5再執行,import語法會被轉碼為require。這也是為什么在模塊導出時使用module.exports,在引入模塊時使用import仍然起效,因為本質上,import會被轉碼為require去執行。

上面3條 參考文章 https://blog.csdn.net/baidu_31333625/article/details/53980302

4.在node中使用ES6

nodejs仍未支持import/export語法,需要安裝必要的npm包–babel,使用babel將js文件編譯成node.js支持的commonjs格式的代碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM