Node筆記(新手入門必看)

. 初識Node.js

1.1 Node.js是什麼

  • Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
    • Node.js不是一門語言
    • Node.js不是庫(library)、不是框架(frame)
    • ==Node.js是一個JavaScript運行環境==
    • <u>簡單點來說就是Node.js能夠解析和執行JavaScript代碼</u>
    • ==之前只有瀏覽器能夠解析和執行JavaScript代碼==
    • 也就是說如今的JavaScript能夠徹底脫落瀏覽器來運行,一切都歸功於:Node.js
    • 構建於chrome的v8引擎之上
      • 代碼只是具備特定格式的字符串
      • 引擎能夠幫你去解析和執行
      • chrome的V8引擎是目前工人的解析執行js代碼最快的
      • node.js做者把Google Chrome中的V8引擎移植了出來,開發了一個獨立的js運行環境
  • 瀏覽器中的JavaScript
    • ECMAscript
      • js基本語法
    • BOM
    • DOM
  • Node.js中的JavaScript
    • 沒有BOM、DOM
    • 有ECMAScript
    • 在Node這個JavaScript執行環境中爲JavaScript提供了一些服務器級別的操做API
      • 例如文件的讀寫
      • 網絡服務的構建
      • 網絡通訊
      • http服務器
      • 等處理(至關於開發web服務器,學習對應的api便可)
  • Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
    • event-driven 事件驅動
    • non-blocking I/O model 非阻塞IO模型(異步)
    • lightweight and efficient. 輕量和高效
    • 隨着課程慢慢學習會明白事件驅動、非阻塞IO模型
    • ==NodeJS以事件驅動著名,經過異步的編程達到高吞吐量高性能。==
  • Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
    • npm是世界上最大的開源庫生態系統
    • 絕大多數JavaScript相關的包都存放在了npm上,這樣作的目的是爲了讓開發人員更方便的去下載使用
    • npm是基於node.js開發的包管理工具

1.2 ==node的API參考文檔的使用:==

  • 黑點後面表明參數,例:javascript

    • request <http.IncomingMessage>

    若是是方法它會告訴你方法的參數是什麼,是否可選的。css

    上述request表明綁定函數的參數,由於它是一個事件所以確定須要綁定一個函數,後面的鏈接爲這個參數的類型,功能上可以調用什麼變量和方法。前端

  • 加()的表明方法,不加()的表明屬性java

1.3 Node.js能作什麼

  • web服務器後臺
  • 命令行工具
    • npm
    • git(C語言)
    • hexo(node)
    • 。。。
  • 對於前端開發工程師來說,接觸node最多的是使用它的命令行工具
    • 本身寫的不多,主要是使用別人第三方發佈的
    • webpack
    • gulp
    • npm

1.4 達到目標

  • B/S編程模型
    • browser-Server
    • back-end
    • 任何服務端技術這種BS編程模型都是同樣,和語言無關
    • Node只是一個工具
  • 模塊化編程
    • RequireJS
    • SeaJS
    • css中可使用@import('文件路徑')來實現引入外部文件
    • 之前認知的js智能經過script標籤來加載
    • 在Node中能夠像@import同樣來引用加載JavaScript腳本文件
  • Node經常使用API
  • 異步編程
    • 回調函數
    • Promise
    • async
    • generator
  • Express web開發框架
  • ECMAScript 6
    • 在課程中穿插講解
    • 它只是一個新的語法
  • 。。。
  • 學習node不只會幫助打開服務端黑盒子,同時有助於學習高級內容
    • Vue.js
    • React
    • angular

 

  • node只有js文件,代碼通常爲 .js文件
  1. 建立編寫js文件
  2. 打開終端(命令行),定位到腳本文件所屬目錄
  3. 輸入node 文件名執行對應的文件,顯示結果

==注意:文件名不能使用node,最好也不要使用中文==node

  • 解析執行JavaScriptwebpack

  • 讀寫文件git

    • 使用fs模塊web

      var fs = require('fs'); 
    • 讀取文件chrome

      fs.readFile('路徑', '可選編碼', function (error, data) {});//具體查看代碼 
    • ==readFile方法的第二個參數爲可選參數,規定解析文件的編碼,可選擇utf-8編碼,讓他以網頁原文件的形式讀取,不是二進制數據==npm

    • 寫文件

      fs.writeFile(); 

==Node.js中經常使用回調函數做爲參數,由於是異步的==

  • HTTP
    • 詳見代碼。
    • ==服務器和web頁面通常使用字符串進行通訊==,所以json的傳遞須要轉化爲字符串
    • Ctrl+c能夠關閉服務器(bash和cmd同樣)
    • 在瀏覽器查看http請求中,有一個/favicon.ico路徑,該請求是瀏覽器的默認行爲,目的是請求網頁的網站頭像
    • ==響應內容只能是字符串或二進制數據(Buffer)。對象、數字、數組、布爾值都不行==,所以response.end()方法可以響應字符串和二進制數據

什麼是模塊化

  • 現實中的模塊化

    • 生產效率高
    • 維護方便,成本低
  • 程序中的模塊化

    • 開發效率高 一次編寫屢次使用
    • 方便維護了(維護的成本更低)模塊之間有高耦合低內聚的特色
  • 爲何要在 程序 中使用 模塊化的開發方式

    • 命名衝突
    • 文件依賴
相關文章
相關標籤/搜索