Node.js入門(自定義模塊、系統模塊、第三方模塊)

Node是什麼

node是一個基於chromeV8引擎的js代碼運行環境、
Node.js 使用了一個事件驅動,非阻塞I/O的模型。(鏈接詳解)

node.js與瀏覽器js的區別

js運行在瀏覽器中、瀏覽器作爲解析器
js運行在`node`這個環境中就叫node.js、node作爲解析器(node.js 就是把瀏覽器的解析器封裝起來作爲服務端運行平臺)

nodejs下載
https://nodejs.org/zh-cn/download/
LTS = long term support 長期支持版 穩定版
Current 最新版 擁有最新特性 穩定版本的候選版本

nodejs的安裝
windows系統用戶在Node官網下載後綴爲.msi的文件到本地,雙擊下一步下一步安裝即可。
安裝完成後 在命令行中輸入node -v、出現版本號即爲成功
在這裏插入圖片描述
若出現如下錯誤
將node.exe所在文件夾配置到PATH系統環境變量中
在這裏插入圖片描述

PATH環境變量
告訴操作系統在命令行工具中執行的命令在什麼位置。
可以在任何盤符下面輸入你想要輸入的命令,而不需要將盤符切換到命令的所在位置。
在這裏插入圖片描述

nodejs的入門

nodejs的組成

JavaScript由三部分組成,ECMAScript,DOMBOM。
NodeJs中除了ECMAScript以外,Node環境還提供了一些操作系統的API,例如文件操作,網絡操作等等。

在這裏插入圖片描述

Node.js基礎語法

語法

/* 文件名稱 1.helloworld.js */ 
console.log('nodejs入門'); /* 
其他ECMAScript語法都可以在這裏使用 比如數組、對象、判斷、循環 */

在命令行中指向文件:node 文件名
使用 node 輸出文件時輸入首幾個字母+Tab會自動補全 js後綴可省略
在這裏插入圖片描述

全局對象

在瀏覽器中全局對象是window,在Node中全局對象是global
Node中全局對象下有以下方法,可以在任何地方使用,global可以省略
console.log()
setTimeout()
clearTimeout()
setInterval()
clearInterval()

在瀏覽器環境中 全局作用域下聲明的變量可以在window對象下找到
var message = 'hello'; 
console.log(window.message); // 'hello'

但是在Node環境下則不可以
console.log(global.message); // undefined

模塊化開發

模塊開發、一個js就是一個模塊、多個模塊組成應用、抽離一個模塊不會影響其他功能

JavaScript弊端() 
瀏覽器端JavaScript在使用的時候存在兩大問題, 命名衝突和文件依賴。 
模塊化開發需要依賴第三方庫文件,具有代表性有require.js和sea.js。
 
模塊化開發優勢()
解決命名衝突和文件依賴 (`內部定義的變量和函數默認外部無法得到`)
將具有獨立功能的代碼分離到單獨的文件中 
項目代碼易維

自定義模塊
一個JS文件即是一個模塊,在模塊內部定義的變量和函數默認情況下在外部無法得到。

NodeJs提供了exports和require關鍵字用來導入導出模塊數據

// 創建b.js 
// 在模塊內部定義version變量 
let version = 1.0; 
// 在模塊內部定義sayHi方法 
const sayHi = name => `您好, ${name}`; 
// 向模塊外部開放sayHi方法 
exports.sayHi = sayHi; 
// 向模塊外部開放version變量 (導出)
exports.version = version;
// 創建a.js
// 在a.js中引入b模塊 
let b = require('./b.js');
// 輸出b模塊中的version變量
console.log(b.version);// 1
// 調用b模塊中的sayHi方法 並輸出其返回值
console.log(b.sayHi('張三')); // 您好,張三 
// 注意:在a.js文件中導入的實際上就是b.js中的exports對象。

在這裏插入圖片描述
模塊導出注意事項

exports.屬性名 = 屬性值; 
module.exports = (以這個爲主);

exports是module.exports的別名(地址引用關係)`導出對象最終以module.exports爲準`
如果一個模塊沒有導出任何成員, 導入的時候是空對象

系統模塊

Node環境封裝了大量系統級別的API,爲了方便管理和使用,不同功能的API被劃分到了不同的類別中,例如
文件操作,網絡操作,這個類別就是模塊。模塊內部實際上就是對功能的封裝。

  • fs模塊:文件操作

fs.readFile() 讀文件
fs.writeFile() 向文件中寫入內容 (覆蓋)
fs.appendFile()向文件中追加內容 (追加)
fs.mkdir() 創建目錄

fs.readFile() 讀文件

//讀取文件操作
//1、通過模塊的名字對fs對模塊進行引用
const fs=require('fs');
//讀取文件中的內容
fs.readFile('./demo.txt','utf8',(err,doc)=>{
   //文件讀取錯誤、err是一個對象、包含錯誤信息
     //如果文件讀取正確、err是null
   console.log(err);
     //doc是文件讀取的結果(文件的內容)
   console.log(doc);
     
});

在這裏插入圖片描述
fs.writeFile()

const fs = require('fs');
//文件寫入操作
//寫入文件的位置、寫入的內容、寫入後的通知
fs.writeFile('./demo.txt', '我寫入了一隻小青蛙', err => {
    //如果文件有報錯信息
    if (err != null) {
        //打印錯誤
        console.log(err);
        return;

    }
      //寫入打印提示信息
    console.log('文件內容寫入成功');//文件內容寫入成功
})

在這裏插入圖片描述

path模塊:路徑操作
path.parse() 解析路徑 獲取路徑信息 
path.join() 路徑拼接
不同系統路徑分隔符不統一
防止路徑拼接少寫斜槓問題
使用絕對路徑進行路徑拼接 __dirname
const fs = require('fs');
const path = require('path')
//獲取當文件的絕對路徑
console.log(__dirname);
//獲取當前文件絕對路徑、通過絕對路徑去拼接文件
fs.readFile(path.join(__dirname, './01-1helloWorld.js'), 'utf8', (err, data) => {
    console.log(err);
    //打印獲取的文件的內容
    console.log(data);


})

在這裏插入圖片描述
第三方模塊

別人寫好滴、具有特定功能的、我們能直接使用的模塊即第三方模塊,由於第三方模塊通常都是由多個文件 組成並且被放置在一個文件夾中,所以又名包。
第三方模塊有兩種形式:

  1. 以文件的形式存在,提供實現項目具體功能的API接口。
  2. 以命令行工具形式存在,輔助項目開發,例如
  1. 當文件修改時,自動重新node該文件
  2. 將md文檔轉換爲更加通用的HTML文檔

獲取第三方文件

  • 所有第三方模塊都被統一放置在了一個叫做npm的網站中。
  • npm網站提供了npm的命令行工具用以下載此網站中的第三方模塊。
  • Node環境默認集成了這個工具,所以可以直接使用,使用方式如下:
--**本地安裝:npm install package => 用npm命令安裝(下載)第三方模塊 (文件模塊)** 
--**全局安裝:npm install package -g => 用npm命令安裝(下載)第三方模塊 (命令行工具)** 
---`g表示全局安裝`,即模塊的使用不侷限於當前項目,一般用於安裝命令行工具。
  • 默認情況下文件模塊會被下載至一個叫做node_modules的文件夾中,如果文件夾不存在則自動創建。
  • 全局安裝的命令行工具會被下載到C:\Users\用戶名\AppData\Roaming\npm文件夾中。
 - 使用npm命令卸載包的方式 
本地卸載: --**npm unintall package** => 用npm命令卸載包
全局卸載: --**npm unintall package -g** 

更改下載鏡像

由於npm網站在國外,所以下載速度會比較慢。
nrm(npm registry manager )是npm的鏡像源管理工具,有時候國外資源太慢,使用這個就可以快速地在 npm 源間切換

1.安裝nrm:在命令行執行命令,npm install -g nrm,全局安裝nrm。
2.使用:執行命令nrm ls。
nrm ls    
3、查看可選的源
*npm ---- https://registry.npmjs.org/

cnpm --- http://r.cnpmjs.org/

taobao - http://registry.npm.taobao.org/

eu ----- http://registry.npmjs.eu/

au ----- http://registry.npmjs.org.au/

sl ----- http://npm.strongloop.com/

nj ----- https://registry.nodejitsu.com/

其中,帶*的是當前使用的源,上面的輸出表明當前源是官方源。

4.切換:如果要切換到taobao源,執行命令nrm use taobao。
5.增加

你可以增加定製的源,特別適用於添加企業內部的私有源,執行命令 nrm add <registry> <url>,其中reigstry爲源名,url爲源的路徑。
nrm add registry http://registry.npm.frp.trmap.cn/6.刪除:執行命令nrm del <registry>刪除對應的源。
7.測試速度:你還可以通過 nrm test 測試相應源的響應時間。

使用第三方模塊
在需要使用的文件中通過require方式將模塊引入

  • require(‘第三方模塊名稱’);

根據文檔提供的API使用第三方模塊

  • nodemon
  • gulp
  1. gulp的安裝:
1. 定位終端到項目目錄 執行 npm install gulp -s 本地安裝gulp的庫文件
2. 執行 npm install gulp-cli -g 全局安裝gulp的命令行工具
  1. gulp的插件:
1. gulp-htmlmin:html代碼壓縮 安裝 npm install --save gulp-htmlmin
2. gulp-file-include:html公共模塊提取 npm install gulp-file-include
3. gulp-less:less語法轉化 npm install gulp-less
4. gulp-csso:css壓縮 npm install gulp-cssgo
5. gulp-babel:JavaScript語法轉化 npm install --save-dev gulp-babel @babel/core
@babel/preset-env
6. gulp-uglify:壓縮混淆js代碼 npm install --save-dev gulp-uglify
7. !!!!!!注意!Gulp 4最大的變化就是你不能像以前那樣傳遞一個依賴任務列表 如果
Gulp是4.0的版本需要手動指定版本號 比如 npm install gulp@3.9.1 -D

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章