nodejs(第一篇):nodejs是什么?JavaScript語言與node、nodejs的特點、nodejs可以做什么?安裝nodejs


一、nodejs是什么?

 

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。

Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。

簡單的說 Node.js 就是運行在服務端的 JavaScript,利用JavaScript在服務端進行編程。

Node.js是一個讓JavaScript運行在服務器端的開發平台,它讓JavaScript的觸角伸到了服務器端,可以與PHP、JSP、Python、Ruby平起平坐。

Node.js不是一種獨立的語言,與PHP、JSP、Python、Perl、Ruby的“既是語言,也是平台”不同,Node.js使用JavaScript進行編程,運行在JavaScript引擎上(V8)。

nodejs開發的構成就成利用npm開發的社區提供的大量的第三方包加上基本的ECMAScript腳本語言以及node平台提供的一系列編程接口進行編程。

二、JavaScript語言與node

JavaScript語言本身是指ECMAScript,語言本身不包含BOM、DOM,BOM、DOM是瀏覽器環境給JavaScript提供的編程接口對象,理論上DOM、window都是屬於BOM。

瀏覽器都有引擎,最少兩個,一個是渲染引擎,一個是JavaScript解析執行引擎。

Chrome V8引擎就是專門用來解析和執行JavaScript代碼的。

在所有瀏覽器中,Google chroome的V8引擎是最快的js腳本代碼解析執行引擎。性能非常好

以前的JavaScript就是只能在瀏覽器里運行,包含ECMAScript和BOM瀏覽器的東西。

node不是一門新語言,他只是把chrome V8引擎移植到自己的環境當中,在這個環境之上構建了一系列的底層API,給ECMAScript提供了一些特定環境的編程接口。

nodejs沒有BOM、DOM。

三、nodejs的特點

1、node.js是一個平台,或者說是一個運行環境。

2、node.js是一個基於Chrome JavaScript 運行時建立的一個平台,具體是基於Chrome V8引擎,V8引擎執行Javascript的速度非常快,性能非常好。

3、node.js旨在提供一種簡單的構建 快速、可伸縮網絡程序的方法。

4、使用事件驅動,非阻塞IO模型

5、輕量、可伸縮,適用於實時數據密集的交互應用。

6、單進程,單線程

四、nodejs可以做什么?

JavaScript解析器只是JavaScript代碼運行的一種環境,瀏覽器是JavaScript運行的一種環境,瀏覽器為JavaScript提 供了操作DOM對象和window對象等的接口。Node.js也是JavaScript運行的一種環境,Node.js為JavaScript提供了操 作文件、創建HTTP服務、 創建TCP/UDP服務等的接口,所以Node.js可以完成其他后台語言(Python、PHP等)能完成的工作。

1、Web開發:Express + EJS + Mongoose/MySQL

express是輕量靈活的Nodejs Web應用框架,它可以快速地搭建網站。Express框架建立在Nodejs內置的Http模塊上,並對Http模塊再包裝,從而實際Web請求處理的功能。

ejs是一個嵌入的Javascript模板引擎,通過編譯生成HTML的代碼。

mongoose是MongoDB的對象模型工具,通過Mongoose框架,可以進行訪問MongoDB的操作。

mysql是連接MySQL數據庫的通信API,可以進行訪問MySQL的操作。

通常用Nodejs做Web開發,需要3個框架配合使用,就像Java中的SSH。

 

2 、Web聊天室(IM):Express + Socket.io

socket.io一個是基於Nodejs架構體系的,支持websocket的協議用於時時通信的一個軟件包。socket.io 給跨瀏覽器構建實時應用提供了完整的封裝,socket.io完全由javascript實現。

 

 

3、 Web爬蟲:Cheerio/Request

cheerio是一個為服務器特別定制的,快速、靈活、封裝jQuery核心功能工具包。Cheerio包括了 jQuery核心的子集,從jQuery庫中去除了所有DOM不一致性和瀏覽器不兼容的部分,揭示了它真正優雅的API。Cheerio工作在一個非常簡單,一致的DOM模型之上,解析、操作、渲染都變得難以置信的高效。基礎的端到端的基准測試顯示Cheerio大約比JSDOM快八倍(8x)。Cheerio封裝了@FB55兼容的htmlparser,幾乎能夠解析任何的 HTML 和 XML document。

 

4、 REST開發:Restify

restify是一個基於Nodejs的REST應用框架,支持服務器端和客戶端。restify比起express更專注於REST服務,去掉了express中的template, render等功能,同時強化了REST協議使用,版本化支持,HTTP的異常處理。

 

5、 Web博客:Hexo

Hexo是一個簡單地、輕量地、基於Node的一個靜態博客框架。通過Hexo我們可以快速創建自己的博客,僅需要幾條命令就可以完成。

發布時,Hexo可以部署在自己的Node服務器上面,也可以部署github上面。對於個人用戶來說,部署在github上好處頗多,不僅可以省去服務器的成本,還可以減少各種系統運維的麻煩事(系統管理、備份、網絡)。所以,基於github的個人站點,正在開始流行起來….

 

6、Web論壇: nodeclub

Node Club是用 Node.js 和 MongoDB 開發的新型社區軟件,界面優雅,功能豐富,小巧迅速, 已在Node.js 中文技術社區 CNode 得到應用,但你完全可以用它搭建自己的社區。

 

7、Web控制台工具: tty.js

tty.js是一個支持在瀏覽器中運行的命令行窗口,基於node.js平台,依賴socket.io庫,通過websocket與Linux系統通信。特性:支持多tab窗口模型; 支持vim,mc,irssi,vifm語法; 支持xterm鼠標事件; 支持265色顯示; 支持session。

五、nodejs的歷史

  • 2008年左右,隨着 AJAX 的逐漸普及,Web 開發逐漸走向復雜化,系統化;

  • 2009年2月,Ryan Dahl 想要創建一個輕量級,適應現代 Web 開發的平台;

  • 2009年5月,Ryan Dahl 在 GitHub 中開源了最初版本,同年11月,JSConf 就安排了 Node 講座;

  • 2010年底,Joyent 公司資助,Ryan Dahl 也加入了該公司,專門負責 Node 的開發;

  • 2011年7月,在微軟的支持下登陸 Windows 平台。PS:node 的生產環境基本是在 Linux 下。

據 Node.js 創始人 Ryan Dahl 回憶,他最初希望采用 Ruby,但是 Ruby 的虛擬機效率不行。

注意:是 Node 選擇了 JavaScript,不是 JavaScript 發展出來了一個 Node。

NodeJS的作者說,他創造NodeJS的目的是為了實現高性能Web服務器,他首先看重的是事件機制和異步IO模型的優越性,而不是JS。但是他需要選擇一種編程語言實現他的想法,這種編程語言不能自帶IO功能,並且需要能良好支持事件機制。JS沒有自帶IO功能,天生就用於處理瀏覽器中的DOM事件,並且擁有一大群程序員,因此就成為了天然的選擇。

如他所願,NodeJS在服務端活躍起來,出現了大批基於NodeJS的Web服務。而另一方面,NodeJS讓前端眾如獲神器,終於可以讓自己的能力覆蓋范圍跳出瀏覽器窗口,更大批的前端工具如雨后春筍。

因此,對於前端而言,雖然不是人人都要拿NodeJS寫一個服務器程序,但簡單可至使用命令交互模式調試JS代碼片段,復雜可至編寫工具提升工作效率。

 

 

 

六、學習nodejs的預備知識基礎

Html

Css

JavaScript

簡單的linux命令行操作

七、安裝nodejs

windows環境下

環境 win7 --64位系統

(1)Node.js 安裝包(不推薦)

去 Node.js 的官網下載安裝包:

https://nodejs.org/en/

我們也可以在https://nodejs.org/en/download/releases/上下載歷史版本。

注意,我們以一定要用偶數版(V4、V6等),不要用奇數版(比如V5),因為奇數版不穩定。

我們並不推薦直接采用 Node.js.msi 安裝包進行安裝,不方便 node 的更新,原因如下:

  • 以前版本安裝的很多全局的工具包需要重新安裝;

  • 無法回滾到之前的版本;

  • 無法在多個版本之間切換(很多時候我們要使用特定版本)。

因此,我們暫時先不用安裝 Node.js,稍后用 NVM 的方式來安裝 Node.js。

 

(2)通過 NVM 安裝Node.js(推薦)

NVM:node.js version manager,用來管理 node 的版本。之所以需要這個工具,是因為 Node.js 的各種特性都沒有穩定下來,所以我們經常由於老項目或嘗新的原因,需要切換各種版本。

第一步:下載nvm安裝包

下載地址  github上下載最新版本:https://github.com/coreybutler/nvm-windows/releases

第二步:解壓縮,新建配置文件

在c盤創建文件夾C:\nodejsnvm,在nodejsnvm\nvm下面創建兩個文件夾nvm,nodejs

解壓壓縮包到C:\nodejsnvm\nvm

 

打開nvm中的【install.cmd】,出現命令窗口后根據提示點擊回車,出現下述狀態

在上面的目錄中,新建一個settings.txt文件,里面的內容填充如下:

root:C:\nodejsnvm\nvm  
path:C:\nodejsnvm\nodejs  
arch: 64 
proxy: none

  

上方內容的解釋:

  • root 配置為:當前 nvm.exe 所在的目錄

  • path 配置為:node 快捷方式所在的目錄

  • arch 配置為:當前操作系統的位數(32/64)

  • proxy 不用配置

配置淘寶鏡像

由於nvm默認的下載地址http://nodejs.org/dist/是外國外服務器,速度非常慢,因而可以切換到淘寶的鏡像,下載速度會快很多。

打開settings.txt,加入下面文件

 node_mirror: http://npm.taobao.org/mirrors/node/
 npm_mirror: https://npm.taobao.org/mirrors/npm/

  

 

第三步:配置環境變量

配置環境變量(右鍵 計算機 ->屬性->高級系統設置->環境變量)

1)配置【NVM_HOME】環境變量

2)配置【NVM_SYMLINK】環境變量

3)把配置好的兩個環境變量加到Path當中

在Path中填寫 %NVM_HOME%;%NVM_SYMLINK%;

第四步:測試是否成功

打開cmd命令窗口(開始->運行->輸入cmd 或 win鍵+r鍵->輸入cmd)

在命令窗口中輸入 nvm version

出現版本號后則為配置成功

 

第五步:用nvm安裝nodejs

使用nvm安裝node.js

在命令窗口輸入 nvm install latest latest為最新版本

 

默認將下載的node.js存放到nvmde后的文件路徑下,如

 

第六步使用Node.js

在命令行中輸入nvm use 10.16.3表示使用版本為10.16.3的Node.js

 

linux環境下

環境:centos7.7 64位

通過 NVM 安裝Node.js(推薦)

第一步安裝nvm

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

  

修改為淘寶源

在~/.bashrc里添加

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

  

修改文件

[nick@naive ~]$ vi ~/.bashrc
  
# .bashrc
​
# Source global definitions
if [ -f /etc/bashrc ]; then
​
# export SYSTEMD_PAGER=
​
# User specific aliases and functions
​
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This lo
ads nvm bash_completion
​
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

  


 

重新加載設置文件

source ~/.bashrc

  

 

第二步查看nvm是否安裝成功

nvm --version 可查看版本

  

第三步安裝nodejs

通過 nvm install <version>(版本號) 安裝指定版本

nvm install 6.9.0 安裝一個6.9.0版本的node

第四步測試node安裝是否成功

[nick@naive ~]$ node -v
v12.16.1
​

  

NVM 的常用命令

安裝指定版本的node:

nvm install 版本號 [arch]

  

比如:nvm install 4.2.2

 

卸載指定版本node:

nvm uninstall 版本號

  

 

切換使用指定版本的node,進行版本切換:

nvm use 版本號 [arch]

  

 

查看當前使用的 nvm 版本:

nvm -v

  

 

 

查看本地安裝的所有的 node 版本:

nvm list 或者nvm ls

  

 

在 查看 node 的版本:

node -v

  

 

列出遠程的node版本(linux下)

nvm ls-remote

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM