国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

詳解在node.js中require方法的加載規則

發(fā)布時(shí)間:2021-08-17 12:16 來(lái)源: 閱讀:0 作者:@必意玲 欄目: JavaScript 歡迎投稿:712375056

require 方法的加載規則

  1. 優(yōu)先從緩存中加載
  2. 核心模塊
  3. 路徑形式的模塊
  4. 第三方模塊

一、優(yōu)先從緩存中加載

main.js:執行加載a.js模塊

require('./a')

a.js:執行加載b.js模塊,并輸出a被加載了

require('./b')
console.log('a.js 被加載了')

b.js:輸出b被加載了

console.log('b.js 被加載了')

結果:

可以看出:main去加載a.js,然后a在去加載b.js過(guò)程中,并沒(méi)有打印兩次 a.js被加載,Node會(huì )直接從require.cache中根據傳入的id,取出該對象的exports值,不會(huì )再次執行該模塊代碼。

二、核心模塊

核心模塊的本質(zhì)也是文件,核心模塊文件已經(jīng)被編譯到了二進(jìn)制文件中了,我們只需要按照名字來(lái)加載就可以了。如:

  • require(‘fs')
  • require(‘http')

三、路徑形式的模塊

我們說(shuō)的路徑形式的模塊,其實(shí)就是加載自己寫(xiě)的JS文件,有四種方式可以加載

var fooExports = require('./index')	//相對路徑,常用
var fooExports = require('../index')	//相對路徑,常用
var fooExports = require('/index')	//根目錄,不常用
var fooExports = require('D:/demo/index')	//根目錄,不常用

四、第三方模塊

  1. 凡是用到第三方模塊,都必須通過(guò) npm 來(lái)下載
  2. 使用的時(shí)候就可以通過(guò) require(‘包名') 的方式來(lái)進(jìn)行加載才可以使用
  3. 不可能有任何一個(gè)第三方包和核心模塊的名字是一樣的

既不是核心模塊、也不是路徑形式的模塊,就是第三方模塊。加載方式如下

以 var template = require(‘a(chǎn)rt-template') 為例:

  • 先找到當前文件所處目錄中的 node_modules 目錄
  • 然后根據以下方式找到文件中的 main 屬性
  • main 屬性中就記錄了 art-template 的入口模塊
  • 然后加載使用這個(gè)第三方包,但是實(shí)際上最終加載的還是文件
  • 如果 package.json 文件不存在或者 main 指定的入口模塊是也沒(méi)有
  • 則 node 會(huì )自動(dòng)找該目錄下的 index.js,也就是說(shuō) index.js 會(huì )作為一個(gè)默認備選項
  • 如果以上所有任何一個(gè)條件都不成立,則會(huì )進(jìn)入上一級目錄中的 node_modules 目錄查找
  • 如果上一級還沒(méi)有,則繼續往上上一級查找
  • 如果直到當前磁盤(pán)根目錄還找不到,最后報錯: can not find module xxx

第三方模塊尋找順序:  node_modules/art-template   >    package.json 文件   >   main 屬性 >   index.js

到此這篇關(guān)于詳解在node.js中require方法的加載規則的文章就介紹到這了,更多相關(guān)node.js require方法加載規則內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

亚洲中文字幕在线乱码| 天天躁日日躁狠狠躁AV| 人妻夜夜爽天天爽| 超caopor在线公开视频| 亚洲AV日韩AV高潮喷潮无码| 又黄又无遮挡AAAAA毛片|