为什么总有人黑 JavaScript?

我真的不理解为什么一些人总是黑 JavaScript。我喜欢 JavaScript,它不是万能的,但它最接近于我们所期望的能“运行在任何地方” —— 关于这一点别和我提 Java。

使用 JavaScript,你可以编写应用让它运行在:

  1. 你的浏览器上(几乎所有浏览器)。
  2. 你的手机和平板电脑(比如 React NativeCordova
  3. 你的桌面软件(比如 electron 运行在 mac、linux 以及 windows)。
  4. 你的服务器上即 node。
  5. 甚至在你的数据库中(比如 mongo db)。

使用 JavaScript,你不需要下载一个 4GB 大小的 IDE 来创建一个 hello world 程序,你不需要等待 30 秒来编译然后才能执行你的 app,你所需要的一切只是一个文本编辑器。

的确 JavaScript 有缺陷,但是,其他任何语言在适用性和灵活性方面都与 JavaScript 相距甚远。

我对 JavaScript 工具、框架和库的革新(和爆发)感到喜悦。我知道它可能让学习者心累,但是这些新东西很好玩,而且,你没必要学全所有的新东西啊。

我希望说,我们能停止在 JavaScript 之上创造“语言”,也停止在你的项目中使用这些新语言。我们已经有足够多这些语言了:TypeScript、Elm、CoffeeScript 以及其他。我强烈推荐你不要在你的项目中使用这些新语言。

我将描述为什么不要使用它们,但是首先,我想表达的是,我很欣赏这些创造,它们为我们的开发提供了多样性的选择,而且尤为重要的是,我非常感谢那些创造了伟大工具和“语言”的人。

曾经是一名坚定的 CoffeeScript 粉。几年前我决定在一个项目里使用它,而随着项目发展我很快意识到这是一个我曾经做出的最糟糕的选择,随后我花费了六个月的时间深入项目,把整个项目完全用 JavaScript 重写了一遍。以下是为什么使用 CoffeeScript 是个坏选择的一些理由:

  1. 我需要额外的构建步骤来“编译”它到 JavaScript,不是什么大问题但有时候很烦。
  2. 它难以调试,因为你在浏览器中看到的是编译后的代码,与你的 CoffeeScript 源文件中的内容不同 —— 大部分情况下,它的可读性也很好,但是你还是需要在脑中转换一下。
  3. 目前最大的问题是对任何加入团队的新成员来说存在比较陡峭的学习曲线,因为他们必须要学习一门新的语言。
  4. 大部分在线的例子(99%)都是用 JavaScript 写的。
  5. 团队开始丧失一部分 JavaScript 技能。慢慢地,JavaScript 代码开始读起来像是另一种语言,我们希望所见的一切都是 CoffeeScript 的。
  6. 我们不能完全跟上 JavaScript 的发展脚步,比如 ES6 —— 箭头函数、解构等等。
  7. 我们不能直接将几行代码放在 script 标签里运行来做一些简单的测试,而如果我们要做测试,我们还得先用 JavaScript 来测,然后在测试之后将它“翻译”回 CoffeeScript。

虽然我没有深入使用 TypeScript 或 Elm,但我想它们应该也有类似的问题。

RE: TypeScript —— 非常酷的概念,我理解使用它的一些好处,但我们为什么要强迫一个动态语言“表现得”像静态语言那样?C# 正绞尽脑汁地想要表现得更动态一些,而现在我们又在绞尽脑子地让 JavaScript 表现得更静态一些。搞什么呀!!!

长话短说(TL;DR)。

  1. 别再黑 JavaScript,开始喜欢 JavaScript。
  2. 别在 JavaScript 之上搞其他语言。
  3. 拥抱 JavaScript 的动态特性。
2 3 收藏 10 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
  • 星辰大海e_o   2016/12/22 精华评论

    专门登录来评论,我非常诚赞同这篇文章的观点。

    但是我觉得别人黑也是有道理的,前端这个圈子太浮躁了。

    在我看来,不仅是不要轻易使用基于JavaScript的这些语法糖语言(在我看来他们就是个玩具),甚至当前市面上的那些所谓的流行的各种框架,模块发方案也不要轻易的使用,前端这两年发展太迅猛了,各种新方案层出不穷,但是有高潮就会有低谷,有新生就会有逝去。看吧再过几年这些所谓的如日中天的新技术,会死掉一大半,而你的项目,你的公司要是不打算跟着一块死的话,你就尽情的使用这些吧。

    其实对于市面上大概一大多半的网站,根本用不到这些语法糖(什么typeScript,coffeeScript,less,sass,scss等等此类),也用不到这些所谓的模块化方案(commonjs,amd,cmd:这个今年貌似已经挂掉了???,umd),也用不到这些MV*框架。这些大家应该是公认的吧?原生JavaScript+CSS3+HTML5完全足够满足你的需求,你要是觉得满足不了,不过是你的技术不过关而已,有学习各种新技术的能力不如沉下心来打打基础,或者研究研究新的ES6。

    很多小公司也是盲目追求新技术,可是员工不会一辈子待在你的公司里,他拍拍屁股走了,留下个烂摊子。你只能用更高的价格去招新人进来,还不一定能快速上手,企业成本越来越大。到头来,也不过是成全了员工而已。

    其实绝大多数的小项目根本用不到这些技术,如果是用最基本最原生的技术的话,同样可以满足需求,还易于维护,即便将来新的标准普及,比如ES6普及到用户浏览器端,你的项目升级起来也是很容易的。

    有多少人是为了简历编程,为了薪资编程的,你们摸摸自己的良心问问自己。

    这无可厚非,不涉及道德。但关乎内心。

    • Sa、   2016/12/23

      一个只会写jquery的前端,随便找个后台都能顶替你的工作,要你何用?

      • 呵呵,这么瞧不起jQuery,瞧不起只会jQuery的前端?后台是你想随便的被你找来做前端就给你做的?你把后台看的也太随便了。你先问问后台答应不答应啊!还是为了不让别人瞧不起,故意把简单的东西搞得混乱无比,以显示自己的能力?

        我并不是不拥抱变化,而是在抵制技术滥用,在抵制前端这圈子变得浮躁而已。你说一个小破官网,一共就那么几行js代码,又只有你一个前端,硬是搞个seajs模块化上去,多写几行代码就搞定的事,又是请求这个包,又是引用那个模块的,算下来多了可不止几行代码啊,又是合并又是打包的,累不累。你拍拍屁股走人了,别人想改个代码,还得先学一下这个已经被淘汰的技术。可是spm年初都挂掉了啊。

        造轮子可以,胡乱推广,github加星量上去了,别人因为你的推广入了你的坑,你升职加薪了,一句技术过时就把它淘汰了,然后呢?明知道这些技术早晚会被淘汰的无影无踪,连沉淀都轮不到它的时候,何必要折腾它呢?又何必把它推广开来折腾那些新人呢?如果只是为了自己,当我没说。

        微软好不容易把IE这个史诗级大坑填了,前端又开始自己给自己挖坑了。我看就是闲的。

        各大公司动不动要新人必须有github开源库,还要求加星量必须达到多少,小破公司也跟着瞎凑热闹,你的小破网站用得着个屁的这些新轮子啊,还在面试要求上写一堆名词,什么函数式编程啊,什么柯里化啊,你问问你公司的已经在职的员工他自己知不知道这些名词都是什么意思。搞得这些新人天天瞎几把学,一旦问一下基础知识,全挂掉了。这到底是对这个行业有害处还是有好处啊。

        在看看已经入职的员工,编程这个行业哪个想前端这样一两年不学就直接落伍了呢?你到底活着只是为了工作,还是工作为了生活啊,明明现有技术已经完全搞定了,为什么不厌其烦的折腾啊,老婆孩子不用陪啊,

        有些人可能年轻一点,还是单身,但是别忘了你也是在这一行混的,你也有老的这一天,谁也逃不过大自然规律。有多少个是可以当上领导的啊,大部分的人命运是一样的,等在过几年,你老了,破事多了,老婆今天闹脾气了,孩子考试又不及格了,老丈人高血压又犯了,破事来的时候都是排着队的,你稍微不努力学,直接落伍了,一辞职直接永久失业了,你真愿意在这样的行业里待着?如果你开始就告诉你这是一个这样的行业你愿意入?

        好好考虑考虑吧都。这样浮躁到底是对新人有好处,对老人有好处,还是对企业有好处呢?

        • 浪子哥   2016/12/23

          说得有道理。现在一些语言框架、组件牛毛多,一些人不明所然的跟风学,用得着么?明明一些经典的技术、组件就能搞定的,非得扯上一堆的新玩意。这不是坑么,以此来显示另类?

        • Sa、   2016/12/27

          楼主不要误解,我没有贬低任何职业的意思。只是前端要有自己的不可替代性,jquery大部分后端都可以写,html+css,很多做设计的也能做的很不错。之所以以前前端不火,是因为大家不需要前端。为什么?因为前端的活能被其他的岗位替代。现在新技术流行,使前端需要更加专注和专业。不断学习才能使自己不被其他的岗位替代。楼主可以自己再琢磨琢磨

  • 前风 测试 2016/12/23

    话虽如此,却抵不过跟风的劣性!看看招聘要求大部分都跟风要求这框架那语法糖的!毕竟这几年前端井喷式爆发,接下来的日子里应该就是沉淀了吧!希望日后前端的环境能更好,毕竟我选择了他,虽然还没入行!

  • Nicholas   2016/12/23

    没有javascript就没有新中国

  • 不管怎么黑,依然坚挺

  • 一切能用javascript写的最终都会使用javascript写;

    以前只以为这个是笑话,没想到很有可能成真呢。为什么要黑javascript?如果你不火,没影响到人家饭碗别人肯定不会闲着没事做黑你。现在的情况是javascript编写webapp已经能和native app同台竞技,而且发现用html+css写界面变原生更方便,并且能够跨平台。ES2016,nodejs又给js带来了更多的可能,前端就是借着这股春风,脱掉了以前只会切图写html的帽子,正式迈进了工程师的行列。现在只会个html jq真不好意思说自己是前端。

跳到底部
返回顶部