国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS模塊規(guī)范:AMD、UMD、CMD、commonJS、ES6 module

_ang / 1728人閱讀

摘要:要想讓模塊再次運(yùn)行,必須清除緩存。模塊加載會(huì)阻塞接下來代碼的執(zhí)行,需要等到模塊加載完成才能繼續(xù)執(zhí)行同步加載。環(huán)境服務(wù)器環(huán)境應(yīng)用的模塊規(guī)范是參照實(shí)現(xiàn)的。這等同在每個(gè)模塊頭部,有一行這樣的命令。

commonJS

特點(diǎn):

1、模塊可以多次加載,但是只會(huì)在第一次加載時(shí)運(yùn)行一次,然后運(yùn)行結(jié)果就被緩存了,以后再加載,就直接讀取緩存結(jié)果。要想讓模塊再次運(yùn)行,必須清除緩存。
2、模塊加載會(huì)阻塞接下來代碼的執(zhí)行,需要等到模塊加載完成才能繼續(xù)執(zhí)行——同步加載。

環(huán)境:服務(wù)器環(huán)境

應(yīng)用:nodejs的模塊規(guī)范是參照commonJS實(shí)現(xiàn)的。

語法:

1、導(dǎo)入:require("路徑")
2、導(dǎo)出:module.exports和exports

注意:module.exports和exports的的區(qū)別是exports只是對(duì)module.exports的一個(gè)引用,相當(dāng)于Node為每個(gè)模塊提供一個(gè)exports變量,指向module.exports。這等同在每個(gè)模塊頭部,有一行var exports = module.exports;這樣的命令。

demo

// a.js
// 相當(dāng)于這里還有一行:var exports = module.exports;代碼
exports.a = "Hello world";  // 相當(dāng)于:module.exports.a = "Hello world";

// b.js
var moduleA = require("./a.js");
console.log(moduleA.a);     // 打印出hello world
AMD

特點(diǎn):

1、異步加載
2、管理模塊之間的依賴性,便于代碼的編寫和維護(hù)。

環(huán)境:瀏覽器環(huán)境

應(yīng)用:requireJS是參照AMD規(guī)范實(shí)現(xiàn)的

語法:

1、導(dǎo)入:require(["模塊名稱"], function ("模塊變量引用"){// 代碼});
3、導(dǎo)出:define(function (){return "值");

demo

// a.js
define(function (){
  return {
   a:"hello world"
  }
});
// b.js
require(["./a.js"], function (moduleA){
    console.log(moduleA.a); // 打印出:hello world
});
CMD

特點(diǎn)

1、CMD是在AMD基礎(chǔ)上改進(jìn)的一種規(guī)范,和AMD不同在于對(duì)依賴模塊的執(zhí)行時(shí)機(jī)處理不同,CMD是就近依賴,而AMD是前置依賴。

環(huán)境:瀏覽器環(huán)境

應(yīng)用:seajs是參照UMD規(guī)范實(shí)現(xiàn)的,requireJS的最新的幾個(gè)版本也是部分參照了UMD規(guī)范的實(shí)現(xiàn)

語法:

1、導(dǎo)入:define(function(require, exports, module) {});
2、導(dǎo)出:define(function (){return "值");

demo

// a.js
define(function (require, exports, module){
  exports.a = "hello world";
});
// b.js
define(function (require, exports, module){
    var moduleA = require("./a.js");
    console.log(moduleA.a); // 打印出:hello world
});
UMD

特點(diǎn):

1、兼容AMD和commonJS規(guī)范的同時(shí),還兼容全局引用的方式

環(huán)境:瀏覽器或服務(wù)器環(huán)境

應(yīng)用:無

語法:

1、無導(dǎo)入導(dǎo)出規(guī)范,只有如下的一個(gè)常規(guī)寫法:

常規(guī)寫法:

(function (root, factory) {
    if (typeof define === "function" && define.amd) {
        //AMD
        define(["jquery"], factory);
    } else if (typeof exports === "object") {
        //Node, CommonJS之類的
        module.exports = factory(require("jquery"));
    } else {
        //瀏覽器全局變量(root 即 window)
        root.returnExports = factory(root.jQuery);
    }
}(this, function ($) {
    //方法
    function myFunc(){};
    //暴露公共方法
    return myFunc;
}));
ES6 module

特點(diǎn):

1、按需加載(編譯時(shí)加載)
2、import和export命令只能在模塊的頂層,不能在代碼塊之中(如:if語句中),import()語句可以在代碼塊中實(shí)現(xiàn)異步動(dòng)態(tài)按需動(dòng)態(tài)加載

環(huán)境:瀏覽器或服務(wù)器環(huán)境(以后可能支持)

應(yīng)用:ES6的最新語法支持規(guī)范

語法:

1、導(dǎo)入:import {模塊名A,模塊名B...} from "模塊路徑"
2、導(dǎo)出:export和export default
3、import("模塊路徑").then()方法

注意:export只支持對(duì)象形式導(dǎo)出,不支持值的導(dǎo)出,export default命令用于指定模塊的默認(rèn)輸出,只支持值導(dǎo)出,但是只能指定一個(gè),本質(zhì)上它就是輸出一個(gè)叫做default的變量或方法。

規(guī)范:

/*錯(cuò)誤的寫法*/
// 寫法一
export 1;

// 寫法二
var m = 1;
export m;

// 寫法三
if (x === 2) {
  import MyModual from "./myModual";
}

/*正確的三種寫法*/
// 寫法一
export var m = 1;

// 寫法二
var m = 1;
export {m};

// 寫法三
var n = 1;
export {n as m};

// 寫法四
var n = 1;
export default n;

// 寫法五
if (true) {
    import("./myModule.js")
    .then(({export1, export2}) => {
      // ...·
    });
}

// 寫法六
Promise.all([
  import("./module1.js"),
  import("./module2.js"),
  import("./module3.js"),
])
.then(([module1, module2, module3]) => {
   ···
});

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92106.html

相關(guān)文章

  • JS常見模塊規(guī)范(CommonJS/AMD/CMD/UMD/ES6 Module)

    摘要:常見模塊化方案是由社區(qū)提出的模塊化方案中的一種,遵循了這套方案。是模塊化規(guī)范中的一種,遵循了這套規(guī)范。中的模塊化能力由兩個(gè)命令構(gòu)成和,命令用于規(guī)定模塊的對(duì)外接口,命令用于輸入其他模塊提供的功能。 為什么需要模塊化 在ES6出現(xiàn)之前,JS語言本身并沒有提供模塊化能力,這為開發(fā)帶來了一些問題,其中最重要的兩個(gè)問題應(yīng)當(dāng)是全局污染和依賴管理混亂。 // file a.js var name =...

    walterrwu 評(píng)論0 收藏0
  • js中的模塊化——commonjs,AMD,CMD,UMD,ES6

    摘要:若不存在則模塊標(biāo)識(shí)應(yīng)該默認(rèn)定義為在加載器中被請(qǐng)求腳本的標(biāo)識(shí)。這也是目前很多插件頭部的寫法,就是用來兼容各種不同模塊化的寫法。語句輸出的值是動(dòng)態(tài)綁定的,綁定其所在的模塊。 前言 歷史上,js沒有模塊化的概念,不能把一個(gè)大工程分解成很多小模塊。這對(duì)于多人開發(fā)大型,復(fù)雜的項(xiàng)目形成了巨大的障礙,明顯降低了開發(fā)效率,java,Python有import,甚至連css都有@import,但是令人費(fèi)...

    qpal 評(píng)論0 收藏0
  • JS模塊化——CommonJS AMD CMD UMD ES6 Module 比較

    摘要:即盡早地執(zhí)行依賴模塊。阮一峰輸出值的引用模塊是動(dòng)態(tài)關(guān)聯(lián)模塊中的值,輸出的是值得引用。的加載實(shí)現(xiàn)阮一峰運(yùn)行時(shí)加載靜態(tài)編譯模塊是運(yùn)行時(shí)加載,模塊是編譯時(shí)輸出接口。 模塊化開發(fā) 優(yōu)點(diǎn) 模塊化開發(fā)中,通常一個(gè)文件就是一個(gè)模塊,有自己的作用域,只向外暴露特定的變量和函數(shù),并且可以按需加載。 依賴自動(dòng)加載,按需加載。 提高代碼復(fù)用率,方便進(jìn)行代碼的管理,使得代碼管理更加清晰、規(guī)范。 減少了命名沖...

    shadowbook 評(píng)論0 收藏0
  • JS基礎(chǔ)】一文看懂前端模塊規(guī)范

    摘要:參考資料前端模塊化詳解完整版入門近一萬字的語法知識(shí)點(diǎn)補(bǔ)充徹底搞清楚中的和和詳解 前言 前端的模塊化之路經(jīng)歷了漫長(zhǎng)的過程,想詳細(xì)了解的小伙伴可以看浪里行舟大神寫的前端模塊化詳解(完整版),這里根據(jù)幾位大佬們寫的文章,將模塊化規(guī)范部分做了匯總和整理,希望讀完的小伙伴能有些收獲,也希望覺得有用的小伙伴可以點(diǎn)個(gè)贊,筆芯。 什么是模塊 將一個(gè)復(fù)雜的程序依據(jù)一定的規(guī)則(規(guī)范)封裝成幾個(gè)塊(文件)...

    HelKyle 評(píng)論0 收藏0
  • JS模塊化編程

    摘要:也就是說,外部模塊輸出值變了,當(dāng)前模塊的導(dǎo)入值不會(huì)發(fā)生變化。三規(guī)范的出現(xiàn),使得模塊化在環(huán)境中得到了施展機(jī)會(huì)。模塊化這種加載稱為編譯時(shí)加載或者靜態(tài)加載。總結(jié)的模塊化規(guī)范經(jīng)過了模塊模式的演進(jìn),利用現(xiàn)在常用的打包工具,非常方便我們編寫模塊化代碼。 前言 什么是模塊化? 模塊就是實(shí)現(xiàn)特定功能的一組方法,而模塊化是將模塊的代碼創(chuàng)造自己的作用域,只向外部暴露公開的方法和變量,而這些方法之間高度解耦...

    騫諱護(hù) 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<