顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2017-03-31 18:15:36
看板 Ajax
作者 Neisseria (Neisseria)
標題 [閒聊] 有關 JavaScript 的生態圈
時間 Mon Mar 27 17:01:55 2017


我這樣寫可能會被當 troll
不過,小弟並不是要刻意引戰  只是好奇這個現象

國外有關 JavaScript 的應用相當廣泛
從原先運行在瀏覽器中,擴展到伺服器端、桌面端、行動端等
最近 StackOverflow 的調查中  JavaScript 是最多人用的語言
在一些語言排名中  也都排在很前面的順位

但其實 JavaScript 本身問題不少
而需要一些 transpilers 去克服其缺陷
像是 CoffeeScript、TypeScript、Babel (ES6) 等

除了在瀏覽器中一定要運行 JavaScript 外
其他應用情境其實都有其他的方案可代替
但 JavaScript 看起來還是很紅  這幾年陸續有新的框架
大家覺得是怎麼回事呢?

純閒聊,理性勿戰 XD

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.71.94.20
※ 文章代碼(AID): #1OsDK6Tb (Ajax)
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1490605318.A.765.html
※ 編輯: Neisseria (203.71.94.20), 03/27/2017 17:03:04
jmlntw: JavaScript 成立匆匆,以往只要待在瀏覽器還勉強可以,但1F 03/27 17:51
jmlntw: node.js 出現後,若要身為一個前後端兼顧的語言,有很多地
jmlntw: 方需要補足,所以一直有新的框架要試圖解決這些問題。加上
jmlntw: 它易學(但難精)的特色讓很多人嘗試入門,生態圈變化很快
jmlntw: 。
bibo9901: js生態很怪. 很喜歡把語言的缺陷當作一種"專業", 然後將6F 03/27 21:46
bibo9901: 一些CS常識和API用法(和坑)當成更了不起的"專業". 同一
bibo9901: 個問題翻來覆去做十幾遍, 小問題可以解決幾百遍, 最後
bibo9901: 這些疊床架屋混亂不堪的工具竟然比語言本身更坑. 當然,
bibo9901: 了解這些坑(並製造新的坑)又變成新的專業了...
eight0: 缺陷是指什麼11F 03/27 23:56
sthermit: 可以理解樓樓上的意思...所以目前我還在原生JS...12F 03/28 11:19
sthermit: 要去學框架會突然難度暴增...就卻步了
VdustR: 所以缺陷是啥14F 03/29 10:09
bibo9901: hoisting, var/let scoping, undefined/null, prototype15F 03/29 10:19
bibo9901: this 都是明顯的重大設計失誤
bibo9901: 各種implicit conversion, arguments, statement和liter
bibo9901: al的syntax混淆, boxing type 都是坑
chatnoir: 除了this在某些狀況設計錯誤外,不認為其他是失誤~19F 03/29 12:54
bibo9901: 不是失誤的話請問用意/好處是什麼?20F 03/29 14:30
s25g5d4: let scope 有甚麼問題? var 才是有問題的吧21F 03/29 22:52
s25g5d4: JS 早期是在瀏覽器上很紅, 擴展到其他方面主要是 Node 的
s25g5d4: 非同步 IO, 因為設計之初就直接以非同步 API 為基本
s25g5d4: 不像其他語言需要額外的 library 去做, 加上開發者早就
s25g5d4: 習慣在瀏覽器上寫非同步呼叫的程式碼
s25g5d4: 至於新框架層出不窮的問題...真的很頭痛...
bibo9901: 1. let 仍然會 hoist. 意即你看到每個變數都要往後找才27F 03/30 00:58
bibo9901: 能確定它的scope  2. 同時有var/let更是累贅
bibo9901: 3. 如第1點, 每次用let宣告也要往前找, 才能確認是否會
bibo9901: 蓋掉原本的upvalue(使其進入TDZ)
eight0: 樓上覺得如果不往後找,往 global 找會比較好嗎?31F 03/30 07:27
eight0: var 純綷是向後相容性
chatnoir: 語言特性而已,如果你一開始寫js,後來才寫其他語言~33F 03/30 11:30
chatnoir: 那你不會覺得其他語言沒有hoisting很奇怪?
ssccg: 語言特性不代表不是設計錯誤,不好的設計就是不好的設計35F 03/30 13:15
ssccg: 如果一開始寫js,後來才寫其他,不會覺得奇怪,而會覺得果
ssccg: 然語言是可以設計的更好的
eight0: 樓上也覺得往 global 找更好?我覺得大家可以把缺陷、缺陷38F 03/30 14:21
eight0: 原因、更好的做法等直接回一篇
visa9527: 不覺得現在的 JS 有什麼不好的,寫法泛用性佳40F 03/30 14:22
visa9527: 真正的問題反而是對 transpilers 的依靠
visa9527: JS就是希望一種寫法可以應用在各種層面
visa9527: 結果弄一堆transpilers讓"寫"的人反而不熟真正的JS
visa9527: 不用編譯直接執行的優點也因此被打壞,而且還不是真編譯
visa9527: 只是個轉譯,對執行效率沒有太大的幫助
visa9527: 然後再弄一堆雜七雜八的套件,套件又每個都搞自己語法
visa9527: 對,JSX,我就是在說你
visa9527: 結果導致無印、jQuery、YUI、Backbone、React..各種時代
visa9527: 入場的 JS 工程師對同一個問題的解法觀點可以天差地遠
visa9527: 甚至出現每個都說自己熟JS,每個自己獨立開發都很厲害
visa9527: 但是專案放在一起開發時彼此都拖累對方拖累專案的情況
visa9527: 別懷疑無印派,new XMLHttpRequest這行接某case還看到..
s25g5d4: 用 Fetch 算無印派嗎 (逃53F 03/30 17:28
bibo9901: eight0: 往上一層找很正常也很直覺54F 03/30 17:35
bibo9901: 會出現transpiler就是因為js缺點多在語言層次, 單純的
bibo9901: 封裝也無法解決, 所以才要設計新語言.
bibo9901: 就像asm太難寫所以發明了C語言和C compiler 一樣道理
bibo9901: 這幾年js語言的發展方向(es5,es6,typescript,...)都致力
bibo9901: 於消除原來js的坑(所謂的語言特性)
Laviathan: JS的作者只花十天就寫出來的東西,當然坑一堆60F 03/30 19:14
TETZ: 無印派是指vanilla js嗎 第一次聽到61F 03/31 05:59
wotupset: 就像信長的服部拉刷 原本認為是BUG 但後來發現很吃技術62F 03/31 18:12
wotupset: 就變成特色技能了

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 286 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇