鍍金池/ 問答/PHP  HTML/ 關(guān)于npm的小問題

關(guān)于npm的小問題

自從看了es6的模塊引入之后,對npm一直有個小問題。
比如在npm install vue --save之后,為什么在頁面內(nèi)引入vue只需要var Vue = require('vue'); 而不是var Vue = require('./node_modules/vue/vue');

回答
編輯回答
安若晴

Node引入模塊一般需要經(jīng)歷3個步驟:路徑分析擴展名分析、編譯執(zhí)行。

Node查找模塊的先后順序:緩存模塊 > 核心模塊 > 路徑形式文件模塊 > 自定義文件模塊。

緩存模塊:Node引入過的模塊都會被緩存下來。無論是核心模塊還是文件模塊,require對相同模塊的第二次加載一律采用緩存優(yōu)先的方式,其中核心模塊的緩存檢查優(yōu)先于文件模塊的緩存檢查。

核心模塊:Node提供的模塊,已經(jīng)是編譯后二進制文件。

路徑形式文件模塊:以.、..和./開頭的模塊。

自定義文件模塊:第三方npm包,查找此類模塊最耗時且最慢,查找先后順序:當(dāng)前目錄下node_modules目錄父目錄下node_modules目錄、向上逐級遞歸直到根目錄下下node_modules目錄,因為node_modules文件目錄一般都比較深入,所以最耗時最慢。

希望對您有所幫助!

參考資料:深入淺出NodeJS

2017年2月19日 16:00
編輯回答
下墜

node的require函數(shù)加載模塊是有一定規(guī)則的,
直接看阮一峰大大的這篇文章require() 解讀

2018年1月3日 08:03
編輯回答
扯不斷

你應(yīng)該查閱require,import的module文件引入[機制]:http://es6.ruanyifeng.com/#do...

2017年8月27日 03:17
編輯回答
愿如初

你有沒有發(fā)現(xiàn)import也是這樣 import Vue from 'vue'
他們的規(guī)則是一樣的 當(dāng)直接require一個模塊名的時候,會向上找到node_modules文件夾,直到找到一個,在此文件夾中尋找依賴,這是nodejs里面自己的hook

2017年8月9日 19:40