[閒聊] 有關 JavaScript 的生態圈已刪文

看板Ajax作者 (Neisseria)時間7年前 (2017/03/27 17:01), 7年前編輯推噓17(17049)
留言66則, 14人參與, 最新討論串1/1
我這樣寫可能會被當 troll 不過,小弟並不是要刻意引戰 只是好奇這個現象 國外有關 JavaScript 的應用相當廣泛 從原先運行在瀏覽器中,擴展到伺服器端、桌面端、行動端等 最近 StackOverflow 的調查中 JavaScript 是最多人用的語言 在一些語言排名中 也都排在很前面的順位 但其實 JavaScript 本身問題不少 而需要一些 transpilers 去克服其缺陷 像是 CoffeeScript、TypeScript、Babel (ES6) 等 除了在瀏覽器中一定要運行 JavaScript 外 其他應用情境其實都有其他的方案可代替 但 JavaScript 看起來還是很紅 這幾年陸續有新的框架 大家覺得是怎麼回事呢? 純閒聊,理性勿戰 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.71.94.20 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1490605318.A.765.html ※ 編輯: Neisseria (203.71.94.20), 03/27/2017 17:03:04

03/27 17:51, , 1F
JavaScript 成立匆匆,以往只要待在瀏覽器還勉強可以,但
03/27 17:51, 1F

03/27 17:51, , 2F
node.js 出現後,若要身為一個前後端兼顧的語言,有很多地
03/27 17:51, 2F

03/27 17:51, , 3F
方需要補足,所以一直有新的框架要試圖解決這些問題。加上
03/27 17:51, 3F

03/27 17:52, , 4F
它易學(但難精)的特色讓很多人嘗試入門,生態圈變化很快
03/27 17:52, 4F

03/27 17:52, , 5F
03/27 17:52, 5F

03/27 21:46, , 6F
js生態很怪. 很喜歡把語言的缺陷當作一種"專業", 然後將
03/27 21:46, 6F

03/27 21:50, , 7F
一些CS常識和API用法(和坑)當成更了不起的"專業". 同一
03/27 21:50, 7F

03/27 21:54, , 8F
個問題翻來覆去做十幾遍, 小問題可以解決幾百遍, 最後
03/27 21:54, 8F

03/27 21:55, , 9F
這些疊床架屋混亂不堪的工具竟然比語言本身更坑. 當然,
03/27 21:55, 9F

03/27 21:56, , 10F
了解這些坑(並製造新的坑)又變成新的專業了...
03/27 21:56, 10F

03/27 23:56, , 11F
缺陷是指什麼
03/27 23:56, 11F

03/28 11:19, , 12F
可以理解樓樓上的意思...所以目前我還在原生JS...
03/28 11:19, 12F

03/28 11:20, , 13F
要去學框架會突然難度暴增...就卻步了
03/28 11:20, 13F

03/29 10:09, , 14F
所以缺陷是啥
03/29 10:09, 14F

03/29 10:19, , 15F
hoisting, var/let scoping, undefined/null, prototype
03/29 10:19, 15F

03/29 10:24, , 16F
this 都是明顯的重大設計失誤
03/29 10:24, 16F

03/29 10:32, , 17F
各種implicit conversion, arguments, statement和liter
03/29 10:32, 17F

03/29 10:39, , 18F
al的syntax混淆, boxing type 都是坑
03/29 10:39, 18F

03/29 12:54, , 19F
除了this在某些狀況設計錯誤外,不認為其他是失誤~
03/29 12:54, 19F

03/29 14:30, , 20F
不是失誤的話請問用意/好處是什麼?
03/29 14:30, 20F

03/29 22:52, , 21F
let scope 有甚麼問題? var 才是有問題的吧
03/29 22:52, 21F

03/29 22:53, , 22F
JS 早期是在瀏覽器上很紅, 擴展到其他方面主要是 Node 的
03/29 22:53, 22F

03/29 22:54, , 23F
非同步 IO, 因為設計之初就直接以非同步 API 為基本
03/29 22:54, 23F

03/29 22:55, , 24F
不像其他語言需要額外的 library 去做, 加上開發者早就
03/29 22:55, 24F

03/29 22:55, , 25F
習慣在瀏覽器上寫非同步呼叫的程式碼
03/29 22:55, 25F

03/29 22:56, , 26F
至於新框架層出不窮的問題...真的很頭痛...
03/29 22:56, 26F

03/30 00:58, , 27F
1. let 仍然會 hoist. 意即你看到每個變數都要往後找才
03/30 00:58, 27F

03/30 01:00, , 28F
能確定它的scope 2. 同時有var/let更是累贅
03/30 01:00, 28F

03/30 01:07, , 29F
3. 如第1點, 每次用let宣告也要往前找, 才能確認是否會
03/30 01:07, 29F

03/30 01:07, , 30F
蓋掉原本的upvalue(使其進入TDZ)
03/30 01:07, 30F

03/30 07:27, , 31F
樓上覺得如果不往後找,往 global 找會比較好嗎?
03/30 07:27, 31F

03/30 07:27, , 32F
var 純綷是向後相容性
03/30 07:27, 32F

03/30 11:30, , 33F
語言特性而已,如果你一開始寫js,後來才寫其他語言~
03/30 11:30, 33F

03/30 11:30, , 34F
那你不會覺得其他語言沒有hoisting很奇怪?
03/30 11:30, 34F

03/30 13:15, , 35F
語言特性不代表不是設計錯誤,不好的設計就是不好的設計
03/30 13:15, 35F

03/30 13:16, , 36F
如果一開始寫js,後來才寫其他,不會覺得奇怪,而會覺得果
03/30 13:16, 36F

03/30 13:16, , 37F
然語言是可以設計的更好的
03/30 13:16, 37F

03/30 14:21, , 38F
樓上也覺得往 global 找更好?我覺得大家可以把缺陷、缺陷
03/30 14:21, 38F

03/30 14:22, , 39F
原因、更好的做法等直接回一篇
03/30 14:22, 39F

03/30 14:22, , 40F
不覺得現在的 JS 有什麼不好的,寫法泛用性佳
03/30 14:22, 40F

03/30 14:22, , 41F
真正的問題反而是對 transpilers 的依靠
03/30 14:22, 41F

03/30 14:23, , 42F
JS就是希望一種寫法可以應用在各種層面
03/30 14:23, 42F

03/30 14:24, , 43F
結果弄一堆transpilers讓"寫"的人反而不熟真正的JS
03/30 14:24, 43F

03/30 14:24, , 44F
不用編譯直接執行的優點也因此被打壞,而且還不是真編譯
03/30 14:24, 44F

03/30 14:25, , 45F
只是個轉譯,對執行效率沒有太大的幫助
03/30 14:25, 45F

03/30 14:25, , 46F
然後再弄一堆雜七雜八的套件,套件又每個都搞自己語法
03/30 14:25, 46F

03/30 14:26, , 47F
對,JSX,我就是在說你
03/30 14:26, 47F

03/30 14:30, , 48F
結果導致無印、jQuery、YUI、Backbone、React..各種時代
03/30 14:30, 48F

03/30 14:31, , 49F
入場的 JS 工程師對同一個問題的解法觀點可以天差地遠
03/30 14:31, 49F

03/30 14:33, , 50F
甚至出現每個都說自己熟JS,每個自己獨立開發都很厲害
03/30 14:33, 50F

03/30 14:33, , 51F
但是專案放在一起開發時彼此都拖累對方拖累專案的情況
03/30 14:33, 51F

03/30 14:35, , 52F
別懷疑無印派,new XMLHttpRequest這行接某case還看到..
03/30 14:35, 52F

03/30 17:28, , 53F
用 Fetch 算無印派嗎 (逃
03/30 17:28, 53F

03/30 17:35, , 54F
eight0: 往上一層找很正常也很直覺
03/30 17:35, 54F

03/30 17:40, , 55F
會出現transpiler就是因為js缺點多在語言層次, 單純的
03/30 17:40, 55F

03/30 17:41, , 56F
封裝也無法解決, 所以才要設計新語言.
03/30 17:41, 56F

03/30 17:43, , 57F
就像asm太難寫所以發明了C語言和C compiler 一樣道理
03/30 17:43, 57F

03/30 17:48, , 58F
這幾年js語言的發展方向(es5,es6,typescript,...)都致力
03/30 17:48, 58F

03/30 17:49, , 59F
於消除原來js的坑(所謂的語言特性)
03/30 17:49, 59F

03/30 19:14, , 60F
JS的作者只花十天就寫出來的東西,當然坑一堆
03/30 19:14, 60F

03/31 05:59, , 61F
無印派是指vanilla js嗎 第一次聽到
03/31 05:59, 61F

03/31 18:12, , 62F
就像信長的服部拉刷 原本認為是BUG 但後來發現很吃技術
03/31 18:12, 62F

03/31 18:12, , 63F
就變成特色技能了
03/31 18:12, 63F

04/04 23:39, , 64F
因為用 dom 讀寫 html 很方便,
04/04 23:39, 64F

04/15 21:05, , 65F
他的確有很多坑人的地方 不過會吸引大大小小的開發者投入
04/15 21:05, 65F

04/15 21:05, , 66F
自然就是有他的優點 當然進入門檻或許是低了些..
04/15 21:05, 66F
文章代碼(AID): #1OsDK6Tb (Ajax)
文章代碼(AID): #1OsDK6Tb (Ajax)