在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ import from 引入模塊的順序怎樣的

import from 引入模塊的順序怎樣的

在node中使用import from 可以像

import fs from 'fs'

引入核心模塊
也可以引入用npm安裝的模塊

import axios from 'axios'

也可以單純引入自定義的模塊

import module from './module.js'

我想問(wèn)一下import from 引入模塊的具體機(jī)制是怎樣的,或者是按何種查詢順序引入模塊的

這是我查到的require的查詢機(jī)制,不知道import from是否也一樣

如果傳遞給 require() 的模塊標(biāo)識(shí)符不是一個(gè)核心模塊,也沒(méi)有以 '/' 、 '../' 或 './' 開(kāi)頭,則 Node.js 會(huì)從當(dāng)前模塊的父目錄開(kāi)始,嘗試從它的 /node_modules 目錄里加載模塊。 Node.js 不會(huì)附加 node_modules 到一個(gè)已經(jīng)以 node_modules 結(jié)尾的路徑上。

如果還是沒(méi)有找到,則移動(dòng)到再上一層父目錄,直到文件系統(tǒng)的根目錄。

例子,如果在 '/home/ry/projects/foo.js' 文件里調(diào)用了 require('bar.js'),則 Node.js 會(huì)按以下順序查找:

/home/ry/projects/node_modules/bar.js
/home/ry/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js
這使得程序本地化它們的依賴,避免它們產(chǎn)生沖突。

回答
編輯回答
慢半拍

1.node中模塊執(zhí)行的順序是先加載node自帶的核心模塊,再加載用戶模塊(就是我們寫的),最后是加載第三方模塊;
2.用戶模塊的查找規(guī)則:require("./index"),不寫后綴名,查找規(guī)則為:index---index.js---index.json---index.node,require是node自帶的文件導(dǎo)入方法,而import是ES6的導(dǎo)入方法;
3.第三方查找規(guī)則分為四種情況:

1.node_modules===>和文件一致的文件夾===>查找package.json===>查看是否有main屬性,指向路徑是否存在
2.無(wú)main:如果package.json中無(wú)main屬性,或main的路徑不存在,或物package.json文件,node加載index相關(guān)的文件(index.js,index.json,index.node)

3.無(wú)node_modules:如果node_modules找不到對(duì)應(yīng)的模塊文件夾,或無(wú)該文件夾,則向上一層文件夾查找index

4.如果上一級(jí)沒(méi)找到繼續(xù)上一級(jí),查找到盤符未找到報(bào)錯(cuò);cannot find modules XXX,如果沒(méi)有npm init -y則會(huì)出現(xiàn)node_modules路徑在c/用戶/用戶名

4.希望可以幫到你

2017年3月30日 04:12
編輯回答
柒槿年

import/export 目前尚未被node支持,因此實(shí)際使用都是轉(zhuǎn)換成require

clipboard.png

至于require的規(guī)則,可以看官方文檔,大致規(guī)則是:優(yōu)先判斷是否為內(nèi)置模塊,然后作為本地目錄,分別尋找index/json/node文件等。

2018年5月8日 14:37
編輯回答
假灑脫

那要看你的插件如何工作的,不過(guò)一般是按照node的模塊解析機(jī)制

2018年1月29日 22:41