node.js快速入門(環(huán)境安裝、模塊化等)

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

node.js運行環(huán)境安裝

node官網(wǎng):https://nodejs.org/en/

安裝node

  1. 進入之后:


    進入之后

    目前穩(wěn)定版更新到12.18.3,實驗班14.6.0(推薦大家使用穩(wěn)定版)

  2. 第二步,選擇上面選項DOWNLOADS


    第二步

    根據(jù)自己的系統(tǒng)以及位數(shù)下載相應(yīng)的.msi安裝包,我這里是Windows 64位操作系統(tǒng),所以我選這個


    下載相應(yīng)的.msi安裝包
  3. 第三步,下載獲得.msi安裝包打開之后


    打開之后

    一路next,在選擇安裝目錄時,盡量不要選擇帶中文的目錄,最后進入install確認安裝頁面


    最后進入install確認安裝頁面
  4. 安裝完成之后,通過命令行node -v來看看是否安裝成功


    通過命令行node -v來看看是否安裝成功

    運行PowerShell,輸入node -v,只要出現(xiàn)版本號代表安裝成功


    運行PowerShell

幾種安裝失敗的情況

1. 權(quán)限不足2502、2503

權(quán)限不足2502、2503
  1. 第一步,以管理員身份運行power shell


    以管理員身份運行power shell
  2. 第二步,輸入msiexec /package +安裝包位置,輸入完回車,會彈出node安裝流程,此時就是以管理員身份運行的安裝包


    輸入msiexec /package

2. 執(zhí)行命令出錯

執(zhí)行命令出錯
  1. 解決方法:將node安裝目錄添加到環(huán)境變量中
  2. 第一步,找到本地node.js的安裝目錄


    找到本地node.js的安裝目錄

    image
  3. 第二步,配置環(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文件


命令行來執(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));
image

用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); 
});

命令行輸出


image

寫入文件

image

路徑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);
});
image

<font size=4>相關(guān)推薦:wantLG的《普歌-碼上鴻鵠團隊:配合node+MongoDB后臺+vue-cli用API接口獲取數(shù)據(jù)庫數(shù)據(jù)》</font>


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容