Node.js 第三天學習總結

2020-10-15 12:00:44

Node.js 第三天課堂筆記

知識點

  • 增刪改查

  • 登陸

  • 註冊

  • 頭像

    • 伺服器端圖片
    • 水印
    • 圖片水印
    • 找回密碼
  • 核心系統

    • 核心模組
    • 第三方模組
    • 自己寫的模組
    • 載入規則以及載入機制
    • 迴圈載入
  • npm

  • package .json

  • Express

    • 第三方Web開發框架
    • 高度封裝了http模組
    • 更加專注於業務,而非底層細節
    • 知其所以然
  • 增刪改查案例

    • 使用檔案來儲存資料(鍛鍊非同步編碼)
  • MongoDB 芒果資料庫

    • (所有方法都封裝好了)

反饋

  • SEO
    • 網站運營 SEO
      +SEO 運營專員
    • 百度 Google 搜狗
  • art-template中的each是什麼,jQuery中的each是什麼
    • art-template 和 jQuery 沒有任何關係
      art-template中的each
    • each 是 art-template 的模板語法,專屬的
      +{{each 陣列}}
      +
    • {{ KaTeX parse error: Expected 'EOF', got '}' at position 9: {value} }̲}</li> +{{/each….each(陣列,function(){})
      +$(‘div’).each(function(){}) 一般用來遍歷 jQuery 選擇器選擇到的偽陣列範例物件
      ES5中的forEach
      +forEach是ES5中的一個陣列遍歷函數,是js原生支援的遍歷方法

複習

  • 網站開發模型
    +黑盒子、啞巴
    +寫程式碼讓它變得智慧
    +按照你寫好的套路供使用者使用

  • 在Node 中使用art-template 模板引擎

    • 安裝
    • 載入
    • template.render()
  • 使用者端渲染和伺服器端渲染的區別

    • 使用者端渲染最少兩次請求,發起ajax在使用者端使用模板引擎渲染
    • 使用者端拿到的就是伺服器端已經渲染好的
  • 處理留言本案例首頁資料列表渲染展示

  • 處理留言本案例發表留言功能

    • 路徑
    • 設計好請求路徑
    • $GET 直接或查詢字串資料
    • Node 中需要咱們自己動手來解析
      • url.parse()
      • /pinglun?name=jack&message=hello
      • split(’?‘);
      • name=jack&message=hello
      • split(’&‘);
      • name=jack message=hello
      • forEach()
      • name=jack .split(’=’)
      • 0 key
        +1 value
  • 如何解析請求路徑中的查詢字串

    • url.parse()
  • 如何在 Node 中實現伺服器重定向

    • header(‘loaction’)
      • 301 永久重定向 瀏覽器會記住
        • a.com b.com
        • a瀏覽器不會請求a
        • 直接跳去b
      • 302 臨時重定向 瀏覽器不記憶
        • a.com b.com
        • a瀏覽器還會請求a
        • a 告訴瀏覽器你將往b
  • Node 中的Console(REPL)使用

    • cmd 輸入node

上午總結

  • jQuery 的 each 和 原生的 JavaScript 方法 forEach

    • ES5 提供的 forEach方法,不相容 IE8
    • jQuery 的 each 由 jQuery 這個第三方庫提供的
      • jQuery 2 以下版本是相容 IE 8 的
      • 它的 each 方法主要是用來遍歷 jQuery 範例物件(偽陣列)
      • 同時它也可以作為低版本瀏覽器中的 forEach 替代品
      • jQuery 的範例物件不能使用 forEach方法 ,如果想要使用必須先轉為陣列
      • [].slice.call(jQuery範例物件) //slice擷取返回陣列
  • 模組中匯出多個成員和匯出單個成員

  • 301 和 302 狀態碼的區別

  • exports 和 module.exports 的區別

    • 每個模組中都有一個 module 物件
    • module 物件中有一個 exports 物件
    • 我們可以把需要匯出的成員都掛載到 module.exports 介面物件中
    • 也就是: module.exports.xxx = xxx的方式
    • 但是每次都 module.exports.xxx = xxx 很麻煩,點兒太多了
    • 所以Node 為了你方便,同時在每一個模組中都提供了一個成員叫:exports
    • exports 等價於 module.exports
    • 所以對於 module.exports.xxx = xxx的方式 完全可以寫成:exports.xxx = xxx的方式
    • 當一個模組需要匯出單個成員的時候,必須使用 module.exports = xxx的方式
    • 不要使用 exports = xxx的方式 不管用
    • 因為每個模組最終向外 return 的是 module.exports
    • exports 只是 module.exports 的一個參照
    • 所以即使你為 exports = xxx 重新賦值,也不會影響module.exports
    • 但是有一種賦值方式比較特殊:exports = module.exports 這個用來重新建立參照關係的
    • 之所以讓大家明白這個道理,是希望大家能夠更加靈活的去面試
  • Node 是一個比肩 Java、PHP 的平臺

    • JavaScript 既能寫前端也能寫伺服器端
module.exports = {

}
exports = module.exports; //重新建立 exports 和 module.exports 的參照關係

exports.foo = 'bar';  //管用

下午總結

  • jQuery 的each 和原生 JavaScript 方法 forEach
  • 301 和 302 的區別
  • 從模組中匯出單個成員和匯出多個成員的方式
  • module.exports 和 exports 的區別
  • require 方法載入規則
    • 優先從快取載入
    • 核心模組
    • 路徑形式的模組
    • 第三方模組
      • node_modules
  • package.json 包描述檔案
    • dependencies 選項的作用
  • npm 常用命令
    • npm init
    • npm install 包名
  • Express 基本使用
  • 使用 Express 把之前的留言本案例自己動手改造一下