首頁  >  文章  >  web前端  >  nodejs和瀏覽器的差別是什麼

nodejs和瀏覽器的差別是什麼

青灯夜游
青灯夜游原創
2021-11-12 13:48:143377瀏覽

區別:1、全域環境下,node中this指向global,而瀏覽器中this指向window;2、瀏覽器中可直接或間接的操作DOM和BOM,而node中不會操作DOM和BOM;3、瀏覽器無法執行nodejs中的檔案操作等功能。

nodejs和瀏覽器的差別是什麼

本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。

剛好最近有朋友諮詢我這個問題,那就簡單談談我理解的node環境和瀏覽器的差別,高手請略過。

一、全域環境下this的指向

  在node中this指向global而在瀏覽器中this指向window,這就是為什麼underscore中一上來就定義了一root;

var root = typeof self == 'object' && self.self === self && self ||
            typeof global == 'object' && global.global === global && global ||
            this;

  而且在瀏覽器中的window下封裝了不少的API 例如alert 、document、location、history 等等還有很多。我門就不能在node環境中xxx();或window.xxx();了。因為這些API是瀏覽器層級的封裝,存javascript是沒有的。當然node中也提供了不少node特有的API。

二、js引擎

  在瀏覽器中不同的瀏覽器廠商提供了不同的瀏覽器內核,瀏覽器依賴這些內核解釋折我們寫的js 。但考慮到不同核心的少量差異,我們需要對應相容性好在有一些優秀的函式庫幫助我們處理這個問題例如jquery、underscore等等。

  nodejs是基於Chrome's JavaScript runtime,也就是說,實際上它是對GoogleV8引擎(應用於Google Chrome瀏覽器)進行了封裝。 V8引 擎執行Javascript的速度非常快,效能非常好。

      NodeJS並不是提供簡單的封裝,然後提供API調用,如果是這樣的話那麼它就不會有現在這麼火了。 Node對一些特殊用例進行了最佳化,提供了替代的API,使得V8在非瀏覽器環境下運作得更好。例如,在伺服器環境中,處理二進位資料通常是必不可少的,但Javascript對此支援不足,因此,V8.Node增加了Buffer類,方便且有效率地 處理二進位資料。因此,Node不僅簡單的使用了V8,還對其進行了優化,使其在各環境下更加給力。

  js引擎都固定了,也對應神馬相容性。

三、DOM操作

  瀏覽器中的js大多數情況下是在直接或間接(某些虛擬DOM的函式庫和框架)的操作DOM。因為瀏覽器中的程式碼主要是在表現層工作。但是node是一門服務端技術。沒有一個前台頁面,所以我門不會再node中操作DOM。

nodejs和瀏覽器的差別是什麼

四、I/O讀寫

#  與瀏覽器不同,我們需要像其他服務端技術一樣讀寫文件,nodejs提供了比較方便的元件。而瀏覽器(確保相容性的)想在頁面中直接打開一個本地的圖片就麻煩了很多(別和我說這還不簡單,相對路徑。。。。。。試試就知道了要么找個庫要嘛二進位流,要嘛上傳上去有了網路位址在顯示。不然人家為什麼要搞一個js庫呢),而這一切node都用一個元件搞定了。

五、模組載入

  javascript有個特點,就是原生沒提供套件引用的API一次把要載入的東西全執行一遍,這裡就要看各位閉包的功力了。所用東西都在一起,沒有分而治之,搞的特別沒有邏輯性和復用性。如果頁面簡單或網站當然我們可以透過一些AMD、CMD的js庫(例如requireJS 和 seaJS)搞定事實上很多大型網站都是這麼幹的。

  在nodeJS中提供了CMD的模組載入的API,如果你用過seaJS,那麼應該上手很快。

  node也提供了npm 這種包管理工具,能更有效方便的管理我們飲用的庫

  當然瀏覽器這邊ES6也有這方面的補充,相信未來會更好。 。 。

  當然,關於node和瀏覽器的差別還有很多,我會隨時補充上。

【推薦學習:《nodejs 教學》】

以上是nodejs和瀏覽器的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn