Node的基本瞭解(一)

什麼是node

        單獨把瀏覽器裏面的**解析引擎**拆下來安裝在電腦裏,這樣就不需要瀏覽器也能運行js代碼

      node就是把javascript這個語言擴展到後端範疇,又是前端又是後端。

    前端 JavaScript

        三大核心

            ECMAScript

            DOM

            BOM

        操作內容

            瀏覽器

            解決兼容問題

    後端 JavaScript(node)

        核心

            ECMAScript

        操作內容

            後端代碼

            數據庫

    node我們不需要解決兼容問題,不需要DOM和BOM,只關注業務邏輯就可以。

    node的特點

    1.標準的異步編程 不阻塞代碼

    2.合理分配資源 誰該幹什麼幹什麼

    3.高併發I/O模塊

        快速高併發的處理文件

        I(input) / O(output)

        輸入輸出流

 

    下載node安裝包

        直接到[node官網](https://nodejs.org/en/)或者[node中文網](http://nodejs.cn/)點擊下載就可以

        注意:**在node中文網下載的時候,不選擇二進制安裝包**

    檢測安裝環境

        1.打開運行窗口(win+r)

        2.寫入cmd然後按回車,來到命令行

        3.在命令行寫入一個指令 node -v按下回車,得到一個node版本號就安裝成功,

    在node環境下運行JS代碼

        方式一 

        直接在命令行運行,缺點是代碼沒法保存

            打開命令行->輸入指令 node->回車->直接寫JS代碼

        方式二 

        把要在node環境裏運行的JS代碼寫在一個.js後綴的文件裏面,文件名和目錄名儘量不寫中文,不能命名爲node.js

            打開命令行->把目錄切換到js文件的目錄下->node+空格+要運行的s文件名+回車

      退出js代碼書寫環境Ctrl+c按兩次

    常用的LINUX操作(window系統)

        什麼是LINUX操作

            其實就是在命令行使用指令來操作我們的電腦

        目錄操作

            1.查看當前目錄下所有文件

                dir(window命名)

            2.以樹狀結構展示當前目錄下所有文件及子目錄下的所有文件

                tree(window命名)

            3.進入子級文件夾

                cd 文件夾名稱

            4.返回上一級目錄

                cd ..

            5.切換盤符(Mac沒有)

                盤符:

        操作文件

            1.創建文件夾

                mkdir 創建的文件夾名稱

                md 創建的文件夾名稱

            2.刪除文件夾

                rd 刪除的文件夾(只能刪除空文件夾)

                rd /s/q 刪除的文件夾(強制刪除不爲空的文件夾)

            3.複製一個文件夾

                xcopy 需複製的文件夾名稱 複製以後的文件夾名稱

            4.創建文件

                type nul>創建的文件名

            5.向文件裏面寫入一些內容

                echo 寫入的內容>指定文件

            6.向文件裏面追加內容

                echo 寫入尼爾>>指定文件

            7.查看文本里面內容

                type 查看額文件名

            8.給文本重命名

                ren 需修改的文件 改成什麼名字

            9.複製文件

                copy 要複製額文件名 複製以後的文件名

            10.刪除文件

                del 刪除的文件名

            11.移動文件

                move 移動文件名 移動到哪一個目錄

        操作系統

            1.清楚當前命令行的所有內容

                cls

            2.查看電腦ip信息

                ipconfig

            3.測試網速

                ping www.baidu.com

            4.查看電腦信息

                systeminfo

    node的模塊化

        每一個js文件都是一個獨立的模塊,都有自己獨立額作用域,通過導入導出的方式把多個js文件合併在一起。

        導入: 在node中,使用require來導入一個文件

        導出:每一個 js 文件都會有一個對象叫做 module,在 module 裏面有一個成員叫做 exports,每一個 js 文件會默認把 module.exports,導出也就是說,我們向 module.exports 中添加什麼內容,那麼就會導出什麼內容

        1.內置模塊

            安裝node這個環境的時候自動帶的模塊

        2.自定義模塊

            自己書寫一個JS文件

        2.第三方模塊

            別人寫好的文件,下載下來使用

        常用的內置模塊

            FS模塊

            fs是node的一個內置模塊,專門用來操作文件,使用的時候直接導入就可以了

            cnost fs=require('fs')

            1.用來**異步**讀取文件的方法

// fs.readFile(參數1,參數2,參數3)
// 參數1:需要讀取的文件(必填)
// 參數2:讀取文件格式,字符集格式(選填)
// 參數3:讀取成功的回調函數
const fs=require('fs')
fs.readFile('./index.txt','utf8',function(err,data){
    //這個函數是在讀取文件成功之後執行的回調函數
    // 接受兩個形參
    // err:讀取失敗的時候失敗信息
    // data:讀取成功的時候讀取的內容
    // 讀取額內容默認是buffer格式的字符串(我們看不懂,但計算機看的懂)將第二個參數傳遞一個'utf8',這樣出來的內容我們就可以看懂
    console.log('讀取文件成功');
    if(err){
        return console.log(err);
    }
    console.log(data);  
})

            2.用來**同步**讀取文件的方法

// fs.readFileSync(參數1,參數2)
// 參數1:需讀取的文件(必填);
// 參數2:讀取文件格式(選填)
// 返回值:讀取成功的時候讀取的內容,如果讀取失敗,直接打斷程序的執行,報錯
const fs=require('fs')
let data=fs.readFileSync('./index.txt','utf8')
// data 讀取文件成功時候的文件內容
console.log(data)

            3.用來**異步**寫入文件的方法

// fs.writeFile(參數1,參數2,參數3)
// 參數1:寫入到哪個文件
// 參數2:需寫入的內容
// 參數3:寫入成功的回調函數
// 寫入時覆蓋式寫入,如果寫入的文件不存在,會自動創建一個文件
const fs=require('fs')
fs.writeFile('./index.txt','添加內容1',function(err,data){
    console.log('寫入成功'); 
    if(err){
        return console.log(err);
    }  
    console.log(data);
})

            4.用來**同步**寫入文件的方法

// fs.writeFileSync(參數1,參數2)
// 參數1:寫入到哪個文件
// 參數2:需寫入的內容
const fs=require('fs')
fs.writeFileSync('./abcd.txt','你好呀')

            5.用來**異步**追加文件

// fs.appendFile(參數1,參數2,參數3)
// 參數1:寫入到哪個文件
// 參數2:需寫入的內容
// 參數3:寫入成功的回調函數
const fs=require('fs')
fs.appendFile('./index.txt','追加內容',function(){
    console.log('追加成功'); 
    if(err){
        return console.log(err);
    }  
    console.log(data);
})

      HTTP模塊

        因爲node是一個服務端語言,所以一定可以開啓服務器,開啓一個服務

        http這個模塊就是專門用來開啓服務,並且接受請求,返回響應的

        http也是一個內置模塊,直接導入使用 const http=require('http')

        http 模塊裏面創建服務的方法

          1. http.createServer(function () {})

              返回值: 就是一個服務

             當這個服務監聽一個端口號的時候, 就變成了一個服務器

        2. 使用這個服務去監聽一個端口號

             你創建的服務.listen(你要監聽的端口號, 監聽成功的回調函數(選填))

       3.上面的代碼寫好以後, 當你再終端運行這個文件的時候

             你的那個終端就是一個服務器了

             就可以打開瀏覽器去訪問 localhost:你自己定義的端口號

// 0. 導入 http 模塊
const http = require('http')
const fs = require('fs')

// 1. 創建一個服務
const server = http.createServer(function (req, res) {
  // 這個函數是前端的每一個請求都會執行的函數
  // 只有再我監聽的端口號有請求過來的時候, 就會執行這個函數
  // 這個函數接收兩個形參
  //   req(request) => 表示每次請求的信息
  //     req.url 表示本次請求的地址
  //   res(response) => 表示每次請求的響應
  //     res.end() 表示本次給回的響應
  // console.log('我執行了, 表示有請求進來了')
  // console.log(req.url)

  // 通過不同的 url 來做不同的事情了
  if (req.url === '/index.html') {
    // 表示前端向獲取 index.html 文件
    // 我就讀取到這個文件給它
    fs.readFile('./index.html', 'utf8', function (err, data) {
      if (err) return console.log(err)

      // index.html 文件裏面的內容
      // console.log(data)
      // 只要把這個文本返回給前端
      res.end(data)
    })
  }
})

// 2. 監聽一個端口號
//    端口號 0 ~ 65535
//    0 ~ 1023 不推薦使用
server.listen(8080, function () {
  console.log('監聽 8080 端口成功')
})

 

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