[闲聊] 有关 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