Node端與瀏覽器端JavaScript的相同與不同
關於Node端與瀏覽器端JavaScript的相同與不同, 可以概括為一下幾點:
1 相同點: nodejs与浏览器都是浏览器的运行环境,都能够解析js程序。对于ECMAScript语法来说,在nodejs和浏览器中都能运行。
也就是說, 凡是和JavaScript語法和JavaScript語言內置對象相關的東西, 在兩端都可以正常使用.
只不過是在瀏覽器端有一些額外內置的對象(模塊)類型(在全局對象window之下) , 具體參考Web API文檔.
在Node端也有一些額外內置的對象(模塊)類型(在全局對象global之下), 具體參考Node文檔.
全局對象是一個默認的環境, 想調用其中的屬性和方法可以直接進行調用, 不需要通過 (window.屬性) 或 (global.屬性) 等方式進行調用.
有一些相同概念的對象, 類似於File對象,
在Node中好像沒有File對象, 但是有對裝文件操作的API, 封裝在fs模塊(也可以理解為fs對象)中.
瀏覽器端由於無法對文件直接進行操作, 所有內置了File對象, 可以通過讀取文件到File對象中, 然後通過對象中的方法對文件進行操作.
兩者的結構不同, 所以兩者對文件的操作方法也不同, 但是同屬於JavaScript對象.
2 主要用到的不同點
1.内置对象不同
- 浏览器环境中提供了window全局对象
- NodeJS环境中的全局对象不叫window, 叫global
2.this默认指向不同
- 浏览器环境中全局this默认指向window
- NodeJS环境中全局this默认指向空对象{}
4.API不同
- 浏览器环境中提供了操作DOM和BOM相关的API
- NodeJS环境中没有HTML节点也没有浏览器, node是一门服务器技术,没有前台页面;
所以NodeJS环境中没有DOM和BOM。 - 總之就是各自的內置模塊不同, 可用的服務不同
5.I/O读写
与浏览器不同,我们需要像起他服务端技术一样读写文件,NodeJS提供了比较方便的组件。
而浏览器想在页面中直接打开一个本地的图片就麻烦了好多,而这些node都用一个组件搞定了。
6.模块加载
在NodeJS环境中提供了cmd的模块加载的API,Node还提供了npm
这种包管理工具,能更有效管理引用的库。