路過回一下 JavaScript 的部分的我的觀察
首先那些方言都是各自有其出現的原因就不多說了
其實專業的 IDE 也算是有,微軟的 VS 就有支援 JS 專案開發
不過大部分這領域的開發者都已經習慣現在的開發方式了
所以用 VS 開發一直也沒成為主流,倒是後來的 VSCode 有打進大家習慣的開發模式
然後 JavaScript 作為編譯目標其實也是無可奈何
因為 Web(Browser) 上現在就是只有這個標準的程式語言
其實我在 wasm 出來之前確實是有相信過這是個未來
不過 wasm 出現後我覺得以後會分兩塊
一是現在的 web application 那類的應用
另一種是 native app 直接 compile 成 wasm 在網路上用
像是遊戲或是有比較吃繪圖需求的應用之類的
甚至是複雜到不會想重寫的應用
ES Module 的部分我個人是認為不會直接在 web 上用啦
就是如果你的專案是 web application 的話,還是會用 bundle 處理過
例如包成一個大的 module 之類的,瀏覽器才來讀
不然就算 HTTP/2 其實也是會慢很多
畢竟 code 要下載來 parse 過才知道還有哪些 module
不是直接有個清單給瀏覽器說總共有這些 module 要
就算有其實也是會多不少 HTTP Header
總傳輸量也是有影響
btw 我也是比較喜歡 rollup 的~
然後其實我覺得這些都還好
這兩年最讓我感到不可思議的其實是 React Native Web 了
真的是腦洞大開
最後補一下 JavaScript 算不算 compiled language 這幾年其實已經有不同意見了
2004 年 YDKJS 作者就認為他不是 script 了
不過其實這都有點像是每個人的想法不一樣的意見歧異
※ 引述《shter (飛梭之影)》之銘言:
: 2.高階語言是用來編譯成低階語言執行
: 機器語言 > 組合語言 > Basic , C , COBOL ..... 以前書上大概是這樣寫發展的
: 這個道理很容易理解,每一門語言最終目標都是編譯成機器語言執行
: 後來 JAVA 跟 .NET 出現了虛擬機器、CLR、中繼層之類的概念
: 我包一層中繼,你用什麼寫都行,要在什麼環境上跑都好,交給我來處理
: 當然早期這樣包一層中繼是有執行效率問題的,以前 IE 3 看到咖啡就直覺要變慢了
: 後來看到 Flash 就想到耗能、吃資源....
: 到這邊都還可以理解,但近年前端生態真的讓人哭笑不得
: Javascript 幾乎是非常好上手的語言了,可是還跑出 Coffe Script、Type Script
: 甚至用它自己 (ES6) 寫的 都要用工具編譯成 ES5 code 再跑
: 從以前隨寫隨用變成至少要搞 babel 跟 webpack 或 rollup 之類東西弄開發環境
: 甚至其他語言也有許多以編譯成 Javascript 當目標的專案
: 結果現在寫 Javascript 要編譯卻又沒有專業的 IDE
: source map + live server + live update + console 盡量做到最友善的開發體驗
: 會有感而發是因為還有一個以前教科書說請大家不要用的 eval
: 現在卻變成 webpack 開發良伴,看了一下轉譯的 code 那精美的 eval 令人興奮
: 在這個什麼都可以轉譯到 Javascript 的時代,它幾乎快變成組合語言的感覺
: 大家都要轉成它,它再餵給瀏覽器或 node.js 或其他 Runtime 跑
: 在可預見的未來,Progressive Web App 應該會繼續 Javascript 榮光
: 還真是任何可以用 Javascript 寫的東西,最終都將用 Javascript 寫
: 在瀏覽器實做 ESModule 的現在,有機會回到過去不用再編譯了嗎?
: 看著 webpack 包出來的東西有點頭痛
: 不知道 vue-cli 有沒有辦法把打包工具換成 rollup ?
: 反正 CSS 也不要輸出實體檔了,通通包進 Javascript inline code 裡塞到 head