[閒聊] 有關 JavaScript 的生態圈

作者: Neisseria (Neisseria)   2017-03-27 17:01:55
我這樣寫可能會被當 troll
不過,小弟並不是要刻意引戰 只是好奇這個現象
國外有關 JavaScript 的應用相當廣泛
從原先運行在瀏覽器中,擴展到伺服器端、桌面端、行動端等
最近 StackOverflow 的調查中 JavaScript 是最多人用的語言
在一些語言排名中 也都排在很前面的順位
但其實 JavaScript 本身問題不少
而需要一些 transpilers 去克服其缺陷
像是 CoffeeScript、TypeScript、Babel (ES6) 等
除了在瀏覽器中一定要運行 JavaScript 外
其他應用情境其實都有其他的方案可代替
但 JavaScript 看起來還是很紅 這幾年陸續有新的框架
大家覺得是怎麼回事呢?
純閒聊,理性勿戰 XD
作者: jmlntw (吉米林)   2017-03-27 17:51:00
JavaScript 成立匆匆,以往只要待在瀏覽器還勉強可以,但node.js 出現後,若要身為一個前後端兼顧的語言,有很多地方需要補足,所以一直有新的框架要試圖解決這些問題。加上它易學(但難精)的特色讓很多人嘗試入門,生態圈變化很快。
作者: bibo9901 (function(){})()   2017-03-27 21:46:00
js生態很怪. 很喜歡把語言的缺陷當作一種"專業", 然後將一些CS常識和API用法(和坑)當成更了不起的"專業". 同一個問題翻來覆去做十幾遍, 小問題可以解決幾百遍, 最後這些疊床架屋混亂不堪的工具竟然比語言本身更坑. 當然,了解這些坑(並製造新的坑)又變成新的專業了...
作者: eight0 (欸XD)   2017-03-27 23:56:00
缺陷是指什麼
作者: sthermit ( )   2017-03-28 11:19:00
可以理解樓樓上的意思...所以目前我還在原生JS...要去學框架會突然難度暴增...就卻步了
作者: VdustR (京)   2017-03-29 10:09:00
所以缺陷是啥
作者: bibo9901 (function(){})()   2017-03-29 10:19:00
hoisting, var/let scoping, undefined/null, prototypethis 都是明顯的重大設計失誤各種implicit conversion, arguments, statement和literal的syntax混淆, boxing type 都是坑
作者: chatnoir (對不起)   2017-03-29 12:54:00
除了this在某些狀況設計錯誤外,不認為其他是失誤~
作者: bibo9901 (function(){})()   2017-03-29 14:30:00
不是失誤的話請問用意/好處是什麼?
作者: s25g5d4 (function(){})()   2017-03-29 22:52:00
let scope 有甚麼問題? var 才是有問題的吧JS 早期是在瀏覽器上很紅, 擴展到其他方面主要是 Node 的非同步 IO, 因為設計之初就直接以非同步 API 為基本不像其他語言需要額外的 library 去做, 加上開發者早就習慣在瀏覽器上寫非同步呼叫的程式碼至於新框架層出不窮的問題...真的很頭痛...
作者: bibo9901 (function(){})()   2017-03-30 00:58:00
1. let 仍然會 hoist. 意即你看到每個變數都要往後找才能確定它的scope 2. 同時有var/let更是累贅3. 如第1點, 每次用let宣告也要往前找, 才能確認是否會蓋掉原本的upvalue(使其進入TDZ)
作者: eight0 (欸XD)   2017-03-30 07:27:00
樓上覺得如果不往後找,往 global 找會比較好嗎?var 純綷是向後相容性
作者: chatnoir (對不起)   2017-03-30 11:30:00
語言特性而已,如果你一開始寫js,後來才寫其他語言~那你不會覺得其他語言沒有hoisting很奇怪?
作者: ssccg (23)   2017-03-30 13:15:00
語言特性不代表不是設計錯誤,不好的設計就是不好的設計如果一開始寫js,後來才寫其他,不會覺得奇怪,而會覺得果然語言是可以設計的更好的
作者: eight0 (欸XD)   2017-03-30 14:21:00
樓上也覺得往 global 找更好?我覺得大家可以把缺陷、缺陷原因、更好的做法等直接回一篇
作者: visa9527 (高級伴讀士官長)   2017-03-30 14:22:00
不覺得現在的 JS 有什麼不好的,寫法泛用性佳真正的問題反而是對 transpilers 的依靠JS就是希望一種寫法可以應用在各種層面結果弄一堆transpilers讓"寫"的人反而不熟真正的JS不用編譯直接執行的優點也因此被打壞,而且還不是真編譯只是個轉譯,對執行效率沒有太大的幫助然後再弄一堆雜七雜八的套件,套件又每個都搞自己語法對,JSX,我就是在說你結果導致無印、jQuery、YUI、Backbone、React..各種時代入場的 JS 工程師對同一個問題的解法觀點可以天差地遠甚至出現每個都說自己熟JS,每個自己獨立開發都很厲害但是專案放在一起開發時彼此都拖累對方拖累專案的情況別懷疑無印派,new XMLHttpRequest這行接某case還看到..
作者: s25g5d4 (function(){})()   2017-03-30 17:28:00
用 Fetch 算無印派嗎 (逃
作者: bibo9901 (function(){})()   2017-03-30 17:35:00
eight0: 往上一層找很正常也很直覺會出現transpiler就是因為js缺點多在語言層次, 單純的封裝也無法解決, 所以才要設計新語言.就像asm太難寫所以發明了C語言和C compiler 一樣道理這幾年js語言的發展方向(es5,es6,typescript,...)都致力於消除原來js的坑(所謂的語言特性)
作者: Laviathan   2017-03-30 19:14:00
JS的作者只花十天就寫出來的東西,當然坑一堆
作者: TETZ (你今天宅了嗎?)   2017-03-31 05:59:00
無印派是指vanilla js嗎 第一次聽到
作者: wotupset (wotupset)   2017-03-31 18:12:00
就像信長的服部拉刷 原本認為是BUG 但後來發現很吃技術就變成特色技能了
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-04-04 23:39:00
因為用 dom 讀寫 html 很方便,
作者: rarex (╰(〒皿〒)╯)   2017-04-15 21:05:00
他的確有很多坑人的地方 不過會吸引大大小小的開發者投入自然就是有他的優點 當然進入門檻或許是低了些..

Links booklink

Contact Us: admin [ a t ] ucptt.com