js怎样和硬件交互_Node.js与JavaScript
有很多介紹nodejs的文章,也有很多教程,覆蓋了服務器開發、桌面開發、移動端等等,但是鮮有文章明確的回答過一個問題:Node是什么?
這看起來是一個再簡單過的問題了,真要答起來可不容易,不去深入研究的話可能會認為Node就是javascript,javascript就是Node,筆者最初也是這么認為的,但這種想法并不正確。
要尋求正確的答案首先要弄明白Node與JavaScript的關系,在Node官網是這樣描述的:
Node.js? is a JavaScript runtime built on Chrome's V8 JavaScript engine.
大概的意思就是Node是一個支持javascript的運行時(runtime),是用來完成運行腳本所需要的系統底層支持。嚴格的說來,Node支持的只是ECMAScript語法,它屬于javascript的一部分。
① ECMAScript:描述了該語言的語法和基本對象。
② DOM:文檔對象模型,處理網頁內容的方法和接口。
③ BOM:瀏覽器對象模型,與瀏覽器進行交互的方法和接口。
對于編程語言而言,語法的作用是面向開發者所體現的,最終交付于硬件執行的效果卻是體現在解釋/編譯器上的。Node采用C++實現與系統底層的互動,遵循的語法是ECMAScript,當然如果把內核的V8引擎更換一下,完全可以實現對Ruby或Python的支持。
為什么Node選擇了javascript?完全是因為出色的V8引擎。
Node.js里頭沒有DOM和BOM的操作,只保留的JavaScript的語法核心(ES), 并且增加了事件驅動的非阻塞 I/O 模型,使其輕量級和高效,并且V8是基于ECMAScript標準實現的,因此Node.js作為服務運行在Windows、Linux、Mac設備時,把JavaScript的角色從前臺開發,轉移到了后臺開發。
Node.js完成了javascript和硬件之間的溝通,充當翻譯官的角色。這過程中涉及了兩個重要的概念:
· runtime
· VM
最出名的runtime當屬VC++,借助微軟推出的VC++,開發者只需要編寫C/C++代碼即可完成Windows程序開發,而不需要考慮與硬件交互的底層操作。同樣的,V8在Node中作為javascript的runtime出現,,這與chrome內嵌V8的作用是一樣的,不過node針對IO做了更多的擴展,比如FS模塊的實現等等。
這里關于另一個概念VM,泛指二進制文件與硬件之間的交互層。作為開發者所熟知的對比,C++編譯后的二進制文件可以直接被系統調用,但對于java而言,編譯好的字節碼雖然也是二進制文件,單必須交給虛擬機運行,虛擬機完成與系統和硬件的互動。這樣的好處是開發者無需顧忌系統和硬件的差異,由虛擬機完成不同系統的抽象來實現同樣的運行時。
因此借助Node.js,目前出現了大批跨平臺的桌面端開發工具,比如老牌的NW.js和新興的electron等等。這也引起了javascript語言生命力大爆發,無論是傳統設備還是物聯網等各方面都能看到它的影子。
總結
以上是生活随笔為你收集整理的js怎样和硬件交互_Node.js与JavaScript的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧式装修多少钱啊?
- 下一篇: 可以用雪莉打吗?如果可以怎么打?