Node.js
1.簡介
- http://nodejs.cn/
Node.js發布于2009年5月,由Ryan Dahl開發,是一個基于Chrome V8引擎的JavaScript運行環境,使用了一個事件驅動、非阻塞式I/O模型, 讓JavaScript 運行在服務端的開發平臺,它讓JavaScript成為與PHP、Python、Perl、Ruby等服務端語言平起平坐的腳本語言。
Node.js對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下運行得更好,V8引擎執行Javascript的速度非??欤阅芊浅:茫贑hrome JavaScript運行時建立的平臺, 用于方便地搭建響應速度快、易于擴展的網絡應用。
2.npm部分常用命令
- npm -v 查詢npm的版本
- npm -version 查看所有模塊的版本
- npm search +包名 搜索包
- npm install/i +包名 安裝包
- npm remove/r +包名 刪除包
- npm install/i +包名 --save 安裝包并添加到依賴中
- npm install 下載當前項目所依賴的包
- npm install +包名 -g 全局安裝包(全局安裝的包一般都是一些工具)
通過npm下載的包都放到node_modules文件中,通過npm下載的包,直接通過包名引入即可
3.配置cnpm
可以使用定制的 cnpm (gzip 壓縮支持) 命令行工具代替默認的 npm:
$ npm install -g cnpm --registry=https://registry.npmmirror.com
4.Buffer(緩沖區)
- Buffer的結構和數組很像,操作的方法也和數組類似,它的元素為16進制的兩位數.
- 一個元素就表示內存中的一個字節.
- Buffer中的內存不是通過JavaScript分配的,而是在底層通過C++申請的.
- 也就是我們可以直接通過Buffer來創建內存中的空間.
- 數組中不能存儲二進制的文件,而buffer就是專門用來存儲二進制數據
- 使用Buffer不需要引入模塊,直接使用即可.
- Buffer所有構造函數都是不推薦使用的.
- Buffer的大小一旦確定,則不能修改,Buffer實際上是對底層內存的操縱
5.文件系統(File System)
- 文件系統簡單來說就是通過Node來操作系統中的文件
- 使用文件系統,需要先引入fs模塊,fs是核心模塊,直接引入不需要下載
5.1同步和異步調用
- fs模塊中所有的操作都有兩種形式可供選擇:同步和異步
- 同步文件系統會阻塞程序的執行,也就是除非操作完畢,否則不會向下執行代碼.
- 異步文件系統不會阻塞程序的執行,而是在操作完成時,通過回調函數將結果返回.
5.1.1同步文件的寫入:
手動操作的步驟:
- 打開文件
fs.openSync(path, flags[, mode])
- path 要打開文件的路徑
- flags 打開文件要做的操作的類型:
r 只讀的
w 可寫的 - mode 設置文件的操作權限,一般不傳(參)
- 向文件寫入內容
fs.writeSync(fd, string[, position[, encoding]])
- fd 文件的一個描述符,需要傳遞要寫入的文件的描述符
- string 要寫入的內容
- position 寫入的起始位置
- encoding 寫入的編碼 默認UTF-8
- 保存并關閉文件
fs.closeSync(fd)
- fd 要關閉的文件的描述符(哪個文件 )
5.1.2異步文件的寫入
- 打開文件
fs.open(path[, flags[, mode]], callback)
- 用來打開一個文件
- 異步調用的方法,結果都是通過回調函數的參數返回的
- 回調函數兩個參數:
err 錯誤對象,如果沒有錯誤則為null
fd 文件描述符
- 向文件寫入內容
fs.writeSync(fd, string[, position[, encoding]],callback)
- 用來異步寫入一個文件
- 保存并關閉文件
fs.close(fd,callback)

5.2簡單文件寫入

常用的:(讀:r,寫:W,追加:a)
- 打開狀態

- 范例:

5.3流式文件寫入
同步-異步-簡單文件的寫入都不適合大文件的寫入,性能較差,容易造成內存溢出.




5.4簡單文件讀取與流式文件讀取


- 簡單讀取:

- 流式讀取:

以上內容真正寫項目時反而不使用,這些東西都是服務器或框架底層使用的.
5.5 fs其他模塊

- 使用范例代碼:










浙公網安備 33010602011771號