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

資訊專(zhuān)欄INFORMATION COLUMN

簡(jiǎn)單理解CommonJS規(guī)范

王笑朝 / 1939人閱讀

摘要:事實(shí)上已經(jīng)出現(xiàn)了模塊規(guī)范,如果使用的模塊規(guī)范是無(wú)需環(huán)境的。因此,需要將規(guī)范和的模塊規(guī)范區(qū)分開(kāi)來(lái)。三模塊規(guī)范的好處模塊規(guī)范很好地解決變量污染問(wèn)題,每個(gè)模塊具有獨(dú)立空間,互不干擾,命名空間等方案與之相比相形見(jiàn)絀。

寫(xiě)在前面:
  一個(gè)文件就是一個(gè)模塊。
  另外本文中的示例代碼需要在node.js環(huán)境中方可正常運(yùn)行,否則將出現(xiàn)錯(cuò)誤。事實(shí)上ES6已經(jīng)出現(xiàn)了模塊規(guī)范,如果使用ES6的模塊規(guī)范是無(wú)需node.js環(huán)境的。因此,需要將commonJS規(guī)范和ES6的模塊規(guī)范區(qū)分開(kāi)來(lái)。

一、為什么制定CommonJS規(guī)范?
  在后端,JavaScript的規(guī)范遠(yuǎn)遠(yuǎn)落后并且有很多缺陷,這使得難以使用JavaScript開(kāi)發(fā)大型應(yīng)用。比如:

沒(méi)有模塊系統(tǒng)
標(biāo)準(zhǔn)庫(kù)較少
沒(méi)有標(biāo)準(zhǔn)接口
缺乏包管理系統(tǒng)
列表內(nèi)容

  CommonJS規(guī)范的提出,主要是為了彌補(bǔ)JavaScript沒(méi)有標(biāo)準(zhǔn)的缺陷,已達(dá)到像Python、Ruby和Java那樣具備開(kāi)發(fā)大型應(yīng)用的基礎(chǔ)能力,而不是停留在開(kāi)發(fā)瀏覽器端小腳本程序的階段。

二、CommonJS模塊規(guī)范
  CommonJS模塊規(guī)范主要分為三部分:模塊引用、模塊定義、模塊標(biāo)識(shí)。

1、模塊引用
  如果在a.js文件中使用如下語(yǔ)句

var math=require("math");

意為使用require()方法,引入math模塊,并賦值給變量math。事實(shí)上,命名的變量名和引入的模塊名不必相同,就像這樣:

var Math=require("math");

  賦值的意義在于,a.js中將僅能識(shí)別Math,因?yàn)檫@是已經(jīng)定義的變量,并不能識(shí)別math,因?yàn)閙ath沒(méi)有定義。

帶路徑和不帶路徑
  上面例子中require的參數(shù)僅僅是模塊名字的字符串,沒(méi)有帶有路徑,引用的是a.js所在當(dāng)前目錄下的node_modules目錄下的math模塊。如果當(dāng)前目錄沒(méi)有node_modules目錄或者node_modules目錄里面沒(méi)有安裝math模塊,便會(huì)報(bào)錯(cuò)。
  
  如果要引入的模塊在其他路徑,就需要使用到相對(duì)路徑或者絕對(duì)路徑,例如:

var add=require("./add.js")

  上面例子中引入了當(dāng)前目錄下的add.js文件,并賦值給add變量。

2、模塊定義

module對(duì)象:在每一個(gè)模塊中,module對(duì)象代表該模塊自身。
export屬性:module對(duì)象的一個(gè)屬性,它向外提供接口。

  仍然采用上一個(gè)示例,假設(shè)add.js中的代碼如下:
  

function add(num1,num2){
    alert(num1+num2);
}

  盡管a.js文件引入了add.js文件,前者卻仍然無(wú)法使用后者中的add函數(shù),在a.js文件中add(3,5)這樣的代碼會(huì)報(bào)錯(cuò),提示add不是一個(gè)函數(shù)。
  add.js中的函數(shù)要能被其他模塊使用,就需要暴露一個(gè)對(duì)外的接口,export屬性用于完成這一工作。將add.js中代碼改為如下:

exports.add=function (num1,num2){
    alert(num1+num2);
}

  a.js文件就可以正常調(diào)用add.js中的方法,例如add.add(3,5)這樣的調(diào)用能夠正常執(zhí)行,前一個(gè)add意為本文件中add變量代表的模塊,后一個(gè)add是引入模塊的add方法。

3、模塊標(biāo)識(shí)

模塊標(biāo)識(shí)指的是傳遞給require方法的參數(shù),必須是符合小駝峰命名的字符串,或者以 . 、.. 、開(kāi)頭的相對(duì)路徑,或者絕對(duì)路徑。

三、CommonJS模塊規(guī)范的好處
CommonJS模塊規(guī)范很好地解決變量污染問(wèn)題,每個(gè)模塊具有獨(dú)立空間,互不干擾,命名空間等方案與之相比相形見(jiàn)絀。

CommonJS規(guī)范定義模塊十分簡(jiǎn)單,接口十分簡(jiǎn)潔。

CommonJS模塊規(guī)范支持引入和導(dǎo)出功能,這樣可以順暢地連接各個(gè)模塊,實(shí)現(xiàn)彼此間的依賴(lài)關(guān)系。

作者:夜色蕪染
來(lái)源:CSDN
原文:https://blog.csdn.net/u012443...
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

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

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

相關(guān)文章

  • 前端模塊化(一)nodeJS中的CommonJS規(guī)范

    摘要:要想讓模塊再次運(yùn)行,必須清除緩存。模塊加載的順序,按照其在代碼中出現(xiàn)的順序。最近參加了公司開(kāi)展的一次培訓(xùn),結(jié)構(gòu)性思維培養(yǎng)。 序言 模塊化,大家用vue,react等東西,都會(huì)接觸到像exports,module.exports,export,export default,require,define,import等等字段,感覺(jué)很多人對(duì)于這些東西還是分不清,概念非常的模糊,便想著寫(xiě)這么一...

    Charlie_Jade 評(píng)論0 收藏0
  • 前端模塊化詳解(完整版)

    摘要:二模塊化規(guī)范概述應(yīng)用由模塊組成,采用模塊規(guī)范。模塊化語(yǔ)法命令用于規(guī)定模塊的對(duì)外接口,命令用于輸入其他模塊提供的功能。 前言 在JavaScript發(fā)展初期就是為了實(shí)現(xiàn)簡(jiǎn)單的頁(yè)面交互邏輯,寥寥數(shù)語(yǔ)即可;如今CPU、瀏覽器性能得到了極大的提升,很多頁(yè)面邏輯遷移到了客戶(hù)端(表單驗(yàn)證等),隨著web2.0時(shí)代的到來(lái),Ajax技術(shù)得到廣泛應(yīng)用,jQuery等前端庫(kù)層出不窮,前端代碼日益膨脹,此時(shí)...

    Sanchi 評(píng)論0 收藏0
  • 前端模塊化詳解(完整版)

    摘要:二模塊化規(guī)范概述應(yīng)用由模塊組成,采用模塊規(guī)范。模塊化語(yǔ)法命令用于規(guī)定模塊的對(duì)外接口,命令用于輸入其他模塊提供的功能。 前言 在JavaScript發(fā)展初期就是為了實(shí)現(xiàn)簡(jiǎn)單的頁(yè)面交互邏輯,寥寥數(shù)語(yǔ)即可;如今CPU、瀏覽器性能得到了極大的提升,很多頁(yè)面邏輯遷移到了客戶(hù)端(表單驗(yàn)證等),隨著web2.0時(shí)代的到來(lái),Ajax技術(shù)得到廣泛應(yīng)用,jQuery等前端庫(kù)層出不窮,前端代碼日益膨脹,此時(shí)...

    Pines_Cheng 評(píng)論0 收藏0
  • 模塊化

    摘要:模塊化總結(jié)最近重新復(fù)習(xí)的模塊化的相關(guān)知識(shí),總結(jié)一下,僅供自己理解和大家參考。模塊化的優(yōu)點(diǎn)可維護(hù)性根據(jù)定義,每個(gè)模塊都是獨(dú)立的。良好設(shè)計(jì)的模塊會(huì)盡量與外部的代碼撇清關(guān)系,以便于獨(dú)立對(duì)其進(jìn)行改進(jìn)和維護(hù)。 模塊化總結(jié) 最近重新復(fù)習(xí)的模塊化的相關(guān)知識(shí),總結(jié)一下,僅供自己理解和大家參考。 模塊化的優(yōu)點(diǎn) 可維護(hù)性:根據(jù)定義,每個(gè)模塊都是獨(dú)立的。良好設(shè)計(jì)的模塊會(huì)盡量與外部的代碼撇清關(guān)系,以便于獨(dú)立...

    ?xiaoxiao, 評(píng)論0 收藏0
  • JavaScript模塊化發(fā)展

    摘要:所有依賴(lài)這個(gè)模塊的語(yǔ)句,都定義在一個(gè)回調(diào)函數(shù)中,等到所有依賴(lài)加載完成之后前置依賴(lài),這個(gè)回調(diào)函數(shù)才會(huì)運(yùn)行。如果將前面的代碼改寫(xiě)成形式,就是下面這樣定義了一個(gè)文件,該文件依賴(lài)模塊,當(dāng)模塊加載完畢之后執(zhí)行回調(diào)函數(shù),這里并沒(méi)有暴露任何變量。 模塊化是我們?nèi)粘i_(kāi)發(fā)都要用到的基本技能,使用簡(jiǎn)單且方便,但是很少人能說(shuō)出來(lái)但是的原因及發(fā)展過(guò)程?,F(xiàn)在通過(guò)對(duì)比不同時(shí)期的js的發(fā)展,將JavaScript模...

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

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

0條評(píng)論

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