Node.js中使用CommonJs
模塊化機制,通過npm
下載的第三方包,我們在項目中引入第三方包都是:
let xx = require('第三方包名')
究竟require
方法加載第三方包的原理機制是什麼,今天我們來探討下。
require('第三方包名')
優先在加載該包的模塊的同級目錄node_modules
中查找第三方包。
let template = require('art-template') //加載第三方包
- 找到該第三方包中的
package.json
文件,並且找到裏面的main
屬性對應的入口模塊,該入口模塊即爲加載的第三方模塊。 - 如果在要加載的第三方包中沒有找到
package.json
文件或者是package.json
文件中沒有main
屬性,則默認加載第三方包中的index.js
文件。 - 如果在加載第三方模塊的文件的同級目錄沒有找到
node_modules
文件夾,或者以上所有情況都沒有找到,則會向上一級父級目錄下查找node_modules
文件夾,查找規則如上一致。 - 如果一直找到該模塊的磁盤根路徑都沒有找到,則會報錯:
can not find module xxx
。