node(基礎三)_模塊系統基礎
一、前言
這篇文章主要涉及:
1、模塊中exprots和module.exprots
2、require加載標識符分析
3、npm常用指令總結
二、主要內容
1、 exprots和module.exprots
(1)在node中,每個模塊內部都有一個自己的module對象, 而字module中,也有一個對象叫:exprots也是一個對象
比如:
(2)如果需要對外導出對象,只要把導出的成員掛載到module.exports中,,如果每次訪問都要通過module.exports.xxx=xxxx 所以有如下:
(3)當一個模塊需要導出單個成員的時候,直接exports=xxx 是不管用的
(4)對象最終返回的還是module.exports,,所以給exprots賦值是不管用的
比如:
(5)exprots=module.exprots會重新建立引用
2、require標識符分析
(1)優先從緩存加載
比如有如下三個文件:
加載關系如圖所示:
結果如圖所示:優先從緩存中加載,所以a中已經加載了b,main中又加載b,會直接從緩存中加載
(2)模塊標識
路徑形式: ./ ../不可以省略 /xxx標識當前文件模塊所在的磁盤根目錄(幾乎不用) 絕對路徑也幾乎不用
核心模塊:核心模塊文件已經被編譯到了二進制文件中,我們只需按照名字來加載就可以
如: require(‘fs‘) require(‘http‘)
第三方模塊:第三方模塊必須通過npm來下載,也用require來加載
不可能有任何一個第三方包和核心模塊的名字是一樣的
拿art-template來舉例,看看是如何標識的:
第一步:加載的時候 先找到當前文件所處目錄中的node_modules目錄
第二步:找到node_modules/art-template
第三步:找到node_modules / art-template / package.json文件
第四步:找到package.json文件中的main屬性,main屬性中就記錄了art-template的入口模塊
第五步:做完前面幾步,就加載使用第三方包,
如果package.json文件不存在或者mian指定的入口模塊沒有,則會自動去找該目錄下的inde.js index.js是一個默認備選項
如果還找不到,就會找上一級目錄中的node_modules目錄查找,如果還沒有,繼續往上一級,一直到磁盤根目錄,如果還沒找到就報錯:
can not find module xxxx
3、npm
(1)
查看版本:npm –version
升級: npm: npm install –global npm
Npm init 生成 package npm init –y 可以快速生成
Npm install 包名:只下載, 一次性將dependencies選項中的依賴項全部安裝
Npm install –save 包名:下載並且保存依賴項 npm i –S
Npm uninstall 包名:只刪除,如果有依賴項會依然保存
Npm uninstall –save 包名 :刪除的同時會將依賴信息也去除
Npm help: 查看使用幫助
Npm 命令 –help
(2)由於npm加載的時候是訪問的國外的網站,比較慢,這裏可以用淘寶提供的cnpm鏡像參考:http://npm.taobao.org
三、總結
node(基礎三)_模塊系統基礎