nodejs-模块系统
生活随笔
收集整理的這篇文章主要介紹了
nodejs-模块系统
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Node.js模塊系統(tǒng)為了讓Node.js的文件可以相互調(diào)用,Node.js提供了一個簡單的模塊系統(tǒng)。模塊是Node.js 應(yīng)用程序的基本組成部分,文件和模塊是一一對應(yīng)的。換言之,一個 Node.js 文件就是一個模塊,這個文件可能是JavaScript 代碼、JSON 或者編譯過的C/C++ 擴展。//-------------------------------------hello.jsexports.world = function() {console.log('Hello World');}main.jsvar hello = require('./hello');hello.world();對象封裝到模塊中//hello.jsfunction Hello() {var name;this.setName = function(thyName) {name = thyName;};this.sayHello = function() {console.log('Hello ' + name);};};module.exports = Hello;//main.jsvar Hello = require('./hello');hello = new Hello();hello.setName('BYVoid');hello.sayHello();//-----------------------------------
調(diào)用查找順序
?
在路徑 Y 下執(zhí)行 require(X) 語句執(zhí)行順序1. 如果 X 是內(nèi)置模塊a. 返回內(nèi)置模塊b. 停止執(zhí)行2. 如果 X 以 '/' 開頭a. 設(shè)置 Y 為文件根路徑3. 如果 X 以 './' 或 '/' or '../' 開頭a. LOAD_AS_FILE(Y + X)b. LOAD_AS_DIRECTORY(Y + X)4. LOAD_NODE_MODULES(X, dirname(Y))5. 拋出異常 "not found"LOAD_AS_FILE(X)1. 如果 X 是一個文件, 將 X 作為 JavaScript 文本載入并停止執(zhí)行。2. 如果 X.js 是一個文件, 將 X.js 作為 JavaScript 文本載入并停止執(zhí)行。3. 如果 X.json 是一個文件, 解析 X.json 為 JavaScript 對象并停止執(zhí)行。4. 如果 X.node 是一個文件, 將 X.node 作為二進制插件載入并停止執(zhí)行。LOAD_INDEX(X)1. 如果 X/index.js 是一個文件, ?將 X/index.js 作為 JavaScript 文本載入并停止執(zhí)行。2. 如果 X/index.json 是一個文件, 解析 X/index.json 為 JavaScript 對象并停止執(zhí)行。3. 如果 X/index.node 是一個文件, ?將 X/index.node 作為二進制插件載入并停止執(zhí)行。LOAD_AS_DIRECTORY(X)1. 如果 X/package.json 是一個文件,a. 解析 X/package.json, 并查找 "main" 字段。b. let M = X + (json main 字段)c. LOAD_AS_FILE(M)d. LOAD_INDEX(M)2. LOAD_INDEX(X)LOAD_NODE_MODULES(X, START)1. let DIRS=NODE_MODULES_PATHS(START)2. for each DIR in DIRS:a. LOAD_AS_FILE(DIR/X)b. LOAD_AS_DIRECTORY(DIR/X)NODE_MODULES_PATHS(START)1. let PARTS = path split(START)2. let I = count of PARTS - 13. let DIRS = []4. while I >= 0,a. if PARTS[I] = "node_modules" CONTINUEb. DIR = path join(PARTS[0 .. I] + "node_modules")c. DIRS = DIRS + DIRd. let I = I - 15. return DIRS?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的nodejs-模块系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs-函数路由
- 下一篇: nodejs-文件系统