Node.js(爱前端) 一
一 Node.js 簡介
?1.1?官網?https://nodejs.org/en/
官網介紹:
Node.js是一個構建在 Chrome 瀏覽器V8引擎上的 JavaScript?運行環境。
Node.js 使用了事件驅動、非阻塞I/O模型,這些都使它輕量、好用。
Node.js 的包生態(npm),是世界上最大的開源庫生態系統。
?ps:?解決性能問題而發明的 Node.js
異步 I/O:絕大多數的網站 I/O 是非常多的,I就是 input 數據的讀取,O 就是 Output 數據的寫入,
但是 I/O 的時候 CPU 是命令磁盤去做事情,此時 CPU自己就閑置了
這種模式叫做同步 I/O?
同步(synchronous):當系統遇見了一個需要耗費大量時間的事情的時候,選擇死等。
異步(Asynchronous):當系統遇見了一個需要耗費大量時間的事情的時候,不死等,先做后面的事情,耗時事情做完之后,執行回調函數
Node.js 的哲學:是一個專注于實現高性能 Web 服務器優化的專家,幾經探索,幾經挫折后,
遇到 V8 而誕生的項目。
?
Node.js 向下兼容做的非常好,所有的高版本,會 deprecate(建議放棄)一些老版本的API,
但不會完全不支持
在 Node.js 和 io.js 首次融合的4.0.0版本中,開發者們可以看到其對 ES6 特性的擴展支持,
并且大多數都是默認啟用的,比如:classes、typed arrays、generators、Promises、Symbols、collections、arrow functions、block scoping)、template strings等等。
1.2 安裝
到官網下載(有穩定版,最新版)
路徑中不要有中文
安裝完成后: 命令行? $? node -v? 查看版本
注意 $ 符號是 Linux 系統中(后面會學習)命令行中普通用戶的表示符號,
注意,我們輸入的時候不要輸入 $,這里只是一個表示符號
$ cls? 清屏
$ node xxx.js? 運行 js 文件,可直接交文件拖進來
$ d: 到 d 盤
$ cd? xxx 進入 xxx 文件夾
?
此時有兩種運行環境
1 瀏覽器
2 node?
?
二 開發服務器
2.1 案例: (文件要放在 c 盤)
注意 node? 文件的路徑? ?絕對路徑?
?結束掛起??ctrl + c
此時 光標掛起,沒有返回,?表示此時 node 正在執行一個監聽
再瀏覽器:127.0.0.1:2000 回車 訪問?
如果你要修改程序,此時刷新瀏覽器沒用,必須 ctrl+c 打斷之后重新運行
頁面運行結果:
命令行 node 運行后,就是跑了一個服務器,若是 斷開(ctrl + c ),再訪問頁面就訪問不到了
在 node.js 文件的最后添加語句: console.log("node.js運行");? 會在 cmd 中 node運行后顯示
?
2.2 Node.js 是后臺的東西
NodeJS 是 JavaScript 工作在了服務器端,太牛逼啦!我們的JS現在上天入地!
?查看源代碼,如果代碼中有運算,比如: (3+4),我們發現數字 7 是直接寫上去的,
沒有 (3+4)的運算痕跡
原因就是 NodeJS 運行在服務器端,而不是瀏覽器端。
服務器計算了數字 7 之后,發給了瀏覽器就是扁平的、純粹的 HTML 了,沒有任何程序。
?
至此我們已經證明了 NodeJS 運行在服務器端。我們使用 JS 開始開發服務器:GET請求的處理、POST請求參數的處理、數據庫的增刪改查、Cookie、 session等等、路由。
?
?2.3 NodeJS 沒有服務器架構
Node.js 是一個讓 JavaScript 運行在服務器端的開發平臺,它讓 JavaScript 的觸角伸到了服務器端。
但 Node 似乎和其他服務器端語言比如 PHP、ASP、JSP 有點不同:
● Node.js?不是一種獨立的語言,與 PHP、JSP、Python、Perl、Ruby 的“既是語言,也是平臺”不同,Node.js的使用JavaScript進行編程,NodeJS是一個工具,語言仍然是 JavaScript。
● 與 PHP、JSP 等相比,Node.js 跳過了 Apache、Tomcat、Nginx、IIS 等 HTTP 服務器,它自己不用建設在任何服務器軟件之上。Node.js 的許多設計理念與經典架構(LAMP)有著很大的不同,可以提供強大的伸縮能力。
Node.js 自身哲學,是花最小的硬件成本,追求更高的并發,更高的處理性能
Node.js 沒有根目錄的概念。
?
三 Node.js 特點
3.1 單線程
在 Java、PHP 或者 .net 等服務器端語言中,會為每一個客戶端連接創建一個新的進程。而每個進程需要耗費大約 2MB 內存。也就是說,理論上一個 8GB 內存的服務器可以同時連接的最大用戶數為 4000 個左右。要讓 Web 應用程序同時支持更多的用戶,就需要增加服務器的數量或者增加服務器的內存數,而 Web 應用程序的硬件成本當然就上升了。
Node.js 不為每個客戶連接創建一個新的線程,而僅僅使用一個線程(thread)。當有用戶連接了,就觸發一個內部事件,通過非阻塞I/O、事件驅動機制,讓 Node.js 程序宏觀上也是并行的。使用 Node.js,一個8GB內存的服務器,可以同時處理超過4萬用戶的連接。
另外,單線程的帶來的好處,還有操作系統完全不再有線程創建、銷毀的時間開銷。
?
輸出中文亂碼: 查 node API:? http 模塊? ?ctrl + f :? ?setHeader 選擇??response.setHeader('Content-Type', 'text/html;charset=utf-8');
?文件的保存類型也要設置為 utf-8
?
寫 路徑 時? ./ 在linux 必須加
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/Bijou/p/10211459.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Node.js(爱前端) 一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swoole 协程channel乱测
- 下一篇: 2017年html5行业报告,云适配发布