亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

NodeJS的模塊機制

2024-04-27 15:09:07
字體:
來源:轉載
供稿:網友

一、前言

Node應用是由模塊組成的,Node遵循了CommonJS的模塊規范,來隔離每個模塊的作用域,使每個模塊在它自身的命名空間中執行。

CommonJS規范的主要內容:

模塊必須通過 module.exports 導出對外的變量或接口,通過 require() 來導入其他模塊的輸出到當前模塊作用域中。

CommonJS模塊的特點:

(1)所有代碼運行在當前模塊作用域中,不會污染全局作用域 (2)模塊同步加載,根據代碼中出現的順序依次加載 (3)模塊可以多次加載,但是只會在第一次加載時運行一次,然后運行結果就被緩存了,以后再加載,就直接讀取緩存結果。要想讓模塊再次運行,必須清除緩存。

一個簡單的例子:

//demo.jsmodule.exports.name = 'Aphasia';module.exports.getAge = function(age){ console.log(age)};//需要引入demo.js的其他文件var person = require('./demo.js')

二、module對象

根據CommonJS規范,每一個文件就是一個模塊,在每個模塊中,都會有一個module對象,這個對象就指向當前的模塊。module對象具有以下屬性:

(1)id:當前模塊的bi (2)exports:表示當前模塊暴露給外部的值 (3)parent: 是一個對象,表示調用當前模塊的模塊 (4)children:是一個對象,表示當前模塊調用的模塊 (5)filename:模塊的絕對路徑 (6)paths:從當前文件目錄開始查找node_modules目錄;然后依次進入父目錄,查找父目錄下的node_modules目錄;依次迭代,直到根目錄下的node_modules目錄 (7)loaded:一個布爾值,表示當前模塊是否已經被完全加載

示例:

module.js文件 這里寫圖片描述

執行node module.js文件 這里寫圖片描述

(一)exports屬性

從上面的例子我們也能看到,module對象具有一個exports屬性,該屬性就是用來對外暴露變量、方法或整個模塊的。當其他的文件require進來該模塊的時候,實際上就是讀取了該模塊module對象的exports屬性。

簡單的使用示例

module.exports = 'Aphasia';module.exports.name = 'Aphasia';module.exports = function(){ //dosomething}module.exports = { name: 'Aphasia', getAge: function(){ //dosomething }}
(二)exports變量

為什么還有個exports變量呢?一開始我也很郁悶,既然module.exports就能滿足所有的需求,干嘛還要個exports呢。其實,原因很簡單–就是為了簡單。當然,二者之間還存在一些差異,聽我慢慢道來。

(1)exports其實是指向module.exports,也就是相當于

exports = module.exports;

(2)我們可以將二者的關系可以理解成這是一種引用關系。由于這樣的引用關系可知,既然exports始終指向的是module.exports,那我們就不能給exports直接進行賦值操作(不能亂指),因為這樣的操作會導致exports不再指向module.exports。

//以下操作都是不允許的exports = 'Aphasia';exports = function(){ console.log('Aphasia')}//這些操作都是合法的exports.name = 'Aphasia';exports.getName = function(){ console.log('Aphasia')}

三、require命令

(1)exports用來拋出一個接口,require就是用來引入這個模塊拋出的接口,返回引入模塊的exports對象,如果沒有找到該模塊,就會報錯。 (2)使用require引入的文件,文件名后綴默認為.js

引入規則

既然是用來引入一個模塊,就需要有一定的查找規則以確定需要引入的模塊究竟存在哪里。

enter image description here

根據上面的流程圖,其實可以看出以下幾點: (1)被引入的模塊優先從緩存中加載,命中緩存直接加載;未命中,之后會被加入緩存。 (2)如果不是node的原生模塊,則根據傳入到require中的參數引入模塊。這一過程的查找規則如下:

如果路徑是以/開始的絕對路徑,就從該項目的絕對路徑中去加載該模塊。比如:require(“/demo/lib/api.js”),就會從/demo/lib/api.js中去加載該模塊 如果路徑是以./開始的相對路徑,則表示加載的是一個位于相對路徑(跟當前執行腳本的位置相比)的模塊文件。比如,require(‘./circle’)將加載當前腳本同一目錄的circle.js
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
综合网日日天干夜夜久久| 欧美大尺度电影在线观看| 岛国av在线不卡| 久久久欧美精品| 久久精品人人做人人爽| 亚洲日韩欧美视频一区| 久久激情五月丁香伊人| 欧美日韩国产色| 中文字幕国产亚洲2019| 黑人极品videos精品欧美裸| 欧美亚洲第一区| 国产精品尤物福利片在线观看| 韩国精品美女www爽爽爽视频| 欧美日韩国产成人在线| 庆余年2免费日韩剧观看大牛| 亚洲欧美日韩精品久久| 国产精品jvid在线观看蜜臀| 日韩av中文字幕在线免费观看| 激情亚洲一区二区三区四区| 日本不卡视频在线播放| 欧美专区在线视频| 精品亚洲国产成av人片传媒| 欧美成人精品一区二区| 欧美大学生性色视频| 2018中文字幕一区二区三区| 91免费看视频.| 欧美精品在线视频观看| 亚洲精品一区二区久| 久久99精品国产99久久6尤物| 国产成人小视频在线观看| 91美女片黄在线观| 亚洲国产成人在线视频| 国产精品美女视频网站| 欧美自拍大量在线观看| 亚洲日韩中文字幕在线播放| 国产福利成人在线| 久久成人综合视频| 国产一区二区av| 最近2019中文字幕大全第二页| 欧美不卡视频一区发布| 理论片在线不卡免费观看| 日本一欧美一欧美一亚洲视频| 狠狠色香婷婷久久亚洲精品| 一区二区三区四区精品| 高跟丝袜欧美一区| 国产欧美一区二区三区在线| 欧美日韩美女视频| 国产精品亚洲аv天堂网| 91精品国产一区| 成人www视频在线观看| 久久视频国产精品免费视频在线| 黄色91在线观看| 日本精品一区二区三区在线| 欧美高清无遮挡| 亚洲国产第一页| 亚洲精品二三区| 91综合免费在线| 69久久夜色精品国产69乱青草| 国产欧美日韩精品在线观看| 亚洲精品自拍视频| 日本成人黄色片| 亚洲黄色在线观看| 久久久噜噜噜久久久| 国语自产精品视频在线看一大j8| 日韩免费高清在线观看| 日韩美女福利视频| 日韩中文字幕网址| 午夜精品一区二区三区在线视| 国产精品成人观看视频国产奇米| 国产91色在线|免| 久久国产精品亚洲| 久久精品美女视频网站| 成人免费高清完整版在线观看| 国产91精品在线播放| 成人黄色av免费在线观看| 色999日韩欧美国产| 久久久999精品视频| 国产精品成人一区二区三区吃奶| 茄子视频成人在线| 国产日本欧美一区二区三区在线| 欧日韩在线观看| 欧美电影在线播放| 色偷偷噜噜噜亚洲男人| 久久在线精品视频| 欧美在线视频导航| 91精品国产色综合久久不卡98| 精品久久在线播放| 久久成人国产精品| 欧美综合在线第二页| 欧美国产日韩免费| 日韩精品免费视频| 亚洲男子天堂网| 欧美日韩亚洲系列| 91精品在线影院| 亚洲精品美女在线观看| 日韩欧美亚洲成人| 亚洲一级黄色av| 亚洲毛片在线观看.| 国产激情综合五月久久| 欧美日韩中文字幕日韩欧美| 国产精品免费网站| 成人免费在线网址| 九九热精品在线| 欧美日韩国产专区| 综合av色偷偷网| 亚洲成年人影院在线| 色偷偷av一区二区三区乱| 欧美日韩亚洲精品一区二区三区| 8090理伦午夜在线电影| 亚洲欧美国产精品专区久久| 精品国产欧美成人夜夜嗨| 国产精品盗摄久久久| 欧美日韩美女视频| 亚洲999一在线观看www| 亚洲天堂男人天堂| 久久国产精品久久久| 国产91精品视频在线观看| www亚洲精品| 国产精品欧美亚洲777777| 精品国产31久久久久久| 欧美肥老妇视频| 日韩国产高清污视频在线观看| 欧美日韩亚洲成人| 亚洲成av人片在线观看香蕉| 国产aaa精品| 欧美一性一乱一交一视频| 日韩欧美中文字幕在线观看| 国产亚洲精品一区二555| 欧美成人精品一区二区| 69av在线播放| 精品自在线视频| 成人黄色大片在线免费观看| 国产日产欧美a一级在线| 中文字幕亚洲欧美| 久久久久国产精品免费| 国产精品日韩欧美综合| 亚洲精品av在线| 国产a∨精品一区二区三区不卡| 一本色道久久88亚洲综合88| 久久国产精品久久久久久久久久| 亚洲3p在线观看| 国产精品欧美激情| 国产精品久久久久久久一区探花| 欧美丰满老妇厨房牲生活| 国产精品久久久久久久久久久新郎| 日韩av在线播放资源| 国产视频亚洲精品| 91久久综合亚洲鲁鲁五月天| 清纯唯美日韩制服另类| 不卡在线观看电视剧完整版| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲成年网站在线观看| 亚洲精品一区中文| 欧美乱妇高清无乱码| 麻豆成人在线看| 91九色精品视频| 国产精品jvid在线观看蜜臀| 日韩精品中文字幕有码专区| 久久成人18免费网站| 成人激情av在线| 久久久久久香蕉网| 66m—66摸成人免费视频| 久久男人av资源网站| 国内精品模特av私拍在线观看|