以Java來講,好比要實現第三方存儲,我可能須要導入對應的庫,以maven爲例,使用騰訊雲或者七牛雲、阿里雲,我須要導入對應的maven依賴。
再好比,有些時候咱們封裝某個類,而那個類不在該包下,咱們須要導包(就是指定那個類的路徑,若是路徑不對,則可能出現找不到這個類之類的錯誤,一般對應的IDE會提示錯誤)。html
其實,node.js也是這樣的。最近在開發node.js的時候,不免也會遇到須要引入其它js文件。今天我以一個簡單示例來講一說node.js如何引用其它js文件。node
test01.jsnpm
function hello(){ console.log("hello"); } function hello2(){ console.log("hello2"); } module.exports = {hello,hello2}
test02.jsmaven
var test01 = require( "./test01" ); test01.hello(); test01.hello2();
經過命令行運行node test02.js 正常會分別輸出hello、hello2。ui
require是什麼意思呢?
其實就跟咱們Java開發導包同樣的意思,在Java中是import,其實node.js也能夠import式導包。阿里雲
那麼node.js中的require和import導包有什麼區別呢?
(1)require導包位置任意,而import導包必須在文件的最開始;
(2)遵循的規範不一樣,require/exports是CommonJS的一部分,而import/export是ES6的規範;
(3)出現時間不一樣,CommonJS做爲node.js的規範,一直沿用至今,主要是由於npm善CommonJS的類庫衆多,以及CommonJS和ES6之間的差別,Node.js沒法直接兼容ES6。因此現階段require/exports仍然是必要且必須的;
(4)形式不一樣,require/exports的用法只有如下三種簡單寫法:spa
const fs = require('fs'); — — — — — — — — — — — — — — exports.fs = fs; module.exports = fs;
而import/exports的寫法就多種多樣命令行
import fs from 'fs'; import {default as fs} from 'fs'; import * as fs from 'fs'; import {readFile} from 'fs'; import {readFile as read} from 'fs'; import fs, {readFile} from 'fs'; — — — — — — — — — — — — — — — — — — — — export default fs; export const fs; export function readFile; export {readFile, read}; export * from 'fs';
(5)本質上不一樣,主要體現:
a.CommonJS仍是ES6 Module 輸出均可以當作是一個具有多個屬性或者方法的對象;
b.default是ES6 Module所獨有的關鍵字,export default fs 輸出默認的接口對象,import fs from ‘fs’可直接導入這個對象;
c.ES6 Module 中導入模塊的屬性或者方法是強綁定的,包括基礎類型,而CommonJS則普通的值傳遞或者引用傳遞;code
本文參考連接以下所示:
node.js如何引用其它js文件:http://www.javashuo.com/article/p-deqylwbp-hn.html
關於require/import的區別:https://www.jianshu.com/p/fd39e16feb60htm