Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境,是一個讓 JavaScript 運行在服務端的開發平台,它讓 JavaScript 成為與PHP、Python、Perl、Ruby 等服務端語言平起平坐的腳本語言。
JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言。js(JavaScript)是一種高級的、解釋型的編程語言;它是一門基於原型、函數先行的語言,是一門多范式的語言,它支持面向對象編程,命令式編程,以及函數式編程。
傳統的js是運行在瀏覽器上的,因為瀏覽器內核分為兩個部分:
- 渲染引擎---渲染HTML和CSS
- JavaScript 引擎---負責運行 JavaScript
如果要執行JavaScript代碼,需要一個js引擎,你可以安裝一個瀏覽器(內置js引擎),或nodejs環境(內置js引擎),如果你在js代碼中調用了瀏覽器提供的API,則必須安裝一個瀏覽器,若調用了nodejs API,則必須安裝nodejs環境,然后以各自規定的方式加載、執行JavaScript代碼。
node.js與js的區別:
1、node.js是平台,Js是編程語言;
2、js是客戶端編程語言,需要瀏覽器的JavaScript解釋器進行解釋執行;
3、node.js是一個基於Chrome JavaScript運行時建立的平台,它是對Google V8引擎進行了封裝的運行環境;
4、node.js就是把瀏覽器的解釋器封裝起來作為服務器運行平台,用類似JavaScript的結構語法進行編程,在node.js上運行。
5、node.js與js組成不同
JavaScript:
-
ECMAScript(語言基礎,如:語法、數據類型結構以及一些內置對象)
-
DOM(一些操作頁面元素的方法)
-
BOM(一些操作瀏覽器的方法)
Node.js:
-
ECMAScript(語言基礎,如:語法、數據類型結構以及一些內置對象)
-
OS(操作系統)
-
file(文件系統)
-
net(網絡系統)
-
database(數據庫)
6、頂層對象不同
在JS中的頂層對象是window對象,但是在node中沒有什么window對象,node中的頂層對象是global對象。這就是二者的差異性。
在window對象中,定義一個全局變量是可以通過Window來訪問的,但是在node中是不能通過global對象來訪問的
優缺點:
1.原生js運行文件依賴於瀏覽器;
2.nodejs運行文件的時候服務為終端;
3.原生js有兼容性問題,nodejs不存在兼容性問題;
4.nodejs可以進行本地的讀寫,服務器搭建,連接數據庫等,而原生js無法做到。
(1)使用node開發還可以使用node自有配套的npm包管理工具:
npm是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種:
允許用戶從npm服務器下載別人編寫的第三方包到本地使用。
允許用戶從npm服務器下載並安裝別人編寫的命令行程序到本地使用。
允許用戶將自己編寫的包或命令行程序上傳到npm服務器供別人使用。
Node.js 的使用包管理器 npm來管理所有模塊的安裝、配置、刪除等操作,使用起來非常方便。
(2)node本身就是一個服務端的框架,對於一些簡單的項目,我們可以不需要后端配合,直接用node進行數據庫的增刪改查(但是我們一般不使用這個功能);
(3)nodejs是一個服務js平台,有自身帶的npm(基於 Node.js的前端項目包管理工具),有第三方的grunt(基於 Node.js的前端項目構建工具即即腳手架)、有第三方的express(路由功能)等強大的代碼與項目管理應用。還有自身帶的webpack(基於 Node.js的前端項目部署打包工具),v8(谷歌客戶端瀏覽器javascript引擎)等強大的功能。
npm(包管理工具)是基於 Node.js的前端項目包管理工具,是項目中對各種程序包的依賴管理,傳統的開發項目主要是后端,現在技術在更新,前端有了框架的開發模式管理,也需要用包管理工具的思想去管理,目的是簡化第三方程序包在項目中引用復雜化。前端的js包是全世界JavaScript 天才開發共享的各種代碼模塊,把這些代碼模塊都按照一個獨立的軟件功能統一在一個庫中,一個代碼模塊是一個程序包(package,即代碼模塊)。
詳述:
就前端來說nodejs具有划時代的意義,
做前端的沒用過nodejs都不好意思說自己是前端,
做后端的沒聽過nodejs,
或者說不出nodejs和java的優缺點,也不是一個合格的后端。
nodejs不是一個js框架,千萬不要認為是類似jquery的框架,
nodejs是js運行時,運行環境,類比java中jvm,
java的開端是什么,無疑是jvm,自從有了jvm,java才能吹牛說自己是“一次編寫處處運行”,
不管你是windows還是linux,只要安裝了對應版本的jvm都可以運行.class文件。
同樣nodejs的作用和jvm的一樣一樣的,也是js的運行環境,不管是你是什么操作系統,
只要安裝對應版本的nodejs,那你就可以用js來開發后台程序。
這具有划時代的意義,意味着一直以來只能在瀏覽器上玩來玩去的js,可以做后端開發了,
從有了nodejs后就催生出一大批用js做后台開發的前端人員,這部分人員就是偏前端的“全棧程序員”。
記住,nodejs是和jvm同等地位的js運行環境,打開了前端人員走向后端的道路。