本文轉自互聯網!前端
首先很遺憾的一點是,「PHP雖然是最好的語言」,可是它不是最流行的語言。數據庫
對不起的還有剛剛在4月TIOBE編程語言排行榜上榜的各個語言:編程
大家都很棒,可是大家都擔當不了這個大任。瀏覽器
開始以前,我先說一下我經常使用的三個語言:Java、JavaScript、Python。架構
Java,讓我學到了不少架構層級的知識,這一點能夠參考我以前寫的架構相關文檔。雖然我一點兒也不喜歡這個語言,可是它真的很棒。框架
Python,它真的足夠簡單,以致於我喜歡拿它學習各類理論知識,如推薦系統、貝葉斯定理、天然語言處理等等。編程語言
JavaScript,看下文。編輯器
在過去我閱讀的一些書籍裏面,主要是以Processing做爲可視化的語言——它起始於2001年,它最初是面向美術工做者和設計者建立的,後來變成了全面的設計和原型工具,能夠用於建立複雜數據可視化領域。工具
Processing被帶入了到Web領域產生了Processing.js,還出現了D3.js。性能
固然還有Plotly、Leaflet、Sigma JS等等的工具。
接着就是PhoneGap(今天的Cordova),將WebView帶向了移動應用,也將JavaScript帶向了移動應用。
使用Cordova,可讓咱們一次開發多平臺發佈。咱們也順便提一下Ionic,做爲混合應用的翹楚:
既然咱們已經提到了Cordova,那麼咱們也應該說說React Native。也是一次開發屢次運行:
雖然它的坑還有不少,可是仍是值得期待的。
正是V8的性能將JavaScript帶到了一個新的高度,因而Node.js誕生了——前端、後臺均可以用JavaScript,一個JavaScript的全棧時代。
Mongodb做爲數據庫,Express做爲Server端MVC,他們能夠提供一個RESTful服務,那麼再加上MVVM框架的Angular.js,你就知道我在說什麼。
NW.js 是基於 Chromium 和 Node.js 運行的,它們可讓咱們用HTML和JavaScript來製做桌面應用。除了NW.js還有最近比較火的Electron,Atom編輯器的
與Cordova的多平臺構建多版本不一樣的是,Electron能夠在一個平臺上構建多個平臺的應用。即咱們能夠在Mac OS上打包出Linux和Windows上的應用,而不須要在Windows再編譯一次。
帶向了桌面端,讓桌面和Web保持了一致。最成功的案例就是估值達30億美圓的Slack:
So,若是你使用桌面端的Slack就會很卡~
還記得我寫的那篇《一份代碼構建移動、桌面、Web全平臺應用》,在Eletcron上運行Ionic,就意味着無限的可能性。
能用Web開發的事情就用Web來完成就行了。
自從WebGL被帶入瀏覽器的那一刻,就決定了這又是一個新的天地。
讓咱們忘記編譯、啓動更新、外掛等等的問題,而且咱們還能夠一次開發直接運行。
若是你看到過以前的那篇《JavaScript在VR世界的應用》,那麼你就會對這個內容有更多的印象。
主要思想仍是經過WebView來渲染VR視角:
而且各瀏覽器產商各在推動WebVR 爲虛擬現實設備顯示提供支持。
雖然大部分的AR應用可能離咱們有點遠,可是離咱們最近的就是Leap Motion——它能夠利用手掌和手指動做來進行輸入,但無需手部接觸或者觸摸。
同理於VR,讀取傳感器的數據,再將其手勢交由瀏覽器端來處理。詳細能夠參考我以前寫的:《Leap Motion JavaScript開發 手勢控制基礎篇》。
早先我看到了Arduino在編譯的時候,以DSL的方式封裝了API。而NodeMCU則內建了Lua語言的支持,可讓開始者使用Lua來開始。 而Tessel 原生就提供了JavaScript運行環境,咱們寫須要寫好JavaScript就能夠在上面運行。
Tessel 2屬於配置比較高的硬件,而低配的呢?
三星設計了JerryScript引擎,它可以運行在小於64KB內存上,且所有代碼可以存儲在不足200KB的只讀存儲(ROM)上。
想一想就以爲將來是美好的。
等等,上面三星推出的是IoT.js,這就意味着它已經能夠在物聯網領域中應用了,爲何還會有這裏的應用呢?我只是想稍微提一下這個:
上面說到的只是Node.js在Web中的應用,而物聯網和Web的很大不一樣之處在於,物聯網可使用各類不一樣的協議,而這些協議都須要Node.js對其的支持。
所以,若是咱們須要開始Web版、移動應用,那麼咱們天然更須要其做爲後臺。
雖然更好的機器帶來了更好的性能,可是顯然人們對於原生應用的需求並無那麼強烈。Firefox OS已經在移動操做系統敗下陣來,可是這個操做被帶到了物聯網領域:
這就意味着,咱們可使用JavaScript來開發操做系統的界面了。
你以爲JavaScript還能作什麼?