除了Web和Node,JavaScript還能作什麼

前言

提起JavaScript,咱們也許常常會想到的是,能夠用來寫Web頁面嘛,又或者,會想起Node.js 這個服務端環境,搞先後端同構。
那麼,除此以外, JavaScript還能夠作什麼?
 
JavaScript能夠
  • 經過electron.js建設跨平臺電腦桌面應用
  • 經過樹莓派和Node.js,溝通硬件
  • 作電視機機頂盒應用,例如藉助ntv.js
  • 從Hybird到React-Native,編寫跨平臺的混合APP,或者原生APP
  • 經過Cocos2d-x 框架或白鷺引擎,JS能夠開發流行遊戲
  • JS進行三維處理: WebGL和three.js
  • 作瀏覽器插件開發,例如Chrome插件
  • 作IDE插件開發,例如VScode編輯器的插件
  • 用JS寫一個操做系統?:NodeOS
  • 微軟開發的Node.js 多線程庫 Napa.js,讓JS也能擁抱多線程
(本文僅僅只是簡單介紹,不會介紹具體用法)
 

S1.經過electron.js建設跨平臺電腦桌面應用

若是你能夠建一個網站,你就能夠建一個桌面應用程序。 Electron 是一個使用 JavaScript, HTML 和 CSS 等 Web 技術建立原生程序的框架,它負責比較難搞的部分,你只需把精力放在你的應用的核心上便可。
  1. electron的實現基於Chromium 和 Node.js,並能夠調用
  2. 編碼完畢後,能夠一鍵生成Mac,windows,Linux三個不一樣平臺的應用程序
  3. electron能夠直接調用Node.js的API,以及溝通桌面應用程序的內置模塊
 

S2.能夠經過JS調用樹莓派接口,控制硬件

這裏首先要介紹下樹莓派, 樹莓派(Raspberry Pi )是一種只有信用卡大小的微型計算機,別看它小,但它「麻雀雖小,五臟俱全」,計算機有的許多基本功能,樹莓派也都有
 
學習硬件的同窗可能對樹莓派有一些瞭解。
樹莓派上有大量的GIPO接口,即輸入輸出接口,經過GIPO口,用戶能夠和硬件進行數據交互,或控制硬件。
樹莓派容許許多編程語言對GIPO接口進行控制,而JavaScript也是其中之一,也就是說,咱們能夠經過Node.js環境和樹莓派,從而控制硬件。
這樣的話,也許就能作一個好玩的智能小車玩一玩
 
 
參考資料

S3.作電視機機頂盒應用,例如藉助ntv.js

(注意:我搜索到的這方面的資料其實很是有限,可能有錯誤和紕漏,還請指正! )
當你打開電視機機頂盒的時候,你看到的可能仍是熟悉的HTML和JS,而它們被運行在一個看起來很不同的「瀏覽器」上,固然,爲了兼容電視機的接口,開發上可能存在不少細節上的不一樣,也正因如此,有積極熱心的人開發了一個框架,叫ntv.js, 用來兼容不一樣牌子數字電視的中間件接口。
 
本人其實對電視機這一塊不是很瞭解,可是經過閱讀文檔和相關資料,大概總結出如下內容
咱們平時觀看的電視軟件,有 東方有線網,電信IPTV網等 不一樣電視軟件公司, 這些電視軟件呢,又有不一樣的二級廠商提供給它們「中間件瀏覽器」 (終於看到一個我看得懂的詞了! 哭)
  1. 電信下提供中間件瀏覽器的廠商主要是 iPanel、天柏,中間件規範爲「IPTV2.0/3.0規範」
  2. 東方有線 下提供中間件的廠商主要是 iPanel、SHDV、聯彤
Ntv.js根據這些中間間瀏覽器提供的規範,實現了兼容統一的JavaScript接口,大概是這麼個意思
 

S4.經過Hybird開發混合APP,到後來經過React-Native編寫原生APP

(這件事情其實不用講也能夠,由於你們確定都比較瞭解了,但仍是陳述如下)
Hybird是一種混合開發應用,基於webview實現,經過ios/android下不一樣的接口,能夠實現JavaScript和Java/Object-C代碼的互通。單純使用ios/android原生實現,開發進度和成本受不了,而單純使用h5/js開發,頁面體驗更加受不了。Hybird的目的是實現H5和Naive二者之間的權衡。
Hybird開發中能看到許多H5的影子,影響其體驗,因此到後來,就出現了React-Native。
React-Native所編寫開發的並非Hybird那樣的混合應用,它編寫的是真正的原生應用。經過JavaScript和React框架的語法進行開發。
 
「從使用感覺上和用Objective-C或Java編寫的應用相比幾乎是沒法區分的。 React Native所使用的基礎UI組件和原生應用徹底一致。」 —— React-Native官網。
因此相比起Hybird, React-Native在下降開發成本的同時,儘可能優化了用戶的體驗。
固然了,RN也有許多缺點,這些就有勞諸位本身去查了,這裏不做贅述
其餘資料

S5.JS語經過Cocos2d-x 框架或白鷺引擎,能夠開發流行遊戲

Cocos2d-js
  1. Cocos2d-x是一套開源跨平臺的遊戲開發框架,適配ios/android/html5/Mac/windows多端,但功能側重於原生移動平臺
  2. 提供了圖形渲染、網絡、用戶、音頻、GUI 等功能。
  3. 核心採用C++編寫,支持JavaScript等語言進行開發
 
白鷺引擎(Egret)
  1. 白鷺爲開發者提供移動端遊戲開發一站式解決方案,並創建包含核心渲染引擎2D/3D、遊戲開發工具、創意動畫工具、資源工具、原生打包方案等全球首個HTML5完整工做流
  2. Egret中包含多個工具以及項目。而Egret Engine是一個基於TypeScript語言開發的HTML5遊戲引擎
 

S6.JS能夠進行三維處理: WebGL和three.js

WebGL (Web圖形庫) 是一種JavaScript API,也屬於HTML5的範疇。它能夠用於在任何兼容的Web瀏覽器中呈現交互式3D和2D圖形,而無需使用插件。WebGL經過引入一個與OpenGL ES 2.0緊密相符合的API,能夠在HTML5 <canvas> 元素中使用。
而Three.js是基於WebGL封裝的一個框架,能寫出在瀏覽器上流暢運行的3D程序
 

S7.作瀏覽器插件開發,例如Chrome插件

 
有的時候,爲了輔助開發,你可能會下載Chrome插件,Chrome插件下載完後呢,每每會在Chrome的右上角上有個本身的小圖標,點擊後會彈出菜單,而後經過對菜單進行操做就可使用相關功能,就像上面那個默認的小圖標的操做同樣=
其實Chrome插件裏的菜單的UI和交互也仍是HTML和JS實現的,咱們徹底能夠按照規範,定製本身的自定義Chrome插件,具體的作法參考如下
參考資料
 

S8.作IDE插件開發,例如VScode

咱們在使用VScode的時候,咱們發現,許多好用的插件大大加速了咱們的開發過程,那咱們能不能本身寫一個本身的插件呢? 這固然也是能夠的,道理和第5點是相似的,這裏很少闡述,參考
參考資料
 

S9.NodeOS: 屬於JS的操做系統

(固然了,JS寫操做系統,相對其餘語言來講確定是被動的,可是我以爲吧,閱讀其源碼有利於前端工程師去了解操做系統的組成和構造,就是一個學習的窗口吧)
NodeOS是一個由Node.js設計的操做系統,發佈於2015年。NodeOS的主要特色是:
  • 以Linux爲內核
  • 以Node做爲主要的運行時環境
  • 以npm做爲包管理器
  • 用戶自主的獨立文件系統
參考資料
Github地址
 

S10.微軟開發的Node.js 多線程庫 Napa.js,讓JS也能擁抱多線程

咱們都知道,理論上node.js是單線程的,適合處理IO密集型的任務,但也許不適合處理計算密集型的任務。而微軟提供了一個node的多線程的實現:Napa.js,讓JS也可以涉略計算密集型的任務。
Napa.js的做用
  • 支持多線程,擁抱計算密集型的任務
  • 支持JavaScript線程上的對象傳輸,對象共享功能
  • 提供了內存分配的API
參考資料
 

總結

這篇文章,說了些東西,也什麼都沒說。 但我認爲,相對於知道具體怎麼作一件事情,知道能作哪些事情,也許也一樣重要。
 
最後,歡迎你們多多補充
相關文章
相關標籤/搜索