CommonJS規範
- 一個js文件就是一個模塊
- 模塊內所有的變量均爲局部變量,不會污染全局
- 模塊中需要提供給其他模塊使用的內容需要導出
- 導出使用
exports.xxx = xxx
或module.exports=xxx
或this.xxx=xxx
- 其他模塊可以使用
require
函數導入
node實現了CommonJS規範
在編寫模塊時,都有require、exports、module三個預先定義好的變量可以使用。
require{}函數的兩個作用
-
執行導入的模塊中的代碼;
-
返回導入模塊中的接口;
導入
let a = require('./b');
console.log(a);
導出
let a = 123;
exports.a = a;
modules.exports 默認就是等於 exports
let a = 123;
let b = 23;
let c = 789;
exports.a = a;
module.exports.c = c;
總結
- Node中每個模塊都有一個module對象,module對象中有一個exports屬性爲一個接口對象,我們需要把模塊之間的公共的方法或者屬性掛載在這個接口對象中,方便其他模塊使用這些公共的方法或者屬性。
- Node 中每個模塊都會把module.exports指向的對象賦值給一個變量exports,也就是說exports = module.exports.
- Node中每個模塊的最後,都會return:module.exports。
- module.exports = xxx,表示當前模塊導出一個單一成員,結果就是xxx。
- 如果需要導出多個成員變量時,必須使用exports.add = xxx; exports.foo = xxx; 或者使用 module.exports.add = xxx; module.export.foo = xxx;
CommonJs的模塊化機制
如果我們想要使用第三方包,那麼就需要npm去下載,Node.js中使用CommonJs模塊化機制,通過npm下載第三方包,
我們在項目中引入第三方包都是let xx=require('第三方包名');究竟require 方法加載第三方包的原理機制如下:
- require('第三方包名') 優先在加載該包的模塊都是同級目錄 node_modules 中查找第三方包,如果有則加載。
let tempate = require('art-template') //加載第三方包
設置國內npm 鏡像地址
npm install -g cnpm --registry=https://registry.npm.taobao.org
等待安裝成功
然後比如要引入jquery 那麼執行
npm install jquery
然後重新查看目錄就會發下 多了一個node_modules 文件夾,這個文件夾下的就是你所引入的第三方包
然後使用require使用jQuery
let $ = require('jquery');
2.找到該第三方包中的package.json文件,並且找到裏面的main屬性對應的如果模塊,該入口模塊即爲加載的第三方模塊。
所以jquery.js 就在 dist目錄下
很明顯,可以看到 module.exports 的實現方法。
3.如果在要加載的第三方包中沒有找到package.json 文件或者是在package.json文件中沒有main 屬性
則默認加載第三方包中的index.js文件。
4.如果在加載第三方模塊的文件的同級目錄沒有找到node_modules 文件夾,或者以上所有的情況都沒有找到,
則會向上一級父目錄下查找 node_modules 文件夾,查找規則如上一致。
npm 是什麼
npm是Node JavaScript平臺的軟件包管理器。它將模塊放置在適當的位置,以便節點可以找到它們,並智能地管理依賴關係衝突
npm 爲你和你的團隊打開了連接整個 JavaScript 天才世界的一扇大門。它是世界上最大的軟件註冊表,每星期大約有 30 億次的下載量,包含超過 600000 個 包(package) (即,代碼模塊)。來自各大洲的開源軟件開發者使用 npm 互相分享和借鑑。包的結構使您能夠輕鬆跟蹤依賴項和版本。
下面是關於 npm 的快速介紹:
npm 由三個獨立的部分組成:
- 網站
- 註冊表(registry)
- 命令行工具 (CLI)
npm常用命令
npm -v 查看npm 版本。
npm init 初始化後會出現一個package.json配置文件,可以在後面加上 -y,快速跳過問答式界面。
npm install 會根據項目中的package.json文件自動下載目錄中所需要的全部依賴。
npm install 包名 --save-dev(npm install 包名 -D) 安裝的包只用於開發環境,不會用於生產環境,會出現在package.json文件中的devDependencies屬性中。
npm install 包名 --save(npm install 包名 -S) 安裝的包需要發佈到生產環境,會出現在package.json文件的dependencies 屬性中。
npm list 查看當前目錄下已安裝的node 包
npm list -g 查看全局已經安裝過的node 包
npm --help 查看npm 幫助命令
npm update 包名:更新指定包名
npm uninstall 包名: 卸載指定包
npm config list 查看配置信息
npm 指定命令 --help 查看指定命令的幫助
npm info 指定包名 查看遠程npm 上指定包的所有版本信息
npm config set registry https://registry.npm.taobao.org: 修改下載鏡像爲淘寶鏡像
npm root 查看當前包的安裝路徑
npm -root -g 查看全局的包的安裝路徑
npm ls 包名 查看本地安裝的指定包的版本信息,沒有顯示empty
npm ls 包名 -g 查看全局安裝的指定包的版本信息,沒有顯示empty