成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript 模塊化機(jī)制

whlong / 3100人閱讀

摘要:作為新手,發(fā)現(xiàn)對(duì)于其的模塊機(jī)制,不是很理解。的概念出現(xiàn)有效規(guī)范了的模塊化規(guī)范。不再需要對(duì)象作為命名空間比如對(duì)象,未來這些功能可以通過模塊提供。瀏覽器使用模塊的語法如下導(dǎo)出對(duì)象和變量導(dǎo)出類對(duì)象引入加載機(jī)制詳見引用資料高靜的并行加載與順序執(zhí)行

1. 概述

js發(fā)展初期暴露了其缺陷:缺乏模塊,后來提出了commonJS規(guī)范來規(guī)范其模塊的規(guī)范。作為JavaScript新手,發(fā)現(xiàn)對(duì)于其JavaScript的模塊機(jī)制,不是很理解。我查閱了一些資料整理了JavaScript CommonJS的原理和機(jī)制。

2. JavaScript 2.1 無后端的項(xiàng)目

這類項(xiàng)目不能使用CommonJS的模塊規(guī)范,這是我起初所犯的錯(cuò)誤。在沒有es6被大多數(shù)瀏覽器支持的時(shí)候,js文件充斥著var和function,由此引來了命名沖突和污染,使得JavaScript代碼很復(fù)雜。es6的class概念出現(xiàn)有效規(guī)范了JavaScript的模塊化規(guī)范。由于這類項(xiàng)目只能通過script標(biāo)簽引入,我們?cè)谶@里講一下script標(biāo)簽的相關(guān)知識(shí)。
每當(dāng)瀏覽器解析到

這樣就可以在index.js使用point類了。
總結(jié)下來:

js類庫必須在header中引入,保證對(duì)之后script引入的js文件的支持,畢竟script標(biāo)簽的執(zhí)行順序是順序執(zhí)行,script標(biāo)簽引入順序和實(shí)際引入順序相同。

自定義的script標(biāo)簽引入的js文件,要放在body的尾部,保證DOM元素渲染結(jié)束。

每個(gè)js文件盡量是es6 class對(duì)象,避免作用域和命名域的沖突。

2.2 后端 服務(wù)器 NodeJS

模塊引用的實(shí)例如下:require方法

const math = require("math");

模塊的定義:
上下文提供了exports對(duì)象用于導(dǎo)出當(dāng)前模塊方法和變量,并且它是唯一的導(dǎo)出出口。在模塊中,還存在一個(gè)module對(duì)象,他代表模塊自身,exports是module對(duì)象的屬性。導(dǎo)出方式:

// math.js
exports.add = function () { };
module.exports.add = function () { }; 
2.3 后端 es6的module

ES6模塊不是對(duì)象,而是通過export命令顯式指定輸出的代碼,輸入時(shí)也采用靜態(tài)命令的形式。
由于ES6模塊是編譯時(shí)加載,使得靜態(tài)分析成為可能。有了它,就能進(jìn)一步拓寬JavaScript的語法,比如引入宏(macro)和類型檢驗(yàn)(type system)這些只能靠靜態(tài)分析實(shí)現(xiàn)的功能。

除了靜態(tài)加載帶來的各種好處,ES6模塊還有以下好處:

不再需要UMD模塊格式了,將來服務(wù)器和瀏覽器都會(huì)支持ES6模塊格式。目前,通過各種工具庫,其實(shí)已經(jīng)做到了這一點(diǎn)。

將來瀏覽器的新API就能用模塊格式提供,不再必要做成全局變量或者navigator對(duì)象的屬性。

不再需要對(duì)象作為命名空間(比如Math對(duì)象),未來這些功能可以通過模塊提供。

瀏覽器使用ES6模塊的語法如下:

導(dǎo)出對(duì)象和變量:


variables.js

var firstName = "XXX";
var lastName = "YYY";
export {firstName, lastName};

Point.js

// 導(dǎo)出類對(duì)象
export default class Point extends circle {

}

引入module


import Point from "Point";

加載機(jī)制詳見:es6 module

引用資料:
高靜:js的并行加載與順序執(zhí)行

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/50195.html

相關(guān)文章

  • javascript 塊化機(jī)制

    摘要:作為新手,發(fā)現(xiàn)對(duì)于其的模塊機(jī)制,不是很理解。的概念出現(xiàn)有效規(guī)范了的模塊化規(guī)范。不再需要對(duì)象作為命名空間比如對(duì)象,未來這些功能可以通過模塊提供。瀏覽器使用模塊的語法如下導(dǎo)出對(duì)象和變量導(dǎo)出類對(duì)象引入加載機(jī)制詳見引用資料高靜的并行加載與順序執(zhí)行 1. 概述 js發(fā)展初期暴露了其缺陷:缺乏模塊,后來提出了commonJS規(guī)范來規(guī)范其模塊的規(guī)范。作為JavaScript新手,發(fā)現(xiàn)對(duì)于其JavaS...

    cikenerd 評(píng)論0 收藏0
  • Node.js入門:模塊機(jī)制

    摘要:模塊載入策略的模塊分為兩類,一類為原生核心模塊,一類為文件模塊。最后傳入對(duì)象的,方法,,文件名,目錄名作為實(shí)參并執(zhí)行。在這個(gè)主文件中,可以通過方法去引入其余的模塊。以上所描述的模塊載入機(jī)制均定義在中。 CommonJS規(guī)范? 早在Netscape誕生不久后,JavaScript就一直在探索本地編程的路,Rhino是其代表產(chǎn)物。無奈那時(shí)服務(wù)端JavaScript走的路均是參考眾多服務(wù)器端...

    alanoddsoff 評(píng)論0 收藏0
  • Node.js入門:模塊機(jī)制

    摘要:模塊載入策略的模塊分為兩類,一類為原生核心模塊,一類為文件模塊。最后傳入對(duì)象的,方法,,文件名,目錄名作為實(shí)參并執(zhí)行。在這個(gè)主文件中,可以通過方法去引入其余的模塊。以上所描述的模塊載入機(jī)制均定義在中。 CommonJS規(guī)范? 早在Netscape誕生不久后,JavaScript就一直在探索本地編程的路,Rhino是其代表產(chǎn)物。無奈那時(shí)服務(wù)端JavaScript走的路均是參考眾多服務(wù)器端...

    everfight 評(píng)論0 收藏0
  • node核心特性理解

    摘要:概述本文主要介紹了我對(duì)的一些核心特性的理解,包括架構(gòu)特點(diǎn)機(jī)制核心模塊與簡單應(yīng)用。在此期間,主線程繼續(xù)執(zhí)行其他任務(wù)。延續(xù)了瀏覽器端單線程,只用一個(gè)主線程執(zhí)行,不斷循環(huán)遍歷事件隊(duì)列,執(zhí)行事件。 原文地址在我的博客,轉(zhuǎn)載請(qǐng)注明來源,謝謝! node是在前端領(lǐng)域經(jīng)??吹降脑~。node對(duì)于前端的重要性已經(jīng)不言而喻,掌握node也是作為合格的前端工程師一項(xiàng)基本功了。知道node、知道后端的一些東西...

    huangjinnan 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<