node.js如何引用其它js文件

以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

相關文章
相關標籤/搜索