本文小編為大家詳細(xì)介紹“javascript中AMD,CMD,Commonjs和es6有什么區(qū)別”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“javascript中AMD,CMD,Commonjs和es6有什么區(qū)別”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元扶溝做網(wǎng)站,已為上家服務(wù),為扶溝各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
1、AMD
AMD是RequireJS在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出,AMD規(guī)范則是非同步加載模塊,允許指定回調(diào)函數(shù)。
AMD標(biāo)準(zhǔn)中,定義了下面兩個(gè)API:
require([module], callback)
define(id, [depends], callback)
即通過(guò)define來(lái)定義一個(gè)模塊,然后使用 require 來(lái)加載一個(gè)模塊。 并且,require 還支持CommonJS 的模塊導(dǎo)出方式。
a.js define(['package/b',...], function(b) { function func1 () { b.sayHi('hello world'); } return { func1: func1 } }); require(['a'], function(a) { a.func1() })
2、CMD
CMD是SeaJS在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出。CMD是同步模塊定義。
//所有模塊都通過(guò)define來(lái)定義 define(function(require, exports, module) { // 通過(guò)require引入依賴 var $ = require('jquery'); var C = require('./c.js'); exports.sayHi = ... module.exports = ... })
二者的區(qū)別是前者是對(duì)于依賴的模塊提前執(zhí)行,而后者是延遲執(zhí)行。 前者推崇依賴前置,而后者推崇依賴就近,即只在需要用到某個(gè)模塊的時(shí)候再 require。
3、CommonJS 規(guī)范---module.exports
前端瀏覽器不支持,Nodejs中使用的是這個(gè)規(guī)范
exports.sum = function(a,b) { return a + b; } exports.count= function(arr) { return arr.length; }
CommonJS的核心思想就是通過(guò) require 方法來(lái)同步加載所要依賴的其他模塊,然后通過(guò) exports 或者 module.exports 來(lái)導(dǎo)出需要暴露的接口。
4、ES6---export/import
在ES6中,我們可以使用 import 關(guān)鍵字引入模塊,通過(guò) exprot 關(guān)鍵字導(dǎo)出模塊,功能較之于前幾個(gè)方案更為強(qiáng)大,也是我們所推崇的,但是由于ES6目前無(wú)法在瀏覽器中執(zhí)行,所以,我們只能通過(guò)babel將不被支持的import編譯為當(dāng)前受到廣泛支持的 require。
import Home from './Home.vue' export default { }
讀到這里,這篇“javascript中AMD,CMD,Commonjs和es6有什么區(qū)別”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。