amd cmd commonjs 模塊規範 和 es6 的 module 語法

  • js的模塊化javascript

    在前端開發的原始時期,只要在script標籤中嵌入js代碼就能實現一些基本的交互效果,可是隨着時代的進步。js扮演的角色變得重要起來,js應用的場景頁愈來愈複雜,。然而,js都沒有類的概念,更不用說模塊了。前端

    爲何要有模塊化java

    1. 當一個項目變得複雜的時候,會出現問題,好比:
      命名衝突:開發中重複命名,致使命名衝突。
      文件依賴:項目開發中,依賴的js文件,引入遺漏,引入順序錯誤。es6

    2. 使用模塊化開發能夠避免相似狀況,並且利於項目的維護:
      提高開發效率:代碼方便重用,能直接引入,避免重複開發。
      方便後期維護:維護起來文件依賴和結構清晰數組

  • AMD
    AMD 英文Asynchronous Module Definition,中文「異步模塊定義」。它是一個在瀏覽器端模塊化開發的規範。AMD規範的主要實現是RequireJs瀏覽器


define(id?, dependencies?, factory) id:指定義中模塊的名字(可選)。若是沒有提供該參數,模塊的名字應該默認爲模塊加載器請求的指定腳本的名字。若是提供了該參數,模塊名必須是「頂級」的和絕對的(不容許相對名字)。 dependencies:當前模塊依賴的,已被模塊定義的模塊標識的數組字面量(可選)。 factory:一個須要進行實例化的函數或者一個對象。 

define("alpha", ["require", "exports", "beta"], function (require, exports, beta) { exports.verb = function() { return beta.verb(); //Or: return require("beta").verb(); } });
  • CMD 
    CMD 英文 Common Module Definition。CMD 依賴就近。CMD規範的主要實現是SeaJs服務器

    define(function(require, exports, module){ 模塊代碼 }); 
  • commonjs
    CommonJS是服務器端模塊的規範,Nodejs使用該規範。
    CommonJS定義,一個單獨的文件就是一個模塊。每個模塊都是一個單獨的做用域,在該模塊內部定義的變量,沒法被其餘模塊讀取,除非定義爲global對象屬性。
    經過 require 來加載模塊。
    commonJs經過 exports 和 modul.exports 來暴露模塊中的內容。異步

  • es6的module 語法 
    一個模塊就是一個獨立的文件。該文件內部的全部變量,外部沒法獲取。
    export 命令用於規定模塊的對外接口。
    import 命令用於輸入其餘模塊提供的功能。模塊化

    // profile.js export var firstName = 'Michael'; export var lastName = 'Jackson'; export var year = 1958; // main.js import {firstName, lastName, year} from './profile'; function setName(element) { element.textContent = firstName + ' ' + lastName; }
相關文章
相關標籤/搜索