您好,登錄后才能下訂單哦!
本篇內容主要講解“Node.js中的npm與包怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Node.js中的npm與包怎么使用”吧!
什么是包
Node.js中的第三方模塊又叫做包,指的是同一種東西,知識叫法不同
包的來源
不同于Node.js的內置模塊與自定義模塊,包是由第三方個人或團隊開發出來的,免費供所有人使用。
注意:Node.js中的包都是免費且開源的,不需要付費即可免費下載使用。
為什么需要包
由于Node.js的內置模塊僅提供了一些底層的api,導致在基于內置模塊進行項目開發的時候,效率很低,包是基于內置模塊封裝出來的,提供了更高級,更方便的api。極大地提高了開發效率。包和內置模塊之間的關系,類似于jquery和瀏覽器內置api之間的關系。
格式化時間的傳統做法
創建格式化事件的自定義模塊
自定格式化時間的方法
創建補零函數
從自定義模塊中導出格式化時間的函數
導入格式化時間的自定義模塊
調用格式化時間的函數
自定義時間格式化模塊
//定義格式化時間的方法
function dataFormat(data) {
//接受字符串創建對象
const dt = new Date(data);
//年
const Y = dt.getFullYear();
//月
const m = format(dt.getMonth() + 1);
//日
const d = format(dt.getDay());
//時
const hh = format(dt.getHours());
//分
const mm = format(dt.getMinutes());
//秒
const ss = format(dt.getSeconds());
return `${Y}-${m}-$aegqsqibtmh ${hh}:${mm}:${ss}`;
}
//補零操作
function format(data) {
return data > 9 ? data : '0' + data;
}
//暴露對象
module.exports = { dataFormat };
大家注意曝光這里要用module.exports,因為這里引用了新的對象,或者修改引用對象添加屬性,可以使用exports。
exports.dataFormat = dataFormat;
使用模塊
//導入模塊
const data = require('./自定義模塊/格式化時間模塊.js');
//創建未格式化對象
let olddata = new Date();
console.log(olddata);
//調用格式化模塊
let newdata = data.dataFormat(olddata)
console.log(newdata);
利用包格式化時間
使用npm包管理工具,在項目中安裝格式化時間的包 moment
使用require()導入包
參考moment的官方api文檔學習了解使用方法
在當前終端中輸入
npm install moment
npm 包管理工具
install 安裝 可簡寫成 i
moment 包名稱
實現代碼
//導入包
const moment = require('moment');
//格式化事件
//單詞要大寫
const newdate = moment().format('YYYY-MM-DD HH:MM:SS');
console.log(newdate);
安裝包后的相關文件
初次安裝包完成后,在項目文件夾下會多三個文件,一個叫做node_modules的文件夾和package-lock.json的配置文件另一個是package.json。
其中
node_modules文件夾用來存放所有已安裝到項目中的包,require()導入第三方包時,就是從這個目錄中查找并加載的包,
package-lock.json配置文件用來記錄node_modules目錄下的每一個包的下載信息,例如包的名字信息,版本號等。
注意:不需要修改兩個文件中的任何東西,npm包會自動維護。
安裝指定版本的包
默認情況下,使用npm i命令安裝包的時候,會自動安裝最新版本的包。如果需要安裝指定版本的包,可以在包名之后,通過@符號指定具體的版本。
npm i moment @ 1.1.12
包的語義化版本規范
包的版本號是以‘點分十進制’形式進行定義的,總共有三位數字,例如:2.24.0
期中沒一位數字所代表的含義如下
第一位數字:大版本
第二位數字:功能版本
第三位數字:bug修復版本
版本號提升的規則:只要前面的版本號增長了,則后面的版本號歸零。
包管理配置文件
npm規定,在項目跟目錄中,必須提供一個叫做package.json的包管理配置文件,用來記錄與項目有關的一些配置信息,例如:
項目的名稱,版本號概述等
項目中都用到了哪些包
哪些包只在開發期間會用到
哪些包在開發和部署時都需要用到
如何記錄項目中安裝了哪些包
在項目根目錄中,創建一個叫做package.json的配置文件,即可用來記錄項目中安裝了哪些包,從而方便剔除node_modules目錄之后,在團隊成員之間共享代碼。
注意:今后在項目開發中,一定要把node_modules文件夾,添加到gitignore忽略文件中
npm包管理工具提供了一個快捷命令,可以在執行命令時所處的目錄中,快速創建package.json這個包管理配置文件,在我們安裝第三方包的時候 如果沒有package.json也會自動生成一個(里面只有安裝的包的信息)。
npm init -y
注意:上述命令只能在英文的目錄下成功運行,所以需要保證項目文件所處的父級目錄要是英文名。
建議 建立文件夾后 就執行此命令先創建一個package.son。
安裝包的時候 會自動將相關信息寫入package.json文件中。
package.json文件中,有一個dependencies節點,專門用來記錄您使用npm i命令安裝了哪些包
當我們拿到一個提出了node_modules的項目之后,啟動項目會報錯,提示沒有所需要的包,蘇一在啟動項目之前。我們應該安裝所有需要的包,package.jaon中記錄的包,然后才能運行起來。
npm install
我們只需要執行這個命令,執行這個命令后,會讀取package.json中所有以來的包,并下載。
npm uninstall 包名
這個是不能簡寫的,卸載之后 也會將包名從 package.json文件中刪除,
如果某些包只在項目開發階段會用到,在項目上線之后不會用到,則建議把這些包記錄到devDependencies節點中,
如果某些包在開發和項目上線都需要用到,則建議把這些包記錄到dependencies節點中。
npm install 包名 -D
只需要在結尾加個-D就可以將包安裝在devDependencies中
解決下包速度慢問題
在使用npm下包的時候,默認從國外的https://registry.npmjs.org/服務器進行下載,此時,網絡數據的傳輸需要經過漫長的海底光纜,因此下包速度回很慢。
淘寶在國內搭建了一個服務器,專門把國外服務器的包同步到國內的服務器,然后我們可以再從國內的服務器上下載包,這樣就可以大大提高包的下載速度。
鏡像:是一種文件存儲形式,一個磁盤上的數據在另一個磁盤上存在一個完全相同的副本即為鏡像。
查看當前下包的服務器地址
npm config get registry
切換淘寶服務器
npm config set registry=https://registry:npm:taobao.org/
為了更方便的切換下包的鏡像包,我們可以安裝nrm這個小工具,利用nrm提供的終端命令,可以快速查看和切換下包的鏡像源。
npm i nrm -g
-g全局下載,
查看所有可用的鏡像源
nrm ls
nrm use taobao
包的分類
那些被安裝到項目的node_modules目錄中的包,都是項目包。
項目包分為兩類,分別是:
開發依賴包(被記錄到devDependendes節點中的包,只在開發期間使用)
核心依賴包(被記錄到dependencies節點中的包,在開發期間和項目上線之后都會用到)
在執行npm install 命令時,如果提供-g參數,則會把包安裝為全局包。
全局包安裝包查看位置命令
npm config ls
注意: 只有工具性質的包 才有全局安裝的必要性。
作為程序員,md文檔的編寫往往是必要的,md文檔編寫簡易快捷,是不二的筆記語言。
這是一個可以把md文檔轉為html頁面的小工具,這種工具性質的包 就是有必要全卷裝的,便于我們日后使用。
安裝
npm i i5ting_toc -g
使用
i5ting_toc -f 文件路徑 -o
規范的包結構
在清楚了包的概念,以及如何下載和使用包之后,接下來我們深入了解一下包的內部結構
一個規范的包,它的組成結構,必須符合以下三點要求
包必須以單獨的目錄而存在
包的頂級目錄下要必須包含package.json這個配置文件
package.json中必須包含name,version,main這三個屬性,分別代表包的名字,版本號,包的入口。
開發屬于自己的包
格式化日期
轉義HTML中的特殊字符
還原HTML中的特殊字符
1、新建itheima-tools文件夾,作為包的根目錄
2、在itheima-tools文件夾中,新建如下三個文件
package.json 包管理配置文件
index.js 包入口文件
README.md 包的說明文檔
{
"name": "itheima-tools-xiepu",
"version": "1.0.0",
"main": "index.js",
"description": "提供了格式化時間。轉義功能",
"keywords": ["xiepu","tools","format"],
"license": "ISC"
}
name 制作的npm包的名稱 之后導入包 搜索包 都是這個名字 這個名字不可重復 建議命名之前現在npm網站內搜索一下是否重名
version 版本號
main 主文件路徑 到我們使用導入這個包的時候。就會自動執行這個js里面的內容
description 這是對包的描述
keywords 包的關鍵字 在網站內搜索時的關鍵字
license 遵循的開源許可協議
可以直接粘貼我們之前寫的自定義包函數
//定義格式化時間的方法
function dataFormat(data) {
//接受字符串創建對象
const dt = new Date(data);
//年
const Y = dt.getFullYear();
//月
const m = format(dt.getMonth() + 1);
//日
const d = format(dt.getDay());
//時
const hh = format(dt.getHours());
//分
const mm = format(dt.getMinutes());
//秒
const ss = format(dt.getSeconds());
return `${Y}-${m}-$aegqsqibtmh ${hh}:${mm}:${ss}`;
}
//補零操作
function format(data) {
return data > 9 ? data : '0' + data;
}
//暴露對象
exports.dataFormat = dataFormat;
//定義轉義字符函數
function htmlstr(hstr) {
return hstr.replace(/<|>|"|&/g, data => {
switch (data) {
case '<':
return '<';
case '>':
return '>';
case '"':
return '"';
case '&':
return '&';
}
})
}
//暴露對象
exports.htmlstr = htmlstr;
function htmlstr1(hstr) {
return hstr.replace(/<|>|"|&/g, data => {
switch (data) {
case '<':
return '<';
case '>':
return '>';
case '"':
return '"';
case '&':
return '&';
}
})
}
//暴露對象
exports.htmlstr1 = htmlstr1;
將格式化時間的功能,拆分到src dataFormat.js中
將處理html字符串的功能,拆分到src htmlstr.js中
在index.js中,導入兩個模塊,得到需要向外共享的方法
在index.js中,使用module.exports把對應的方法共享出去
將格式化時間,和字符串轉義各自分別放到獨立的js中(創立一個src文件夾),并進行暴露。
然后在主頁index.js中,進行導入和曝光。
const htmlstr = require('./src/htmlstr');
const dataFormat = require('./src/dataFormat');
module.exports = {
htmlstr,
dataFormat
}
調用測試
const itheima = require('../itheima-tools');
console.log(itheima.dataFormat.dataFormat(new Date()));
const str = '<h2>232</h2>';
console.log(itheima.htmlstr.htmlstr(str));
console.log(itheima.htmlstr.htmlstr1(str));
詳細說一下這里,我們首先調用的index.js這個模塊,可以看到導入只寫了文件夾沒寫index.js,這種寫法同樣也可以導入index.js,它會去尋找package.json里的main屬性,所以會導入index.js,導入index.js之后,我們又從index.js中導入了另外兩個轉義和格式化時間模塊,所以在使用屬性時
是這樣一個過程 itheima這個模塊里的htmlstr模塊里的htmlstr屬性。
那么可不可以不寫的那么復雜?
答案是可以的 我們只要在itheima這個模塊里 直接曝光出所有屬性就好,這里我們可以在itheima模塊中使用es6的展開屬性...直接將相關內容曝光在對象內。
index.js
const htmlstr = require('./src/htmlstr');
const dataFormat = require('./src/dataFormat');
module.exports = {
...htmlstr,
...dataFormat
}
ceshi.js
const itheima = require('../itheima-tools');
console.log(itheima.dataFormat(new Date()));
const str = '<h2>232</h2>';
console.log(itheima.htmlstr(str));
console.log(itheima.htmlstr1(str));
說明文檔內容沒有強制性要求,只要能清晰的包的作用,注意點寫好就可以,書寫內容大致有以下六點
安裝方式
導入方式
格式化時間
轉義html中的特殊字符
還原html中的特殊字符
開源協議
大家可以去學習一下markdown文檔編寫的語法 并不難
## 安裝
"
npm install itheima-tools-xiaoxie
"
## 導入
"
const name = require ('itheima-tools-xiaoxie')
"
## 格式化時間
"
console.log(itheima.dataFormat(new Date()));
"
## 轉義html字符
"
const str = '<h2>232</h2>';
這里輸入內容
console.log(itheima.htmlstr(str));
"
## 還原html字符
"
const str = '<h2>232</h2>';
這里輸入內容
console.log(itheima.htmlstr1(str));
"
"
文件里 有ceshi.js文件 可以在里面進行測試
"
## 開源協議
"
ISC
"
發布包
登錄npm網站,點擊 sign up按鈕,進入注冊用戶界面
填寫賬戶相關的信息,Full Name , Public Email, Username, Password
點擊Create an Account按鈕,注冊賬號
npm賬號注冊完成后,可以在終端中執行npm login命令,依次輸入用戶名,密碼,郵箱后,即可登錄成功。
注意:在登錄npm包,發布包之前要將下載地址修改為npm官網地址,否則發布包會失敗。
nrm use npm
登錄
根據提示依次輸入賬號 密碼 郵箱 驗證碼
會顯示已登錄 后面顯示網站名稱
可以看到 我們登錄到了官網上面
將終端切換到 包的根目錄 運行npm publish命令,就可以將包發不到npm上(注意 包不可以重名)
發布成功
打開網站 將賬號登入 鼠標移動到頭像 點擊packages 就可以看到我們發布的內容
運行 這個命令就可以將npm上面的包刪除掉
npm unpublish 包名--force
注意:通過此命令只可以刪除發布72小時內的包
刪除的包 24小時內不可以重復發布
到此,相信大家對“Node.js中的npm與包怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。