@模組與包管理工具js的天生缺陷——缺少模組化管理機制
·表現》 js中容易出現變數被覆蓋,方法被替代的情況(既被汙染)。特別是存在依賴關係時,容易出現錯誤。
這是因為js缺少模組管理機制,來隔離實現各種不同功能的js判斷,避免它們相互汙染。
·解決》 經常採用命名空間的方式,把變數和函式限制在某個特定的作用域內,人肉約定一套命名規範來限制**,
保證**安全執行。jquery中有許多變數和方法,但是無法直接訪問,必須通過jquery,$呼叫 各個方法。
【commonjs規範】
不同於jquery,commonjs是一套規範,約定了js如何組織,如何編寫,包括包,二進位制,套接字,單元測試等等。
大部分標準在擬定和討論之中,首先把執行不同任務的**塊和**檔案看為獨立的模組,每乙個模組都是乙個單獨的作用域,
但不是孤立的,可能存在依賴關係。每個模組分為三個部分,定義、標識和引用。這套規範與現實產品如node.js相互影響,良性迴圈。
【nodejs的模組管理機制】
基於commonjs實現了模組管理系統。node中每乙個js檔案都是乙個獨立的模組,在其內部不需要有命名空間,
不需要擔心變數的汙染和方法定義時的隔離。同時模組之間可以組合形成更強大的模組或功能包。npm即是用來管理各種功能包的
amd只需引用最後乙個.js,其中引用自己的引用就好了
define (['./依賴的.js'],function())
node.js中@模組的分類
模組型別分為三類:
=>核心模組
=>檔案模組
=>第三方模組
在nodejs中檔案和模組是一一對應的
引用模組的方式 1用檔案路徑引用 2用模組名來引用
如果用名稱引用非核心模組的話 node就會把模組名對映到對應模組名的路徑 包含了核心函式的模組會在node啟動時預先載入 非核心模組就是使用npm安裝的第三方模組 或者其他人建立的模組
exports 就是require獲取的物件模組的流程:
建立模組、匯出模組、載入模組、使用模組;
module.exports和export區別:
module.exports = add;特別的物件型別;(推薦使用,支援現有)
exports.add = add;傳統的模組例項;(exports是輔助方法)
module.exports最終返回給呼叫者;
exports掛載屬性和方法,然後把屬性賦給module.exports;
ndoejs主要就是把專案變成模組化在管理 第一步先建立模組 然後匯出模組 然後在載入模組 最後在使用模組
建立模組也是入口的js檔案 裡面有特定的功能 匯出模組就是把功能和模組名建立關係 載入模組就是在其它檔案裡引入並且載入這模組
在ndoe裡使用reqiure來完成這個工作 也就是用模組名來引用模組 然後會把模組影射到對應的模組路徑 最後就是使用模組 直接呼叫模組中設定好的方法exports物件用來將屬性方法公開 可以讓其它模組呼叫 require可以匯入exports公開的方法 這樣就算是匯入乙個模組的 並且是獨立的 無需擔心其它的錯誤
module.exports是支援存在的東西 是特寫的物件型別 exports是module.exports的幅度方法 module.exports是給呼叫著 exports上掛著屬性和方法
最後再把屬性方法給module.exports 如果module.exports已經有熟悉方法的話 exports就會被忽略
amd用於需要非同步載入js的情況
commonjs是同步載入js用於有構建工具時
NodeJS 二 模組與包管理工具
node 應用由模組組成,採用 commonjs 模組規範。commonjs 就是模組化的標準,nodejs 就是 commonjs 模組化 的實現。檔案模組 第三方模組 資料夾模組 資料夾模組的例子 c om monj s no dejs 中自定 義模組的 規定 color common js n...
包管理工具
參考 yum和apt get的區別 rpm命令詳解及和yum之間的關係 centos中rpm和yum到底有什麼區別?dpkg和apt get區別 dpkg 常用指令操作快速參考 yum和apt get常用命令 linux分類 一般著名的linux系統基本分成兩大類 1 redhat系列 redhat...
Python 包管理工具
如圖,可以看到distribute是setuptools的取代,pip是easy install的取代。核心目的是發布,即打包 生成安裝檔案等。disutils setuptools distribute python自帶模組,用於打包 生成安裝檔案 安裝包,需借助setup.py指令碼。distu...