久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

nodejs模塊是什么

模塊是Node.js應(yīng)用程序的基本組成部分,文件和模塊是一一對(duì)應(yīng)的,一個(gè)Nodejs模塊就是一個(gè)文件,而這個(gè)文件可能是JavaScript代碼、JSON或者編譯過的“C/C++”擴(kuò)展,引用模塊可用“require('文件路徑')”語句。

nodejs模塊是什么

本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版、Dell G3電腦。

為了讓Node.js的文件可以相互調(diào)用,Node.js提供了一個(gè)簡(jiǎn)單的模塊系統(tǒng)。

模塊是Node.js 應(yīng)用程序的基本組成部分,文件和模塊是一一對(duì)應(yīng)的。換言之,一個(gè) Node.js 文件就是一個(gè)模塊,這個(gè)文件可能是JavaScript 代碼、JSON 或者編譯過的C/C++ 擴(kuò)展。

對(duì)于nodejs來說,一個(gè)文件就是一個(gè)模塊,你可以export接口出去,也可以require別的模塊進(jìn)來。

// module1.js exports.func1 = function(){         console.log('func1 from module1 called'); }

module1把函數(shù)func1通過exports對(duì)象作為模塊的公共訪問接口。

//module2.js var in_module1 = require('./module1.js'); in_module1.func1(); exports.func2 = function(){         console.log('func2 from module2 called'); }

module2把module1 require進(jìn)來,這個(gè)時(shí)候,in_module1就相當(dāng)于module1的exports對(duì)象。當(dāng)使用in_module1調(diào)用func1的時(shí)候,相當(dāng)于通過module1的exports對(duì)象調(diào)用func1。

同時(shí),module2自己的函數(shù)func2也通過模塊的exports對(duì)象作為module2公共接口。

// module3.js var in_module2 = require('./module2.js'); in_module2.func2();

同理,module3把module2 require進(jìn)來,此時(shí)in_module2就相當(dāng)于module2的exports對(duì)象。

運(yùn)行結(jié)果如下:

rlan@rlan-LA:~/nodejs/nodetest$ node module2.js func1 from module1 called rlan@rlan-LA:~/nodejs/nodetest$ node module3.js func1 from module1 called func2 from module2 called

nodejs引入模塊不僅僅得到模塊的公共接口,同時(shí)會(huì)把文件里別的語句一并引用進(jìn)來,比如:

module1.js改為

// module2.js console.log('this is in module2'); var in_module1 = require('./module1.js');    in_module1.func1();    exports.func2 = function(){        console.log('func2 from module2 called'); }

module2引入了module1的func1函數(shù),同時(shí)執(zhí)行了module1中的打印語句:

rlan@rlan-LA:~/nodejs/nodetest$ node module1.js this is in module1 rlan@rlan-LA:~/nodejs/nodetest$ node module2.js this is in module2         - module2 self this is in module1         - require module1 func1 from module1 called  - module2 self

現(xiàn)在,module2 載入了module1,module3載入了module2,如果module3再載入一次module1會(huì)怎么樣呢?

// module3.js var in_module1 = require('./module1.js'); var in_module2 = require('./module2.js');  in_module1.func1(); in_module2.func2();

這時(shí)候,module3首先載入了module1,又載入了module2,module2自己又載入了module1的部分,運(yùn)行結(jié)果為

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js this is in module1        -  require module1 this is in module2        -  require module2 func1 from module1 called -  require module2 func1 from module1 called -  module3 self func2 from module2 called -  module3 self

假如把module3的require順序調(diào)整一下:

// module3.js var in_module2 = require('./module2.js'); var in_module1 = require('./module1.js');  in_module1.func1(); in_module2.func2();

運(yùn)行結(jié)果為:

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js this is in module2         - require module2 this is in module1         - require module2 func1 from module1 called  - require module2 func1 from module1 called  - module3 self func2 from module2 called  - module3 self

看起來nodejs用某種機(jī)制保證了同一個(gè)模塊在另一個(gè)模塊里不會(huì)被重復(fù)載入,所以

this is in module1

這一行只出現(xiàn)了一次,雖然在module3.js里似乎被載入了兩次。

那么,如果循環(huán)載入了會(huì)發(fā)生什么呢?現(xiàn)在我們讓module1來require module2:

// module1.js console.log('this is in module1');  var in_module2 = require('./module2.js');  exports.func1 = function(){         console.log('func1 from module1 called'); }
// module2.js console.log('this is in module2'); var in_module1 = require('./module1.js');  in_module1.func1();  exports.func2 = function(){         console.log('func2 from module2 called'); }

運(yùn)行結(jié)果如下:

rlan@rlan-LA:~/nodejs/nodetest$ node module1.js this is in module1 this is in module2 /home/rlan/nodejs/nodetest/module2.js:4 in_module1.func1();            ^ TypeError: in_module1.func1 is not a function     at Object.<anonymous> (/home/rlan/nodejs/nodetest/module2.js:4:12)     at Module._compile (module.js:410:26)     at Object.Module._extensions..js (module.js:417:10)     at Module.load (module.js:344:32)     at Function.Module._load (module.js:301:12)     at Module.require (module.js:354:17)     at require (internal/module.js:12:17)     at Object.<anonymous> (/home/rlan/nodejs/nodetest/module1.js:3:18)     at Module._compile (module.js:410:26)     at Object.Module._extensions..js (module.js:417:10) rlan@rlan-LA:~/nodejs/nodetest$ node module2.js this is in module2 this is in module1 func1 from module1 called

nodejs似乎阻止了載入自己的行為,運(yùn)行module2的時(shí)候,行為跟module1沒有載入module2的結(jié)果一樣,并沒有報(bào)錯(cuò)。而在運(yùn)行module1的時(shí)候,當(dāng)走到module2里面,忽略了require module1的語句之后,module2調(diào)用了module1的func1,程序出錯(cuò)。

綜上,nodejs里嵌套重復(fù)載入模塊(或者載入自己)的require語句是不能正確執(zhí)行的。

【推薦學(xué)習(xí):《nodejs 教程》】

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
综合激情一区| 日本国产精品| 亚洲成人不卡| 国产欧美日韩在线一区二区| 免费在线观看视频一区| 亚洲午夜黄色| 女人天堂亚洲aⅴ在线观看| 久久久久久夜| 蜜臀国产一区| 国产精品亚洲人成在99www| 欧美日韩国产一区二区在线观看| 视频在线观看91| 亚洲aa在线| 久久精品一区| 中文字幕在线官网| 亚洲女同一区| 天堂精品久久久久| 老司机精品视频网| 欧美freesex黑人又粗又大| 久久久久久久久丰满| 国产亚洲一区在线| 欧美日本三区| 亚洲一级少妇| 亚洲日产国产精品| 国产精品最新| 久久亚洲国产| 日韩av字幕| 久久久久国产精品一区三寸| 日韩在线a电影| 精品久久久网| 亚洲一区激情| 久久精品一区二区三区中文字幕| 激情久久久久久| 99香蕉国产精品偷在线观看| 99久久99视频只有精品| 中文在线а√天堂| 欧美日韩亚洲一区三区| 老鸭窝一区二区久久精品| 亚洲一区网站| 久久午夜精品| 国产91在线精品| 亚洲综合精品四区| 国产中文欧美日韩在线| 亚洲三级毛片| 天堂а√在线最新版中文在线| 亚洲资源av| 色婷婷久久久| 精品一区视频| 四虎成人精品一区二区免费网站| 涩涩av在线| 免费在线观看一区| 欧美一级全黄| 蜜臀va亚洲va欧美va天堂 | 国产精品av一区二区| 国产精品对白久久久久粗| 亚洲一区二区毛片| 亚洲网站视频| 日韩一区二区三区在线免费观看| 国产乱子精品一区二区在线观看 | 日本欧美不卡| 国产第一亚洲| 国产精品4hu.www| 欧美精品观看| 日本中文字幕视频一区| 不卡一区2区| 99国内精品| 中文在线日韩| 91精品日本| 免费看久久久| 国产91欧美| 久久久精品日韩| 欧美成人精品| 免费高清在线一区| 久久国产欧美日韩精品| 国产精品qvod| 精品伊人久久久| 捆绑调教日本一区二区三区| 国产传媒在线观看| 久久九九精品| 黄色亚洲在线| 日本中文字幕视频一区| 国产免费av一区二区三区| 麻豆精品久久久| 日韩精品久久久久久久电影99爱 | 日韩精品中文字幕吗一区二区| 亚洲综合图色| 免费一级欧美片在线观看网站 | 男人操女人的视频在线观看欧美| 亚洲欧美日韩国产一区二区| 亚洲欧美日韩国产一区二区| 日韩精品第二页| 国产精品国产一区| 亚洲主播在线| 精品国产乱码久久久| 欧美国产91| 麻豆精品在线观看| 九一成人免费视频| 日韩av黄色在线| 欧洲av一区二区| 97se亚洲| 日韩和的一区二在线| 日本aⅴ免费视频一区二区三区| 欧美aa在线视频| 在线看片一区| 香蕉久久精品| 久久伊人亚洲| 日韩精品第二页| 免费久久久久久久久| 免费亚洲婷婷| 日韩高清一区在线| 亚洲免费高清| 天堂网av成人| 福利一区二区三区视频在线观看| 亚洲综合五月| 老鸭窝毛片一区二区三区| 久久gogo国模啪啪裸体| 欧美一级专区| 蜜臀久久99精品久久一区二区| 欧美91在线| 日韩黄色av| 亚洲男人在线| 日韩一二三区在线观看| 91一区二区三区四区| 亚洲精品系列| 午夜av成人| 老牛影视精品| 成人va天堂| 成人精品亚洲| 米奇777超碰欧美日韩亚洲| 精品欧美激情在线观看| 精品国产欧美日韩| 粉嫩av一区二区三区四区五区| 国产欧美午夜| 国产精品乱战久久久| 久久精品国产99国产| 成人国产综合| 成人午夜亚洲| 久久网站免费观看| 欧美日韩国产精品一区二区亚洲| 国产欧洲在线| 中日韩男男gay无套| 宅男在线一区| 亚洲成人一区| 蜜桃av一区| 在线一区欧美| 91精品美女| 国产福利资源一区| 黄色日韩在线| 日韩欧美中文字幕电影| 蜜桃视频一区二区| 亚洲精品午夜av福利久久蜜桃| 午夜精品成人av| 亚洲我射av| 视频一区日韩精品| 国产日韩在线观看视频| 国产精品久久久久久久久久妞妞| 欧美精品97| 日韩欧美三级| 麻豆精品91| 日韩avvvv在线播放| 欧美交a欧美精品喷水| 国产伦乱精品| 亚洲伦乱视频| 蜜臀av一区二区三区| 免费中文字幕日韩欧美| 精品99在线| 爽好多水快深点欧美视频| 午夜国产精品视频免费体验区| 综合一区在线| 蜜桃视频欧美| 天堂网在线观看国产精品| 亚洲另类av| 首页亚洲欧美制服丝腿| 国产欧美一区二区三区国产幕精品| 久久精品系列| 久久不射网站| 精品精品久久| 一区二区三区网站| 精品一区二区三区的国产在线观看| 亚洲精选91| 精品72久久久久中文字幕| 日韩1区2区| 中文不卡在线| 欧美网站在线| 久久天堂影院| 亚洲精品裸体| 蜜臀精品久久久久久蜜臀 | 蜜臀av一区二区在线免费观看 | 天海翼精品一区二区三区| 国产精品男女| 免费一级片91| 久久福利一区| 免费不卡中文字幕在线| 麻豆91精品91久久久的内涵| 另类av一区二区| 日本一区二区三区视频在线看| 成人在线黄色| 91亚洲无吗| 日韩av一二三| 精品伊人久久久|