<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                > commonjs是用在服務器端的,同步的,如nodejs > amd, cmd是用在瀏覽器端的,異步的,如requirejs和seajs 其中,amd先提出,cmd是根據commonjs和amd基礎上提出的。 ## CommonJS `CommonJS` 是以在瀏覽器環境之外構建 JavaScript 生態系統為目標而產生的項目,比如在服務器和桌面環境中,`Node.JS`遵循`CommonJS`的規范 `CommonJS` 規范是為了解決 `JavaScript` 的作用域問題而定義的模塊形式,可以使每個模塊它自身的命名空間中執行。該規范的主要內容是,模塊必須通過 `module.exports` 導出對外的變量或接口,通過 `require()` 來導入其他模塊的輸出到當前模塊作用域中。 舉例說明: ``` var clock = require('clock'); clock.start(); ``` `CommonJS`是同步加載模塊 ## AMD((Asynchromous Module Definition) 基于`CommonJS`規范的`nodeJS`出來以后,服務端的模塊概念已經形成,很自然地,大家就想要客戶端模塊。而且最好兩者能夠兼容,一個模塊不用修改,在服務器和瀏覽器都可以運行。但是,由于一個重大的局限,使得`CommonJS`規范不適用于瀏覽器環境。如果將上面的代碼運行在客戶端瀏覽器,就會報錯。 上面的`require`方法是同步的。這對服務器端不是一個問題,因為所有的模塊都存放在本地硬盤,可以同步加載完成,等待時間就是硬盤的讀取時間。但是,對于瀏覽器,這卻是一個大問題,因為模塊都放在服務器端,等待時間取決于網速的快慢,可能要等很長時間,瀏覽器處于"假死"狀態。 因此,瀏覽器端的模塊,不能采用"同步加載",只能采用"異步加載"。這就是`AMD`規范誕生的背景。 **CommonJS是主要為了JS在后端的表現制定的,他是不適合前端的,AMD出現了,它就主要為前端JS的表現制定規范。** `AMD`是`Asynchronous Module Definition`的縮寫,意思就是"異步模塊定義"。它采用異步方式加載模塊,模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。 `AMD`也采用`require()`語句加載模塊,但是不同于`CommonJS`,它要求兩個參數: ``` require([module], callback); require(['clock'],function(clock){ clock.start(); }); ``` `requireJs`就是`AMD`規范的實現 ## CMD `CMD`(Common Module Definition), 是`seajs`推崇的規范,`CMD`則是依賴就近,用的時候再`require`。它寫起來是這樣的: ``` define(function(require, exports, module) { var clock = require('clock'); clock.start(); }); ``` `AMD`和`CMD`最大的區別是對依賴模塊的執行時機處理不同,而不是加載的時機或者方式不同,二者皆為異步加載模塊。 `AMD`依賴前置,`js`可以方便知道依賴模塊是誰,立即加載;而`CMD`就近依賴,需要使用把模塊變為字符串解析一遍才知道依賴了那些模塊
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看