Node文件模块
?在上一篇文章中有提到,Node模塊分為核心模塊和文件模塊,接下來(lái)就簡(jiǎn)單總結(jié)一下文件模塊。
文件模塊則是在運(yùn)行時(shí)動(dòng)態(tài)加載,需要完整的路徑分析、文件定位、編譯執(zhí)行過(guò)程、速度相比核心模塊稍微慢一些,但是用的非常多。這些模塊需要我們自己定義或者引用第三方的模塊,所以文件模塊有可以分為自定義模塊和第三方模塊。
CommonJs
?JavaScript 是一個(gè)強(qiáng)大面向?qū)ο笳Z(yǔ)言,它有很多快速高效的解釋器。然而, JavaScript標(biāo)準(zhǔn)定義的 API 是為了構(gòu)建基于瀏覽器的應(yīng)用程序。并沒(méi)有制定一個(gè)用于更廣泛的應(yīng)用程序的標(biāo)準(zhǔn)庫(kù)。CommonJS 規(guī)范的提出,主要是為了彌補(bǔ)當(dāng)前 JavaScript 沒(méi)有標(biāo)準(zhǔn)的缺陷。它的終極目標(biāo)就是:提供一個(gè)類似 Python,Ruby 和 Java 語(yǔ)言的標(biāo)準(zhǔn)庫(kù),而不只是停留在小腳本程序的階段。用 CommonJS API 編寫(xiě)出的應(yīng)用,不僅可以利用 JavaScript 開(kāi)發(fā)客戶端應(yīng)用,而且還可以編寫(xiě)以下應(yīng)用:
- 服務(wù)器端 JavaScript 應(yīng)用程序。(nodejs)
- 命令行工具。
-
桌面圖形界面應(yīng)用程序。
CommonJS 就是模塊化的標(biāo)準(zhǔn),nodejs 就是 CommonJS(模塊化)的實(shí)現(xiàn)
CommonJS(Nodejs)中關(guān)于自定義模塊有如下規(guī)定:
Node 應(yīng)用由模塊組成,采用 CommonJS 模塊規(guī)范。
自定義模塊
我們可以把公共的功能抽離成為一個(gè)單獨(dú)的 js 文件作為一個(gè)模塊,默認(rèn)情況下面這個(gè)模塊里面的方法或者屬性,外面是沒(méi)法訪問(wèn)的。如果要讓外部可以訪問(wèn)模塊里面的方法或者屬性,就必須在模塊里面通過(guò) exports 或者 module.exports 暴露屬性或者方法。
在需要使用這些模塊的文件中,通過(guò) require 的方式引入這個(gè)模塊。這個(gè)時(shí)候就可以使用模塊里面暴露的屬性和方法(在引入js文件的時(shí)候,文件后綴可以省略)
module.exports和exports的區(qū)別
exports
???
module.exports
?????
node_modules
?在上面的例子中,我們是將自定義模塊直接放在根目錄下面的,但是如果在默認(rèn)的目錄下面沒(méi)有找到指定的模塊時(shí),nodejs會(huì)主動(dòng)到node_modules里面找這個(gè)模塊。
所以,首先在根目錄下面新建一個(gè)文件夾node_modules,在這個(gè)文件夾中添加一個(gè)自定義模塊
??
??
node_modules不僅支持尋找自定義模塊,也支持尋找文件夾
在node_modules下新建文件夾test,將剛剛的test.js移入到改文件夾中。
?
然后只需要修改一下com03.js就可以了
執(zhí)行com03.js的時(shí)候,會(huì)請(qǐng)求require里面的文件,在默認(rèn)的里面,沒(méi)有找到test路徑下面的test.js,就會(huì)重新到node_modules里面去尋找test文件夾,找到文件夾以后再該文件夾里面找test.js
第三方模塊
?Nodejs中第三方模塊由包組成,可以通過(guò)包來(lái)對(duì)一組具有相互依賴關(guān)系的模塊進(jìn)行統(tǒng)一管理。
npm
在nodejs中通過(guò)NPM命令在下載第三方的模塊(包),npm是世界上最大的開(kāi)放源代碼的生態(tài)系統(tǒng),我們可以在https://www.npmjs.com中找到各種各樣的包,并通過(guò)npm安裝到我們的項(xiàng)目中,下面以jQuery為例,展示npm的基本用法:
npm版本查看:npm -v
模塊安裝:npm install jquery
模塊卸載:npm uninstall jauery
查看已安裝模塊:npm list
查看版本:npm info jquery
指定版本安裝:npm install jquery@1.8.0
package.json
package.json 定義了一個(gè)項(xiàng)目所需要的各種模塊,以及項(xiàng)目的配置信息(比如名稱、版本、許可證等元數(shù)據(jù))
創(chuàng)建package.json
可以使用命令npm init 或者npm init --yes(所有配置項(xiàng)全部默認(rèn),不在一項(xiàng)一項(xiàng)的詢問(wèn))在項(xiàng)目中生成package.json
當(dāng)我們?cè)诎惭b模塊的時(shí)候,將模塊寫(xiě)入package.json里面的話,后期拷貝項(xiàng)目就不需要拷貝node_modules這個(gè)文件夾了,再次使用這個(gè)項(xiàng)目的時(shí)候,只需要執(zhí)行npm install,就會(huì)根據(jù)package.json這個(gè)文件里面的模塊依賴自動(dòng)下載之前安裝過(guò)的模塊了。
--save-dev 和--save
?--save-dev和--save都能在安裝模塊的時(shí)候?qū)⒛K寫(xiě)入package.json中,但是兩者又有區(qū)別:
執(zhí)行上面的命令,使用兩種方式分別安裝了兩個(gè)模塊,然后打開(kāi)package.json:
現(xiàn)在可以看到,通過(guò)--save安裝的模塊,加入到dependencie中了;而通過(guò)--save-dev安裝的模塊,則加入到devDependencie中了。這兩個(gè)的區(qū)別在于:dependencie 配置當(dāng)前程序所依賴的其他包。devDependencie 配置當(dāng)前程序所依賴的其他包,只會(huì)下載模塊,而不下載這些模塊的測(cè)試和文檔框架。
版本更新
?使用 npm install node_module –save 自動(dòng)更新 dependencies 字段值;使用 npm install node_module –save-dev 自動(dòng)更新 devDependencies 字段值;
在上面的截圖中,每個(gè)版本號(hào)都是用^開(kāi)頭的,這個(gè)是可修改的:^表示第一位版本號(hào)不變,后面兩位取最新的;~表示前兩位不變,最后一個(gè)取最新;*表示全部取最新。
轉(zhuǎn)載于:https://www.cnblogs.com/yuyujuan/p/10596529.html
總結(jié)
- 上一篇: python初学者代码示例_python
- 下一篇: OpenCV——无法打开“opencv2