node.js是一個基于Chrome v8決議引擎的 js 運行環境.簡單來說就是運行在服務端的JavaScript.作為一門編程語言,模塊化是非常基礎的一個要求,可js在2015年前并沒有這個概念,多個js檔案放在同一個html檔案中很容易出現變數污染的問題,好在es6的出現在語法層面支持了模塊化,時代在發展,作為前端程式員,學習模塊化是非常有必要的!
什么是模塊化?
在編程領域中,模塊化就是遵守固定的規則,把一個大檔案拆分成獨立并且相互依賴的多個小模塊.通俗來講就是一個js檔案可以使用另一個js檔案中的資料.
模塊化有什么好處?
1.可以提高代碼的復用性
2.可以提高代碼的可維護性
3.可以實作按需加載(學習vue時會十分明顯)
模塊化的產生也帶來了模塊作用域,同函式作用域相似,在自定義模塊中定義的變數.方法等,只能在當前作用域內被訪問,這種訪問限制,有效的解決了變數污染的問題.
模塊規范
-
CommonJS 規范:nodejs中遵守的就是commonjs規范,
-
ES6 模塊化規范:(前后端通用的模塊化規范;Node.js、Vue、React 中都能使用!)
-
CMD 和 AMD 模塊化規范(較少使用): CMD--sea.js, AMD-require.js
-
UMD 叫做通用模塊定義規范(Universal Module Definition),它可以通過運行時或者編譯時讓同一個代碼模塊在使用 CommonJs、CMD 甚至是 AMD 的專案中運行,它沒有自己專有的規范,是集結了 CommonJs、CMD、AMD 的規范于一身,
nodejs模塊分類
- 內置模塊 --- fs(檔案系統模塊).path(路徑模塊).http(網路操作模塊)...
const fs = require("fs"); //node提供的基礎模塊,可以直接匯入使用
- 自定義模塊 --- 用戶自己創建的.js檔案
const m = require("./js檔案名");//注意其中是相對路徑,后綴名.js可加可不加
- 第三方模塊 --- 由第三方個人或團隊開發出來的模塊,通常叫做包,使用前需要下載匯入
const moment = require('moment');// 使用前需要通過npm i moment 命令安裝該包
模塊的匯入匯出
匯入
使用require()方法加載模塊
注意:使用require方法加載其他模塊時,會執行被加載模塊中的代碼
匯出
- 在每個自定義模塊中都有一個module物件,它里面存盤了和當前模塊有關的資訊,其中一個屬性exports可以將模塊成員暴露,供外界使用.加載某個模塊時得到的就是module.exports這個屬性指向的一個空物件.
- 若想使用該模塊中的資料,可以向module.exports這個屬性中添加屬性值供外界使用
- 為了簡化向外共享成員的代碼,node提供了exports物件.默認情況下,exports和module.exports指向同一個物件.
注意: 使用require()方法匯入模塊時,匯入的結果永遠以module.exports指向的物件為準
exports和module.exports的使用誤區
exports = {
username: 'ls',
gender: '男'
}
module.exports = exports;
module.exports.age = '20';
// 匯入后的結果為 {username:'ls',gender:'男',age:'20'}
exports = {
username: 'ls',
gender: '男'
}
module.exports.age = '20';
module.exports = exports;
// 匯入后的結果為 {username:'ls',gender:'男'}
exports = {
username: 'ls',
gender: '男'
}
exports = module.exports;
module.exports.age = '20';
// 匯入后的結果為 {age:'20'}
所以使用時盡量只使用其中一個方法,避免造成不必要的麻煩
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/306256.html
標籤:其他
上一篇:十分鐘教你使用express快速創建基本的web服務器
下一篇:node 模塊化的概念
