node學習之node基礎篇

這幾天在學習node,以下的筆記主要是自己看《Node.js開發指南》的筆記,下面的內容主要是1到4章的

Node.js開發指南
  • 單線程異步式I/O事件驅動式的程序設計模型

  • Node.Js是可以讓JavaScript運行在服務器端的開發平臺

  • Node.js內建了一個HTTP服務器支持,也就是你可以輕而易舉地實現一個網站和服務器的組合

  • Node.js還可以部署到非網絡應用的環境下,比如一個命令行工具
    Node.js可以調用C/C++的代碼

  • Node.js在執行的過程中會維護一個事件隊列,程序在執行時進入事件循環等待下一個事件到來,每個異步式I/O請求完成后會被推送到事件隊列中,等待程序進程進行處理

  • 內存上下文切換??

  • 回調函數很重要

  • Node.js的異步機制是基于事件的,所有的I/O、網絡通信、數據庫查詢都以非阻塞的方式請求,返回的結果由事件循環處理

異步機制
事件循環

第三章 Node.js的快速入門

  • node script.js 其中script.js 就是腳本的文件名

  • node -e "console.log('Hello')"

  • Node的REPL模式,REPL(Read-eval-print loop),即輸入—求值—輸出循環

  • 兩次Ctrl+c退出該模式

node和php
  • 使用supervisor可以實現“熱加載
    supervisor 文件名

  • 當線程遇到I/O操作時候,不會以阻塞的方式等待I/O操作的完成或者數據的返回,而是將I/O請求發送給操作系統,繼續執行下一條語句。當操作系統完成I/O操作時候,以事件的形式通知I/O操作的線程,線程會在待定的時間處理這個事件

  • 單線程、非阻塞
    I/O部分和計算部分。通常I/O部分占用的時間比計算的部分多得多

多線程同步式
  • 異步式I/O傳統的多線程阻塞式I/O少了多線程的開銷
比較
  • EventEmitter

  • require不會重復加載模塊

  • 覆蓋exports
    exports
    使用module.exports = Hello 代替exports.Hello = Hello

  • CommonJs規范應該具備以下特征:

CommonJs
  • npm是node官方提供的包管理工具

  • 獲取一個包
    npm [install/i] [package_name]
    本地模式和全局模式
    npm [install/i] -g [package_name]

  • 本地模式不會注冊PATH環境變量,僅僅是把包安裝到node_modules子目錄下,其中的bin目錄沒有包含在PATH環境變量中,不能在命令行中調用

  • 使用全局模式安裝的包并不能直接在 JavaScript 文件中用require獲得,因為 require 不會搜索 /usr/local/lib/node_modules/

本地模式與全局模式
  • npm link 不支持Windows

  • 通過使用npm init可以根據交互式問答產生一個符合標準的package.json

  • npm pubilsh發布包 package.json中修改version字段,重新使用npm publish重新發布

  • node中的全局對象是global,所有的全局變量(除了global本身以外)都是global對象的屬性

  • process就是一個全局變量,即global對象的屬性。它用于描述當前node進程狀態的對象,提供一個與操作系統的簡單接口

  • process.nextTick(callback)的功能是為事件循環設置一項任務,Node.js會在下一次事件循環響應時候調用callback

  • 常用工具util是node的核心模塊,提供常用函數的集合,用于彌補核心JavaScript的功能過于精簡的不足

  • util.inherit(constructor,superConstructor)是一個實現對象間原型繼承的函數
    util.inspect(object,[showHidden],[depth],[])是將任意對象轉換成字符串的方法,通常用于調試或者錯誤輸出

  • 對于每個時間,EventEmitter支持若干個事件監聽器

  • Node標準庫提供了http模塊,其中封裝了高效的HTTP服務器和一個簡易的HTTP客戶端

  • http.Server是HTTP模塊中的HTTP服務器對象,用Node.js做的所有基于HTTP協議的系統,如網站、社交應用甚至代理服務器,都是基于http.Server實現的

經典實例
  • http.Server的事件
    對它的事件編寫響應函數即可實現http服務器的所有功能
    request
    connection
    close

  • http.createServer([requestListener])
    功能是創建一個HTTP服務器并將requestListener作為request事件的監聽函數

  • http.ServerRequest是HTTP請求的信息
    一般由http.Server的request事件發送的,作為第一個參數進行傳遞

以下3個事件用于控制請求體傳輸
data
end
close

  • http.ServerResponse是返回給客戶端的信息,決定了用戶最后能夠看到的內容。也是有http.Serverrequest事件發送的,作為第二個參數進行傳遞
重要成員函數
  • http模塊提供兩個函數http.requesthttp.get,功能是作為客戶端向http服務器發起請求

http.request(options,callback)發起http請求。option是類似關聯數組的對象,表示請求的參數,callback是請求的回調函數

1
結果
  • http.ClientRequest是由http.request或者http.get返回的對象,表示一個已經產生而且正在進行的http請求
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 總結一: [node.js總結](http://www.cnblogs.com/Darren_code/archi...
    xiumeiii閱讀 1,925評論 0 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,521評論 25 708
  • Node.js是目前非常火熱的技術,但是它的誕生經歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,641評論 2 41
  • 有個實驗是這樣的,兩人做生意,都有好處,但好處是我掙1元,你卻能掙100萬元。帶著這個假設去做調查,絕大多數人會說...
    伊蔥閱讀 352評論 0 0