1.什么是包
node.js中的第三方模塊又叫做包
就像電腦和計算機指的是相同的東西,第三方模塊和包指的是同一個概念,只不過叫法不同
2.包的來源
不同于 Node.js 中的內置模塊與自定義模塊,包是由第三方個人或團隊開發出來的,免費供所有人使用。
注意:Node.js 中的包都是免費且開源的,不需要付費即可免費下載使用。
3.為什么需要包
由于 Node.js 的內置模塊僅提供了一些底層的 API,導致在基于內置模塊進行項目開發的時,效率很低。
包是基于內置模塊封裝出來的,提供了更高級、更方便的 API,極大的提高了開發效率。
包和內置模塊之間的關系,類似于jQuery 和 瀏覽器內置 API 之間的關系。
4.從哪里下載包
國外有一家IT 公司,叫做npm,Inc.這家公司旗下有一個非常著名的網站:地址,它是全球最大的包共享平臺,你可以從這個網站上搜索到任何你需要的包,只要你有足夠的耐心!
npm,Inc.公司提供了一個地址為 https://registry.npmjs.org/ 的服務器,器上下載自己所需要的包。
注意:
從 https://www.npmjs.com/ 網站上搜索自己所需要的包
從 https://registry.npmjs.org/ 服務器上下載自己需要的包
5.如何下載包
npm,Inc.公司提供了一個包管理工具,我們可以使用這個包管理工具,從 https://registry.npmjs.org/ 服務器把需要的包下載到本地使用。這個包管理工具的名字叫做 Node Package Manager(簡稱npm 包管理工具),這個包管理工具隨著 Nodejs 的安裝包一起被安裝到了用戶的電腦上。大家可以在終端中執行npm-v 命令,來查看自己電腦上所安裝的npm 包管理工具的版本號:
npm -v
6.npm 初體驗
6.1格式化時間的傳統做法
步驟
1??創建格式化時間的自定義模塊
2??定義格式化時間的方法
3??創建補零函數
4??從自定義模塊中導出格式化時間的函數
5??導入格式化時間的自定義模塊
6??調用格式化時間的函數
// 1. dateFormat.js文件定義格式化時間的方法
function dateFormat(dtStr) {const dt = new Date(dtStr)const y = dt.getFullYear()const m = padZero(dt.getMonth() + 1)const d = padZero(dt.getDate())const hh = padZero(dt.getHours())const mm = padZero(dt.getMinutes())const ss = padZero(dt.getSeconds())return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}// 定義補零的函數
function padZero(n) {return n > 9 ? n : '0' + n
}module.exports = {dateFormat
}
// 導入自定義的格式化時間的模塊
const TIME = require('./dateFormat')
// 調用方法,進行時間的格式化
const dt = new Date()
const newDT = TIME.dateFormat(dt)
console.log(newDT)
6.2格式化時間的高級做法
步驟:
1??使用npm包管理工具,在項目中安裝格式化時間的包moment
2??使用require()導入格式化時間的包
3??參考moment的官方API文檔對時間進行格式化
// 1. 導入需要的包
// 注意:導入的名稱,就是裝包時候的名稱
const moment = require('moment')const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
6.3在項目中安裝包的命令
npm install 包完整的名稱
簡寫:npm i 包完整的名稱
6.4初次裝包后多了哪些文件
初次裝包完成后,在項目文件夾下多一個叫做node modules 的文件夾和 package-lockjson 的配置文件
其中:
node modules 文件夾用來存放所有己安裝到項目中的包。require 導入第三方包時,就是從這個目錄中查找并加載包。package-lockjson 配置文件用來記錄 node modules 目錄下的每一個包的下載信息,例如包的名字、版本號、下載地址等。
注意:程序員不需要手動修改node_modulesh或package-lock.json文件中的任何代碼,npm包管理工具會自動維護它們。
6.5安裝指定版本的包
默認情況下,使用npm install 命令安裝包的時候,會自動安裝最新版本的包。如果需要安裝指定版本的包,可以在包名之后,通過@符號指定具體的版本,例如:
npm i moment@2.22.2
6.6包的語義化版本規范
包的版本號是以“點分十進制”形式進行定義的,總共有三位數字,例如2.24.0其中每一位數字所代表的的含義如下:
第1位數字:大版本
第2位數字:功能版本
第3位數字:Bug修復版本
版本號提升的規則: 只要前面的版本號增長了,則后面的版本號歸零
7.包管理配置文件
npm 規定,在項目根目錄中,必須提供一個叫做 packagejson 的包管理配置文件。用來記錄與項目有關的一些配置信息。例如:
項目的名稱、版本號、描述等
項目中都用到了哪些包
哪些包只在開發期間會用到
那些包在開發和部署時都需要用到
7.1如何記錄項目中安裝了哪些包
在項目根日錄中,創建一個叫做 package.json 的配置文件,即可用來記錄項目中安裝了哪些包。從而方便剔除node_modules 目錄之后,在團隊成員之間共享項目的源代碼
注意:今后在項目開發中,一定要把 node_modules 文件夾,添加到.gitignore 忽略文件中
7.2快速創建package.json
npm包管理工具提供了一個快捷命令,可以在執行命令所處的目錄中,快速創建package.json這個包管理配置文件:
npm init -y
7.3dependencies節點
package.json文件中,又一個dependencies節點,專門用來記錄npm install 命令安裝了哪些包
7.4一次性安裝所有的包
可以運行npm install命令或(npm i)一次性安裝所有的依賴包
執行npm install命令時,npm包管理工具會先獲取pack.json中的dependencies節點
讀取到記錄的所有依賴包名稱和版本號后,npm包管理工具會把這些包一次性下載到項目中
npm install
7.5卸載包
npm uninstall 包名
7.6devDependencies節點
如果某些包只在項目開發階段會用到,在項目上線之后不會用到,則建議把這些包記錄到devDependencies節點中。
與之對應的,如果某些包在開發和項目上線之后都需要用到,則建議把這些包記錄到dependencies節點中
npm i 包名 -D 或
npm install 包名 --save-dev