天天看點

node.js的下載下傳安裝,npm管理包子產品化,常用的 LINUX 操作NODE

NODE

  • node官網
  • node中文網
  • 什麼是 node
    • Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
    • Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運作環境。
  • 這個是 node 官網的解釋
    • 其實 node 就是用 javascript 語言寫 後端
    • 也就是說,我們的 javascript 有了 node 以後,不光是一個前端語言,也是一個後端語言
  • 前端 javascript

- 三大核心

- ECMAScript
- DOM
- BOM
           
  • 操作内容
    • 浏覽器
    • 解決相容問題
  • 後端 javascript (node)
    • 核心
      • ECMAScript
    • 操作内容
      • 後端代碼
      • 資料庫
  • 也就是說,node 我們不需要解決相容問題,不需要 DOM 和 BOM,隻關注業務邏輯就可以了

下載下傳 node 安裝包

  • 我們的電腦是沒有自帶 node 環境的
  • 需要我們手動下載下傳一個 node 安裝包,安裝 node 環境
  • 有了 node 環境以後,我們就可以運作 node 了
  • 下載下傳方式
    • 直接到 node官網 或者 node中文網
    • 點選下載下傳就可以
  • 注意: 在 node 中文網下載下傳的時候,選擇安裝包,不要選擇 二進制檔案
    • 因為 二進制檔案 是一個簡單版,我們需要自己配置 環境變量 才可以使用

安裝 node 環境

  • 下載下傳好以後,我們直接把下載下傳好的檔案輕按兩下運作就行
  • 安裝的路徑初學者建議預設路徑哦
  • 找到 node-v10.16.2-x64.msi 對應的檔案
  • 這個時候 node 就安裝完畢了

檢測安裝環境

  • 檢測安裝是否成功
  • 我們打開運作視窗 (win + r)
    • 就是我們鍵盤下面那個 windows 的視窗鍵 + r 鍵
  • 寫入 cmd 然後按下回車,來到我們的指令行
  • 然後再指令行寫入一個指令

    $ node -v

  • 然後按下回車,會得到一個 node 的版本号
  • 能看到版本号表示 node 環境安裝成功
  • 至此,我們的 node 環境就有了
  • 我們就可以再電腦裡面運作我們的 node 了

node 初體驗

  • 到現在,我們的 node 環境已經安裝完畢了
  • 接下來我們就體驗一下 node
  • 我們的 node 到底是一個什麼東西
    • 就是直接在 終端(指令行) 中運作 js 代碼
    • 也可以用 .js 檔案寫一堆 js 代碼
    • 然後不需要浏覽器,直接讓我們寫的 js 代碼運作在我們自己電腦的終端上

直接在終端中書寫 js 代碼

  • 打開指令行
  • 書寫指令

    $ node

  • 直接按下回車,會看到 光标在閃爍,我們就進入了 node 代碼編寫環境
  • 直接書寫代碼就可以了

在指令行運作一個 js 檔案

  • 先建立一個檔案夾
  • 在裡面寫一個 js 檔案
    • 我這裡預設在 桌面/demo檔案夾/idnex.js
  • 在檔案裡面寫一些 js 代碼

    // index.js

    console.log(‘hello node’)

  • 打開指令行,要讓指令行的路徑和你存放這個要執行的 js 檔案的目錄一緻
  • 切換好以後,我們直接使用指令來運作我們準備好的 js 檔案

    $ node index.js

  • 然後就會在指令行把我們剛才寫的 js 檔案運作了
  • 就會在控制台輸出 hello node
  • 現在我們就已經運作了一段 js 代碼在指令行了
  • 這也就解釋了一下最開始官網說的那句話
    • Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運作環境。
      • 我們的 node 安裝完畢以後,就在指令行提供了一個基于 Chrome V8 引擎的運作環境
      • 在這個環境中運作 javascript 代碼
      • 這個就是 node.js

常用的 LINUX 操作

  • 什麼是 LINUX 操作
  • 其實就是在指令行使用指令來操作我們的電腦
  • 因為我們的 node 就是在指令行運作 js
  • 是以我們要了解一些常用的指令行指令

目錄操作

  • 目錄操作就是操作我們的指令行路徑
    1. 檢視目前目錄下所有檔案

      $ dir

    2. 以樹狀結構展示目前目錄下的所有檔案及子目錄下的所有檔案

      $ tree

    3. 進入目前目錄下的某一個目錄

      $ cd 檔案夾名稱

    4. 傳回上一級目錄

      $ cd …

    5. 切換盤符

      $ 盤符:

      $ d:

檔案操作

  • 檔案操作就是通過指令建立檔案或者檔案夾
    1. 建立檔案夾

      # 表示在目前目錄下建立一個叫做 test 的檔案夾

      $ md test

    2. 移除檔案夾

      # 表示移除目前檔案夾下的 test 檔案夾

      $ rd test

    3. 複制檔案夾

      # 表示複制一份 test 檔案夾起名為 test2

      $ xcopy test test2

    4. 建立檔案

      # 表示在目前目錄下建立一個叫做 index.js 的檔案

      $ type nul> index.js

    5. 拷貝一份檔案

      # 表示複制一份 index.js 檔案起名為 ceshi.js

      $ copy index.js ceshi.js

    6. 向文本中寫入内容

      # 表示向 index.js 中寫入一段文本 console.log(‘hello world’)

      $ echo console.log(“hello world”) > index.js

    7. 檢視檔案内的文本内容

      # 表示檢視 index.js 檔案中的文本内容是什麼

      $ type index.js

    8. 給檔案或者目錄重命名

      # 表示把 index.js 更名為 abc.js

      $ ren index.js abc.js

    9. 删除檔案

      # 表示把目前目錄下的 index.js 删除

      $ del index.js

    10. 移動檔案或檔案夾

      # 表示把目前目錄下的 index.js 檔案移動到目前目錄下的 a 檔案夾下

      $ move index.js a

其他指令

  • 做一些其他事情的時候使用的
    1. 清屏

      # 表示把目前螢幕的所有内容都清除

      $ cls

    2. 檢視目前電腦 IP 資訊

      # 表示檢視目前電腦的 IP 資訊

      $ ipconfig

    3. 測試某一個連結位址的網速

      # 表示檢視通路 百度 網站的速度

      $ ping www.baidu.com

    4. 檢視電腦資訊

      # 表示檢視目前電腦的資訊

      $ systeminfo

NODE 的導入導出

  • node 的開發是子產品化開發
  • 每一個 js 檔案都是一個獨立的子產品
  • 都有自己獨立的作用域
  • 我們可以通過 導入導出 的方式把多個 js 檔案合并在一起

導入

  • 在 node 裡面,我們使用 require 來導入一個檔案

    // 我是 index.js 檔案

    require(’./a.js’)

    console.log('我是 index.js 檔案')
               
  • 當我在指令行運作 index.js 檔案的時候
    • 首先會把 a.js 檔案運作一遍
    • 然後再繼續執行我自己檔案内部的代碼
  • 也可以再導入的時候接受另一個檔案導出的内容

    // a 接受到的内容就是 a.js 這個檔案導出的内容

    // 如果 a.js 檔案中什麼都沒有導出,那麼接受到的就是一個 空對象

    const a = require(’./a.js’)

導出

  • 我們在寫一個 js 檔案的時候,可以向外導出一些内容
  • 将來在這個檔案被導入的時候,就可以接受到一些内容

    // 我是 a.js

    // 每一個 js 檔案都會有一個對象叫做 module
    // 在 module 裡面有一個成員,叫做 exports
    // 每一個 js 檔案會預設把 module.exports 導出
    // 也就是說,我們向 module.exports 中添加什麼内容
    // 那麼就會導出什麼内容
    
    module.exports.name = 'Jack'
    module.exports.age = 18
               
  • 将來這個檔案被導入的時候,接受到的内容就是一個對象,裡面有兩個成員

    // 我是 index.js

    const a = require('./a.js')
    
    console.log(a) // { name: 'Jack', age: 18 }
               

子產品化

  • 在 node 的開發過程中
  • 我們是把每一個功能獨立做成一個子產品
  • 然後在使用 導入導出 的方式把他們關聯在一起
    • 利于維護
    • 準确定位
  • 我們一般把子產品分為三種
    1. 内置子產品 (node 天生就帶有的子產品)
    2. 自定義子產品 (我們自己寫的檔案)
    3. 第三方子產品 (從網上下載下傳的别人寫好的子產品)

NODE 常用的内置子產品

  • 剛才是我們自己寫的子產品
  • 現在我們來聊聊常見的内置子產品

##FS 子產品

  • fs 是 node 的一個内置子產品
  • 專門用來操作檔案的
  • 使用的時候直接導入就可以使用了

    const fs = require(‘fs’)

    // 接下來就可以使用 fs 這個變量去操作檔案了
               

異步讀取檔案内容

  • 異步的讀取某一個檔案内的内容

    const fs = require(‘fs’)

    // 因為是異步讀取,是以要在回調函數裡面擷取結果
    fs.readFile('./text.txt', 'utf8', function (err, data) {
        // err 表示讀取的時候出現的錯誤
        // data 表示讀取到的内容,如果出現錯誤,那麼是 data 是沒有内容的
    })
               

同步讀取檔案内容

  • 同步讀取某一個檔案的内容

    const fs = require(‘fs’)

    // 因為是同步讀取,是以直接以傳回值的形式接收讀取的内容就可以
    const res = fs.readFileSync('./text.txt', 'utf8')
    // 同步讀取的時候,如果出錯會直接在控制台報錯,并中斷程式繼續執行
    // 如果沒有錯誤,res 就會得到檔案中的内容
               

異步寫入檔案

  • 異步的向某一個檔案中寫入内容

    const fs = require(‘fs’)

    // 寫入内容的時候,一般不會出現錯誤
    // 因為如果沒有這個檔案的話,會建立一個這個檔案在向裡面寫入内容
    // 是以回調函數一般沒什麼用處,隻不過是在寫入檔案結束後做些事情而已
    // 雖然沒有用處,但是必須要寫
    fs.writeFile('./text.txt', '我是要寫入的内容', function () {
        console.log('寫入完成')
    })
               

同步寫入檔案

  • 同步的向某一個檔案内寫入内容

    const fs = require(‘fs’)

    // 因為是寫入檔案
    // 沒有傳回值,因為一般都會寫入成功
    fs.writeFileSync('./text.txt', '我是要寫入的内容')
               

HTTP 子產品

  • 因為 node 是一個服務端語言
  • 是以 node 一定也可以開啟一個伺服器,開啟一個服務
  • http 這個子產品就是專門用來開啟服務,并且接受請求,傳回響應的
  • http 也是一個内置子產品,直接導入使用就行

    const http = require(‘http’)

    // 接下來就可以使用 http 這個子產品去開啟服務了
               

建立一個服務

  • 要開啟先要建立一個服務

    const http = require(‘http’)

    // 建立一個服務
    // 這個服務預設監聽 http 協定
    // 這個服務預設監聽 localhost 域名
    // 傳回值就是這個服務
    const server = http.createServer(function (request, response) {
        // 前端發來的每一個請求都會觸發這個函數
        // request 包含着所有的請求資訊
        // response 是所有的響應資訊
    })
               

監聽一個端口

  • 确定這個服務監聽哪一個端口

    const http = require(‘http’)

    // 建立一個服務
    const server = http.createServer(function (request, response) {
        // 前端發來的每一個請求都會觸發這個函數
    })
    
    server.listen(8080, function () {
        // 這個函數會在服務開啟成功以後執行
        console.log('lintening on port 8080')
    })
               

給出一個響應

  • 簡單給出一個響應

    const http = require(‘http’)

    // 建立一個服務
    const server = http.createServer(function (request, response) {
        // 前端發來的每一個請求都會觸發這個函數
        // 接受到請求以後給出一個響應
        response.end('hello world')
    })
    
    server.listen(8080, function () {
        // 這個函數會在服務開啟成功以後執行
        console.log('lintening on port 8080')
    })
               
  • 此時,打開浏覽器
  • 位址欄輸入 localhost:8080
  • 浏覽器就會響應文字 hello world

NPM

  • 在我們安裝 node 的環境的時候,會自動幫我們一起安裝一個 npm 環境
  • 就好像我們安裝一些軟體的時候,會自動在幫我們安裝一些什麼 xxx軟體管家/xxx遊戲 之類的東西
  • 但是 npm 不是垃圾軟體,而是一個我們超級實用的工具

檢測是否安裝

  • 和檢測 node 一樣
  • 在指令行輸入指令

    $ npm -v

  • 能夠得到一個版本号就可以了

了解 npm

  • 什麼是 npm 呢
  • 我們可以把他想象成一個大超市,一個裝着所有我們需要用到的 插件/庫/架構 的超市
  • 我們要下載下傳一個 jQuery-validation 插件
    • 我們可以選擇去官網進行下載下傳
    • 可以選擇去 GitHub 上查找并下載下傳
    • 也可以選擇直接在指令行用 npm 下載下傳
  • 我們要下載下傳一個 bootstrap
    • 我們可以選擇去官網進行下載下傳
    • 可以選擇去 GitHub 上查找并下載下傳
    • 也可以選擇直接在指令行用 npm 下載下傳
  • 也就是說,npm 包含着我們所有的第三方的東西
  • 我們需要的時候,隻要打開終端,就可以使用指令來幫我們下載下傳
    • 再也不需要去官網找了
  • 而且,npm 不光可以在後端使用,也可以在前端使用
  • npm 隻不過是一個依賴于 node 環境的大型的包管理器

使用 npm

  • 我們想使用 npm 隻要打開指令行就可以了
  • 作為一個 包管理器
  • 可以幫我們下載下傳一些 插件 庫 架構 之類的東西供我們使用

下載下傳包

  • 打開指令行
  • 輸入下載下傳的指令

    # 表示使用 npm 這個工具下載下傳一個 jquery

    $ npm install jquery

  • 下載下傳完畢以後,就會在目前目錄下多出一個檔案夾
    • 叫做 node_modules
    • 在這個目錄下就會有一個檔案夾叫做 jquery
    • 就是我們需要的東西了
  • npm 的下載下傳預設是下載下傳最新版本的包
  • 我們也可以在下載下傳的時候指定一下我要下載下傳哪一個版本

    # 表示使用 npm 這個工具下載下傳一個 3.3.7 版本的 jquery

    $ npm install bootstrap[email protected]

删除包

  • 在删除包的時候,我們可以直接去 node_modules 檔案夾中找到對應的包的檔案夾删除掉
  • 但是這樣做并不好,我們還是應該使用指令行的指令來删除包

    # 表示我要删除 jquery 這個包

    $ npm uninstall jquery

  • 這樣,這個包就會被解除安裝了

管理項目

  • 我們的每一個項目都有可能需要依賴很多的包(有插件/庫/架構)
  • npm 會幫助我們記錄,我們目前這個項目所使用的包
  • 但是前提是,你要告訴 npm 說: “你來幫我管理整個檔案夾”
  • 我們依舊是使用指令在指令行來告訴 npm

    # 表示告訴 npm 你來幫我們管理整個檔案夾(也就是我的整個項目)

    $ npm init

npm 清除緩存

  • 有的時候,有些包下載下傳到一半,因為各種原因失敗了(比如突然沒有網了)
  • 那麼這個下載下傳了一半的包 有可能 會被緩存下來
  • 那麼以後你再次下載下傳的時候,就都是失敗的狀态
  • 那麼我們就要清除掉緩存以後,在重新下載下傳

    # 表示清除 npm 的緩存

    $ npm cache clear -f

NRM

  • 我們的 npm 雖然好用
  • 但是有一個缺點
    • 就是,他雖然在幫我們下載下傳東西
    • 但是他的下載下傳位址是在國外
    • 也就是說,每次使用 npm 下載下傳的時候,都是去國外的伺服器上進行下載下傳
    • 那麼就會有很多不穩定的因素
    • 而且相對時間比較長
  • nrm 就是一個用來切換 npm 下載下傳位址的工具(切換鏡像源工具)

安裝 NRM

  • nrm 如果想使用,那麼需要我們自己安裝一下
  • 因為是我們的工具,是以使用 npm 就可以安裝
  • 依舊是使用指令的方式來進行安裝
  • 隻不過這裡要把這個 nrm 安裝成一個全局的依賴,而不再是項目内部的依賴了
    • 全局依賴,一個電腦安裝一次,就一直可以使用
  • 我們使用指令安裝一個全局 nrm

    # 表示安裝一個全局 nrm

    $ npm install --global nrm

檢測安裝

  • 安裝完畢之後,我們檢測一下是否安裝成功
  • 和檢測 node npm 的時候一樣
  • 在指令行使用指令檢視一下版本号

    $ nrm --version

  • 能出現版本号,表示安裝成功

使用 nrm

  • nrm 裡面存着好幾個鏡像源位址
  • 我們要挑一個比較快的使用

檢測鏡像源位址

  • 我們直接在指令行使用指令來檢視所有鏡像源位址的網速

    # 表示檢視 nrm 鏡像源位址網速

    $ nrm test

切換鏡像源

  • 我們檢測完畢以後,就直到哪個比較快了
  • 我們就使用指令切換一下鏡像源位址就好了

    # 表示切換到 taobao 鏡像源位址

    $ nrm use taobao

繼續閱讀