node開發(fā)概述
node是什么
<font color="red">Node</font>是一個基于Chrome V8引擎的JavaScript<font color="red">代碼運行環(huán)境</font>
運行環(huán)境
- 瀏覽器(軟件)能夠運行JavaScript代碼,瀏覽器就是JavaScript代碼的運行環(huán)境
- Node(軟件)能夠運行JavaScript代碼,Node就是JavaScript代碼的運行環(huán)境
為什么選擇node
node.js運行環(huán)境安裝
node官網(wǎng):https://nodejs.org/en/
安裝node
-
進入之后:
進入之后
目前穩(wěn)定版更新到12.18.3,實驗班14.6.0(推薦大家使用穩(wěn)定版)
-
第二步,選擇上面選項DOWNLOADS
第二步
根據(jù)自己的系統(tǒng)以及位數(shù)下載相應(yīng)的.msi安裝包,我這里是Windows 64位操作系統(tǒng),所以我選這個
下載相應(yīng)的.msi安裝包 -
第三步,下載獲得.msi安裝包打開之后
打開之后
一路next,在選擇安裝目錄時,盡量不要選擇帶中文的目錄,最后進入install確認安裝頁面
最后進入install確認安裝頁面 -
安裝完成之后,通過命令行node -v來看看是否安裝成功
通過命令行node -v來看看是否安裝成功
運行PowerShell,輸入node -v,只要出現(xiàn)版本號代表安裝成功
運行PowerShell
幾種安裝失敗的情況
1. 權(quán)限不足2502、2503
-
第一步,以管理員身份運行power shell
以管理員身份運行power shell -
第二步,輸入msiexec /package +安裝包位置,輸入完回車,會彈出node安裝流程,此時就是以管理員身份運行的安裝包
輸入msiexec /package
2. 執(zhí)行命令出錯
- 解決方法:將node安裝目錄添加到環(huán)境變量中
-
第一步,找到本地node.js的安裝目錄
找到本地node.js的安裝目錄
image -
第二步,配置環(huán)境變量(按順序圖示)
配置環(huán)境變量
image
image
image
image
然后一路點擊確定,重新打開power shell,輸入node -v就ok顯示出來了
Node快速入門
1. node.js組成
- JavaScript由三部分組成:<font color="#4f8cd9">ECMAScript,DOM,BOM</font>
- Node.js是由<font color="red">ECMAScript及Node環(huán)境</font>提供的一些附加<font color="red">API</font>組成的,包括文件,網(wǎng)絡(luò),路徑等等一些更加強大的API。
graph LR
B((ECMAScipt)) --> A[JavaScript]
C((DOM)) --> A
D((BOM)) --> A
graph LR
B((ECMAScipt)) --> A[Node.js]
C((Node模塊API)) --> A
2. node基礎(chǔ)hello world
var first = 'hello world';
console.log(first);
function fn() {
console.log('fn函數(shù)被調(diào)用了');
}
fn();
for (var i = 0; i < 5; i++){
console.log(i);
}
if (true) {
console.log('123');
}
node.js在沒有html文件引入js的情況下,是用命令行來執(zhí)行js文件
<font color="red">注意:執(zhí)行node命令前要先切換到編寫js文件目錄下</font>
node.js全局對象global
在瀏覽器中全局對象是window,在Node中全局對象是global
Node中全局對象下有以下方法,可以在任何地方使用,global可以省略。
- console.log() 在控制臺中輸出
- setTimeout() 設(shè)置超時定時器
- clearTimeout() 清除超時時定時器
- setInterval() 設(shè)置間歇定時器
- clearInterval() 清除間歇定時器
Node.js模塊化開發(fā)
一個功能就是一個模塊,多個模塊可以組成完整應(yīng)用,抽離一個模塊不會影響其他功能的運行
-
如下圖就是模塊化開發(fā)的例子
模塊化開發(fā)的例子
1. 模塊化開發(fā)規(guī)范
- Node.js規(guī)定一個<font color="red">JavaScript文件</font>就是一個模塊,模塊<font color="red">內(nèi)部定義的變量和函數(shù)</font>默認情況下在<font color="red">外部無法得到</font>
-
模塊內(nèi)部可以使用<font color="red">exports對象進行成員導(dǎo)出</font>, 使用<font color="red">require方法</font>導(dǎo)入其他模塊。
image
用exports.xxx模塊成員導(dǎo)出
代碼實例:
//a模塊
const add = (n1, n2) => n1 + n2;
exports.add = add;
//b模塊
//const a = require('./03_module-a.js');
//后綴可以省略
//引入a模塊
const a = require('./03_module-a');
console.log(a.add(10, 20));

用module.exports.xxx模塊成員導(dǎo)出
exports是module.exports的別名(地址引用關(guān)系),導(dǎo)出對象最終以module.exports為準
代碼示例:
//模塊a
const greeting = name => `hello ${name}`;
module.exports.greeting = greeting;
const a = require('./04_module.exports');
console.log(a.greeting('zhangsan'));

注意:
- <font color="red">當exports和module.exports指向同一個對象時,這兩個等同</font>
//模塊a
const greeting = name => `hello ${name}`;
const x = 100;
exports.x = x;
module.exports.greeting = greeting;
const a = require('./04_module.exports');
console.log(a);
//命令行輸出{x:100,greeting:[Function:greeting]},里面有x,說明指向同一個對象
如果不指向同一個對象,那么以module.exports為準
const greeting = name => `hello ${name}`;
const x = 100;
exports.x = x;
module.exports.greeting = greeting;
//module.exports和exports現(xiàn)在指向的不是同一個對象
module.exports = {
name:'張三'
}
exports ={
name:'李四'
}
const a = require('./04_module.exports');
console.log(a);
//最后命令行輸出{name:"張三"},最終以module.exports為準,所以說exports等于對象這種寫法是錯誤寫法
系統(tǒng)模塊
概念
Node運行環(huán)境提供的API,因為這些API都是以模塊化的方式進行開發(fā)的,所以我們又稱Node運行環(huán)境提供的API為系統(tǒng)模塊
graph LR
A[ 文件模塊fs ] --> B[讀取文件]
A --> C[寫入文件]
A --> D[創(chuàng)建文件夾]
系統(tǒng)模塊fs文件操作
讀取文件
//1.通過模塊的名字fs對模塊進行引用
const fs = require('fs');
//2.通過模塊內(nèi)部的readFlie讀取文件內(nèi)容
fs.readFile('./01_helloword.js', 'utf8', (err,doc) => {
//如果文件讀取出錯 , err就是一個對象 包含錯誤信息
//如果文件讀取正確 , err就是null
//doc 是文件讀取結(jié)果
console.log(err);
console.log(doc);
});
命令行輸出
寫入文件
路徑path操作
基本語法:
path.join("路徑1","路徑2",...);
代碼實例:
//public/uploads/avatar
const path = require('path');
const finalPath = path.join('public', 'uploads', 'avatar');
console.log(finalPath);
//命令行輸出 public/uploads/avatar
注:windows系統(tǒng)path模塊拼接的是/(反斜杠);Linux系統(tǒng)則是 \ (斜杠);
絕對路徑
- 大多數(shù)情況下使用絕對路徑,因為相對路徑有時候相對的是命令行工具的當前工作目錄
- 在讀取文件或者設(shè)置文件路徑時都會選擇絕對路徑
- 使用__dirname獲取當前文件所在的絕對路徑
const fs = require('fs');
const path = require('path');
console.log(__dirname);
console.log(path.join(__dirname, '01_helloword.js'))
fs.readFile(path.join(__dirname, '01_helloword.js'), 'utf8', (err, doc) => {
console.log(err);
console.log(doc);
});
<font size=4>相關(guān)推薦:wantLG的《普歌-碼上鴻鵠團隊:配合node+MongoDB后臺+vue-cli用API接口獲取數(shù)據(jù)庫數(shù)據(jù)》</font>
- 作者:wantLG
- 本文源自:wantLG的《普歌-碼上鴻鵠團隊復(fù)習(xí)總結(jié):node.js快速入門(環(huán)境安裝、模塊化等)》
- 本文版權(quán)歸作者和CSDN共有,歡迎轉(zhuǎn)載,且在文章頁面明顯位置給出原文鏈接,未經(jīng)作者同意必須保留此段聲明,否則保留追究法律責任的權(quán)利。
