NodeJS基礎(chǔ)入門教程(1)-一文讓你快速了解什么是NodeJS

      網(wǎng)友投稿 893 2022-05-30

      目錄

      1什么是Node

      2Node.js安裝

      2.1官網(wǎng)下載

      2.2安裝

      3Node.js快速入門

      3.1Node.js組成

      3.2Node.js基礎(chǔ)語(yǔ)法

      3.3Node.js中的全局對(duì)象global

      4Node.js模塊化開發(fā)

      4.1JavaScript開發(fā)弊端

      4.2 軟件中的模塊化開發(fā)

      4.3 Node.js中模塊化開發(fā)規(guī)范

      4.4模塊成員導(dǎo)出

      4.5模塊成員的導(dǎo)入

      4.6模塊成員另一種導(dǎo)出方式

      4.7 兩種模塊導(dǎo)出方式的聯(lián)系與區(qū)別

      5 Node.js系統(tǒng)模塊

      5.1什么是系統(tǒng)模塊

      5.2系統(tǒng)模塊fs(文件操作模塊)

      5.2.1讀取a.js文件中的內(nèi)容

      5.2.2寫入文件內(nèi)容

      5.3系統(tǒng)模塊path路徑操作

      5.4相對(duì)路徑VS絕對(duì)路徑

      6第三方模塊

      6.1 什么是第三方模塊

      6.2獲取第三方模塊

      6.2.1npm的使用

      6.2.2全局安裝與本地安裝

      6.3第三方模塊nodemon

      6.4第三方模塊 nrm

      1什么是Node

      Node是一個(gè)基于Chrome V8引擎的JavaScript代碼運(yùn)行平臺(tái)。WEB瀏覽器也是JavaScript代碼運(yùn)行平臺(tái)。常見的JavaScript運(yùn)行平臺(tái):WEB瀏覽器,Node。

      2Node.js安裝

      NodeJS基礎(chǔ)入門教程(1)-一文讓你快速了解什么是NodeJS

      2.1官網(wǎng)下載

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

      Node.js有兩個(gè)不同的版本,LTS(Long Term Support長(zhǎng)期支持版穩(wěn)定版)版,Current(擁有最新特性的實(shí)驗(yàn)版)版。一般我們下載LTS版。

      2.2安裝

      根據(jù)自己的系統(tǒng)和版本在官網(wǎng)下載不同的安裝包,官網(wǎng)下載之后,直接點(diǎn)擊安裝,一直點(diǎn)擊下一步,直至安裝好即可。

      安裝好之后,在命令行通過:node -v命令查看是否安裝成功,如果能成功獲取到版本號(hào)說明安裝成功,否則表明沒有安裝成功。

      3Node.js快速入門

      3.1Node.js組成

      在學(xué)習(xí)JavaScript的時(shí)候我們了解到,JavaScript 由ECMAScript,DOM,BOM三部分組成。

      Node.js則是由ECMAScript及Node 環(huán)境提供的一些附加API組成的。

      3.2Node.js基礎(chǔ)語(yǔ)法

      JavaScript中ECMAScript語(yǔ)法在Node環(huán)境中都可以使用。在Node環(huán)境下執(zhí)行JavaScript代碼,使用node命令,node+要執(zhí)行的.js的文件,即可執(zhí)行相應(yīng)的JS文件。

      test.js

      3.3Node.js中的全局對(duì)象global

      在瀏覽器中全局對(duì)象是window,Node中的全局對(duì)象是global。全局對(duì)象global中有以下方法,可以在任何地方使用,使用的時(shí)候global可以省略。

      console.log() // 在控制臺(tái)中輸出

      setTimeout() // 設(shè)置超時(shí)定時(shí)器

      clearTimeout() // 清除超時(shí)時(shí)定時(shí)器

      setInterval() // 設(shè)置間歇定時(shí)器

      clearInterval() // 清除間歇定時(shí)器

      4Node.js模塊化開發(fā)

      4.1JavaScript開發(fā)弊端

      我們?cè)谑褂肑avaScript時(shí),存在文件依賴和命名沖突兩大問題。

      ①文件依賴

      在開發(fā)js代碼的過程中,例如使用了jquery.js,就需要通過的形式引入文件,形成硬編碼。

      ②命令沖突

      在js文件中,如果創(chuàng)建一個(gè)add變量并賦予它一個(gè)函數(shù)。如果文件的代碼過多,在后續(xù)的代碼中再次使用add變量,就會(huì)將原來的add變量覆蓋,造成了變量的命名沖突。

      為了解決文件依賴和命名沖突這兩大問題,Node.js使用了模塊化開發(fā)。

      4.2 軟件中的模塊化開發(fā)

      一個(gè)功能就是一個(gè)模塊,多個(gè)模塊可以組成完整應(yīng)用,抽離一個(gè)模塊不會(huì)影響其他功能的運(yùn)行。

      4.3 Node.js中模塊化開發(fā)規(guī)范

      1.Node.js規(guī)定一個(gè)JavaScript文件就是一個(gè)模塊,模塊內(nèi)部定義的變量和函數(shù)默認(rèn)情況下在外部無法訪問。

      2.模塊內(nèi)部可以使用exports對(duì)象導(dǎo)出成員, 使用require方法導(dǎo)入其他模塊。

      4.4模塊成員導(dǎo)出

      // 模塊Aa(a.js)

      // 在模塊a內(nèi)部定義的變量

      let version = 3.0;

      // 在模塊a內(nèi)部定義的方法

      const sayHi = name => `您好, ${name}`;

      // 使用exports向模塊外部導(dǎo)出數(shù)據(jù)

      exports.version = version;

      exports.sayHi = sayHi;

      4.5模塊成員的導(dǎo)入

      // 模塊b(b.js)

      // 在b模塊中導(dǎo)入模塊a

      let a = require('./a.js');

      // 輸出a模塊中的version變量

      console.log(a.version);

      // 調(diào)用a模塊中的sayHi方法 并輸出其返回值

      導(dǎo)入模塊時(shí)后綴可以省略,即require('./a.js');可以寫成require('./a');。

      4.6模塊成員另一種導(dǎo)出方式

      module.exports.version = version;

      module.exports.sayHi = sayHi;

      exports是module.exports的別名(地址引用關(guān)系),導(dǎo)出對(duì)象最終以module.exports為準(zhǔn)。

      4.7 兩種模塊導(dǎo)出方式的聯(lián)系與區(qū)別

      Node應(yīng)用由模塊組成,采用CommonJS模塊規(guī)范。根據(jù)這個(gè)規(guī)范,每個(gè)文件就是一個(gè)模塊,有自己的作用域。在一個(gè)文件里面定義的變量、函數(shù)、類,都是私有的,對(duì)其他文件不可見。CommonJS規(guī)范規(guī)定,每個(gè)模塊內(nèi)部,module變量代表當(dāng)前模塊。這個(gè)變量是一個(gè)對(duì)象,它的exports屬性(即module.exports)是對(duì)外的接口。加載某個(gè)模塊,其實(shí)是加載該模塊的module.exports屬性。exports 與 module.exports同時(shí)出現(xiàn)會(huì)優(yōu)先使用 module.exports,這是因?yàn)闉榱朔奖悖琋ode為每個(gè)模塊提供一個(gè)exports變量,指向module.exports。這等同在每個(gè)模塊頭部,有一行這樣的命令。

      var exports = module.exports;

      于是我們可以直接在 exports 對(duì)象上添加方法,表示對(duì)外輸出的接口,如同在module.exports上添加一樣。

      注意,因?yàn)?Node 模塊是通過 module.exports 導(dǎo)出的,如果直接將exports變量指向一個(gè)值,就切斷了exports與module.exports的聯(lián)系。

      // a.js

      exports = function a() {};

      // b.js

      const a = require('./a.js') // a 是一個(gè)空對(duì)象

      5 Node.js系統(tǒng)模塊

      5.1什么是系統(tǒng)模塊

      系統(tǒng)模塊即Node運(yùn)行環(huán)境提供的API。 因?yàn)檫@些API都是以模塊化的方式進(jìn)行開發(fā)的, 所以我們又稱Node運(yùn)行環(huán)境提供的API為系統(tǒng)模塊。

      5.2系統(tǒng)模塊fs(文件操作模塊)

      fs,f是file的縮寫,s為system 的縮寫,fs的意思即文件操作系統(tǒng)。

      Node 導(dǎo)入文件系統(tǒng)模塊(fs)語(yǔ)法如下:

      const fs = require('fs');

      Node.js 文件系統(tǒng)(fs 模塊)模塊中的方法均有異步和同步版本,例如讀取文件內(nèi)容的函數(shù)有異步的 fs.readFile() 和同步的 fs.readFileSync()。

      異步的方法函數(shù)最后一個(gè)參數(shù)為回調(diào)函數(shù),回調(diào)函數(shù)的第一個(gè)參數(shù)包含了錯(cuò)誤信息(error)。建議大家使用異步方法,比起同步,異步方法性能更高,速度更快,而且沒有阻塞。

      異步讀取文件內(nèi)容語(yǔ)法:

      fs.reaFile('文件路徑/文件名稱'[,'文件編碼'], callback);

      5.2.1讀取a.js文件中的內(nèi)容

      代碼:

      // 1.通過模塊的名字fs對(duì)模塊進(jìn)行引用

      const fs = require('fs');

      // 2.通過模塊內(nèi)部的readFile讀取文件內(nèi)容

      fs.readFile('./a.js', 'utf8', (err, doc) => {

      // 如果文件讀取出錯(cuò)err是一個(gè)包含錯(cuò)誤信息的對(duì)象

      // 如果文件讀取正確err是null

      // doc 是文件讀取的結(jié)果

      console.log(err);

      console.log(doc);

      });

      5.2.2寫入文件內(nèi)容

      寫入文件內(nèi)容語(yǔ)法:

      fs.writeFile('文件路徑/文件名稱', '數(shù)據(jù)', callback);

      const fs = require('fs');

      if (err != null) {

      console.log(err);

      return;

      }

      console.log('文件寫入成功!');

      })

      更多文件操作模塊的使用方法,請(qǐng)查看官網(wǎng)文檔:File System

      5.3系統(tǒng)模塊path路徑操作

      由于不同操作系統(tǒng)的路徑分隔符不一樣,例如:在Windows系統(tǒng)中\(zhòng)和/都可以,在Linux中只能是/。所以我們需要進(jìn)行路徑拼接。

      路徑拼接語(yǔ)法:

      path.join('路徑1', '路徑2', ...,'路徑n');

      實(shí)例代碼:

      // 導(dǎo)入path模塊

      const path = require('path');

      // 路徑拼接

      let finialPath = path.join('Users', 'albert', 'b', 'test.css');

      // 輸出結(jié)果 Users/albert/b/test.css

      console.log(finialPath);

      5.4相對(duì)路徑VS絕對(duì)路徑

      Node.js中,大多數(shù)情況下使用絕對(duì)路徑,因?yàn)橄鄬?duì)路徑有時(shí)候相對(duì)的是命令行工具的當(dāng)前工作目錄。所以在讀取文件或者設(shè)置文件路徑時(shí)都會(huì)選擇絕對(duì)路徑,我們可以使用__dirname動(dòng)態(tài)獲取當(dāng)前文件模塊所屬目錄的絕對(duì)路徑,使用__filname 動(dòng)態(tài)獲取當(dāng)前文件的絕對(duì)路徑。(注意:__dirname為兩個(gè)下劃線)。

      console.log("__dirname:" + __dirname);

      console.log("__filename:" + __filename);

      改寫讀取文件代碼:

      const fs = require('fs');

      const path = require('path');

      fs.readFile(path.join(__dirname, 'a.js'), 'utf8', (err, doc) => {

      console.log(err);

      console.log(doc);

      });

      6第三方模塊

      6.1 什么是第三方模塊

      別人寫好的、具有特定功能的、我們能直接使用的模塊即第三方模塊,由于第三方模塊通常都是由多個(gè)文件組成并且被放置在一個(gè)文件夾中,所以又被稱為包。

      Node.js第三方模塊有兩種存在形式:

      1.以js文件的形式存在,提供實(shí)現(xiàn)具體功能的API接口。

      2.以命令行工具形式存在,輔助開發(fā)。

      6.2獲取第三方模塊

      第三方模塊的存儲(chǔ)和分發(fā)倉(cāng)庫(kù):npmjs.com

      npm (node package manager)即node的第三方模塊管理工具。安裝node.js時(shí),將自動(dòng)安裝npm。npm的更新頻率一般比Node.js的更新頻率高,可以通過npm -v查看npm版本。

      更新到最新的官方經(jīng)過測(cè)試的版本命令:

      npm install npm@latest -g

      6.2.1npm的使用

      下載某個(gè)模塊:npm install 模塊名稱

      卸載某個(gè)模塊:npm unintall package 模塊名稱

      6.2.2全局安裝與本地安裝

      全局安裝方式是鍵入命令:npm install 模塊名稱 -g 或 npm install 模塊名稱 --global,其中參數(shù)-g的含義是代表安裝到全局環(huán)境里面,安裝在Node安裝目錄下的node_modules文件夾中,一般在 \Users\用戶名\AppData\Roaming\ 目錄下,可以使用npm root -g查看全局安裝目錄。

      調(diào)用方式:全局安裝后可以供命令行(command line)使用,用戶可以在命令行中直接運(yùn)行該組件包支持的命令。

      本地安裝方式是鍵入命令:npm install 模塊名稱 或?npm install 模塊名稱 --save-dev等,其中參數(shù)--save-dev的含義是代表把你的安裝包信息寫入package.json文件的devDependencies字段中,包安裝在指定項(xiàng)目node_modules文件夾下。

      調(diào)用方式:本地安裝后可以直接通過require()的方式引入項(xiàng)目中node_modules目錄下的模塊。

      命令行工具:全局安裝 npm install 模塊名稱 -g

      庫(kù)文件:本地安裝 npm install 模塊名稱

      6.3第三方模塊nodemon

      nodemon是一個(gè)命令行工具,用以輔助項(xiàng)目開發(fā)。

      在Node.js中,每次修改文件都要在命令行工具中重新執(zhí)行該文件,非常繁瑣。我們可以使用nodemon這個(gè)工具,它的作用是監(jiān)聽代碼文件的變動(dòng),當(dāng)代碼改變之后,自動(dòng)重新執(zhí)行文件。

      如何使用:

      使用npm install nodemon –g 安裝

      在命令行工具中用nodemon命令替代node命令執(zhí)行文件

      我們可以看到,實(shí)際上nodemon也是在調(diào)用node命令。

      6.4第三方模塊 nrm

      nrm ( npm registry manager )即npm-切換工具。npm默認(rèn)的-在國(guó)外,在國(guó)內(nèi)下載速度很慢,npm包有很多的國(guó)內(nèi)鏡像源,nrm可以幫助您在不同的npm源地址之間輕松快速地切換。

      使用方法:

      1.使用npm install nrm –g 安裝它

      2.查詢可用-列表 nrm ls

      3.切換npm- nrm use -名稱

      4.測(cè)試源速度:nrm test

      5.訪問源的主頁(yè):nrm home taobao

      注: 前面帶 * 號(hào)的表示正在使用的源

      今天的學(xué)習(xí)就到這里了,由于本人能力和知識(shí)有限,如果有寫的不對(duì)的地方,還請(qǐng)各位大佬批評(píng)指正。如果想繼續(xù)學(xué)習(xí)提高,歡迎關(guān)注我,每天學(xué)習(xí)進(jìn)步一點(diǎn)點(diǎn),就是領(lǐng)先的開始,加油。如果覺得本文對(duì)你有幫助的話,歡迎轉(zhuǎn)發(fā),評(píng)論,!!!

      JavaScript Node.js

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:關(guān)于前端的碎碎念5-web前端常見面試問題總結(jié)(1)
      下一篇:HarmonyOS之應(yīng)用工程結(jié)構(gòu)與設(shè)備模板
      相關(guān)文章
      亚洲成AV人片在线播放无码| 精品国产亚洲一区二区三区| 亚洲爆乳大丰满无码专区| 亚洲爱情岛论坛永久| 中文字幕亚洲一区二区三区| 亚洲Av永久无码精品黑人| 亚洲av无码专区在线电影| 亚洲国产精品无码第一区二区三区| 亚洲人成777在线播放| 亚洲乱码中文论理电影| tom影院亚洲国产一区二区| 国产精品亚洲自在线播放页码| 亚洲AV成人一区二区三区在线看| 91在线亚洲综合在线| 中文字幕亚洲情99在线| 亚洲国产午夜精品理论片在线播放 | 亚洲精品免费视频| 亚洲天堂在线播放| 亚洲性69影院在线观看| 亚洲一区二区三区在线| 国产亚洲玖玖玖在线观看| 亚洲国产精品无码第一区二区三区| 亚洲欧美综合精品成人导航| 亚洲AV无码之国产精品| 亚洲.国产.欧美一区二区三区| 国产亚洲女在线线精品| 亚洲色偷偷综合亚洲AV伊人| 亚洲综合激情另类专区| 亚洲啪啪综合AV一区| 亚洲国产精品久久久久| 久久综合亚洲色HEZYO社区| 亚洲乱码一二三四区国产| 亚洲一区二区观看播放| 亚洲av无码专区国产不乱码| 色偷偷亚洲第一综合| 国产午夜亚洲精品理论片不卡| 亚洲AV无码精品色午夜在线观看| 亚洲日产韩国一二三四区| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲春色在线视频| 亚洲卡一卡2卡三卡4麻豆|