node開發(fā)
-
為什么要學(xué)習(xí)服務(wù)器端開發(fā)基礎(chǔ)坝锰?
- 能夠和后端程序員更加緊密配合
- 網(wǎng)站業(yè)務(wù)邏輯前置笋额,學(xué)習(xí)前端技術(shù)需要后端技術(shù)支撐(AJAX)
- 擴展知識視野淋纲,能夠站在更高的角度審視整個項目
-
服務(wù)器端開發(fā)要做的事情
- 實現(xiàn)網(wǎng)站的業(yè)務(wù)邏輯
- 數(shù)據(jù)的增刪改查
-
為什么選擇Node啄巧?
- 使用JavaScript語法開發(fā)后端應(yīng)用
- 一些公司要求前端工程師掌握Node開發(fā)
- 生態(tài)系統(tǒng)活躍,有大量開源庫可以使用
- 前端開發(fā)工具大多基于Node開發(fā)
-
Node是什么胸囱?
- Node是一個ChromeV8引擎的JavaScript代碼運行環(huán)境
- 瀏覽器(軟件):能夠運行JavaScript代碼祷舀,瀏覽器就是JavaScript代碼的運行環(huán)境
- Node(軟件):能夠運行JavaScript代碼,Node就是JavaScript代碼的運行環(huán)境
- Node是一個ChromeV8引擎的JavaScript代碼運行環(huán)境
Node.js運行環(huán)境安裝
官網(wǎng):https://node.js.org/en/
- LTS = Long Term Support 長期支持版,穩(wěn)定版
- Current
Node環(huán)境安裝失敗解決辦法
- 錯誤代碼:2502裳扯、2503(失敗原因:系統(tǒng)賬戶權(quán)限不足)解決辦法:
- 以管理員身份運行powershell命令工具
- 輸入運行安裝包命令msiexec/package node安裝包位置\安裝包名稱
- 執(zhí)行命令報錯(失敗原因:Node安裝目錄寫入環(huán)境變量失敗)
- 解決辦法:將Node安裝目錄添加到環(huán)境變量中
- 系統(tǒng)環(huán)境變量PATH的作用
- 存儲系統(tǒng)中的目錄抛丽,在命令行中執(zhí)行命令的時候系統(tǒng)會自動去這些目錄中查找命令的位置
Node.js快速入門
- JavaScript由三部分組成:ECMAScript、DOM饰豺、BOM
- Node.js是由ECMAScript及Node環(huán)境提供的一些附加API組成的铺纽,包括文件、網(wǎng)絡(luò)哟忍、路徑等等一些更加強大的API
Node.js基礎(chǔ)語法:所有的ECMAScript語法在Node環(huán)境中都可以使用
Node.js模塊化開發(fā)
JavaScript開發(fā)弊端:JavaScript在使用時存在兩大問題,文件依賴和命名沖突
- 一個功能就是一個模塊陷寝,多個模塊可以組成完整的應(yīng)用锅很,抽離一個模塊不會影響其它功能的運行
Node.js模塊化開發(fā)規(guī)范:
- Node.js規(guī)定一個JavaScript文件就是一個模塊,模塊內(nèi)部定義的變量和函數(shù)默認(rèn)情況下在外部無法得到
- 模塊內(nèi)部可以使用exports對象進行成員導(dǎo)出凤跑,使用require方法導(dǎo)入其他模塊
/* 模塊成員進行導(dǎo)出 */
// a.js
// 在模塊內(nèi)部定義變量
let version = 1.0;
// 在模塊內(nèi)部定義方法
const sayHi = name => `你好,${name}`;
// 向模塊外部導(dǎo)出數(shù)據(jù)
exports.version = version;
exports.sayHi = sayHi;
/* 模塊成員進行導(dǎo)入 */
// b.js
// 在b.js模塊中導(dǎo)入模塊a
let a = require('./b.js');
// 輸出b模塊中的version變量
console.log(a.version);
// 調(diào)用b模塊中的sayHi方法爆安,并輸出其返回值
console.log(a.sayHi('張三'));
模塊導(dǎo)入時,后綴名是可以省略的
模塊成員導(dǎo)出的另一種方式:
exports
是module.exports
的別名(地址引用關(guān)系)仔引,當(dāng)exports
對象和module.exports
對象指向的不是同一個對象時扔仓,導(dǎo)出對象是最終以module.exports
為準(zhǔn)
module.exports.version = version;
module.exports.sayHi = sayHi;
系統(tǒng)模塊
Node運行環(huán)境提供的API,因為這些API都是以模塊化的方式進行開發(fā)的,所以我們又稱Node運行環(huán)境提供的API為系統(tǒng)模塊
- 例如:文件模塊包含:讀取文件咖耘、寫入文件翘簇、創(chuàng)建文件夾
系統(tǒng)模塊fs文件操作
- f:file文件
- s:system系統(tǒng),文件操作系統(tǒng)
讀取文件操作
const fs = require('fs');
// 讀取文件內(nèi)容
fs.reaFile('文件路徑/文件名稱'[,'文件編碼'],callBack);
========================
讀取文件語法示例
// 讀取上一級CSS目錄中的base.css
fs.readFile('../css/base.css','utf-8'(err,doc) => {
// 如果文件讀取發(fā)生錯誤 err的值為一個對象 包含錯誤信息
// 如果文件讀取正確 err為null
// doc參數(shù)為文件內(nèi)容
if(err==null){
// 在控制臺中輸出文件內(nèi)容
console.log(doc);
}
});
寫入文件內(nèi)容
fs.writeFile('文件路徑/文件名稱','數(shù)據(jù)',callBack);
========================
寫入文件示例
const content = '<h3>正確使用fs.writeFile寫入文件內(nèi)容</h3>';
// 如果要寫入的文件不存在儿倒,會自動創(chuàng)建此文件
fs.writeFile('../index.html',content,err => {
if(err !== null) {
console.log(err);
return;
}
console.log('文件寫入成功');
});
系統(tǒng)模塊path 路徑操作
- 為什么要進行路徑拼接版保?
- 不同的操作系統(tǒng)的路徑分隔符不統(tǒng)一
- Windows是
/
和\
- Linux是
/
path.join('路徑','路徑',...)
/* 示例: */
// 導(dǎo)入path模塊
const path = require('path');
// 路徑拼接
let finialPath = path.join('itcast','a','b','c.css');
console.log(finialPath); // 輸出結(jié)果 itcast\a\b\c.css
相對路徑&&絕對路徑
- 大多數(shù)情況下使用絕對路徑,因為相對路徑有時候相對的是命令行工具的當(dāng)前工作目錄
- 在讀取文件或者設(shè)置文件路徑時都會選擇絕對路徑
- 使用
__dirname
獲取當(dāng)前文件所在的絕對路徑
第三方模塊
別人寫好的夫否,具有特定的功能的彻犁,我們能夠直接使用的模塊即第三方模塊。由于第三方模塊通常都是由多個文件組成并且被放置在一個文件夾中凰慈,所以又名包
第三方模塊有兩種存在形式
- 以js文件形式存在汞幢,提供實現(xiàn)項目具體功能的api接口
- 以命令行工具形式存在,輔助項目開發(fā)
- 獲取第三方模塊
- npmjs.com:第三方模塊的存儲和分發(fā)倉庫
- npm(mode package manager):node的第三方模塊管理工具
- 下載:
npm install 模塊名稱
- 卸載:`npm uninstall package 模塊名稱
- 全局安裝與本地安裝
- 命令行工具:全局安裝
- 庫文件:本地安裝
第三方模塊 nodemon
nodemon是一個命令行工具微谓,用以輔助項目開發(fā)
- 在Node.js中森篷,每次修改文件都要在命令行工具中重新執(zhí)行該文件,非常繁瑣
- nodemon使用步驟
- 使用npm install nodemon -g 下載它(-g代表全局安裝)
- 在命令行工具中使用nodemon命令替代node命令執(zhí)行文件
第三方模塊 nrm
nrm(npm registry manager):npm下載地址切換工具
- npm默認(rèn)的下載地址在國外豺型,國內(nèi)下載速度慢
- 使用步驟
- 使用npm install nrm -g 下載它
- 查詢可下載的地址列表 nrm ls
- 切換npm下載地址 nrm use 下載地址名稱