JavaScript已经到了悲剧时代

JavaScript 在过去几十年中的发展中,语言本身没有太多变化,但是使用方式上发生了翻天覆地的变化,简单归纳起来有这么三个阶段。

以 Dojo(1.x),Mootools,Extjs,jQuery 和 YUI为代表的是最初阶段,早受到关注并广泛使用的开发库。这个时候 JavaScipt 仅作为自身,不会触动太多 HTML/CSS 相关。

然后出现Backbone,Knockout,Ember,Angularjs(不是Angular),第二代的库解决了开发人员在构建更多交互式Web应用程序时面临的常见问题。Grunt,Gulp,Brunch和其他构建工具也应运而生,以管理构建和打包用来解决Web程序变得越来越复杂的情况。

时至今日,三个最主要的前端框架已经变更为Angular,Vue和React了,聚集了开发人员之间最多的讨论。这些框架中的每一个库都在增加各种新功能并变得越来越复杂,因此经历了各自的弃用和可怕的重大变更周期。

“JavaScript开发人员”不能精确定义软件工程师了,而应该明确到他在用什么库,将自己紧密地结合到特定的解决方案上。

历史上第一次,前端工程师是通过框架来识别的而不是语言。

JavaScript 已经到了悲剧时代

将我们带到第二代JavaScript框架和库,首先解决了企业细分市场的需求。在这些要求中,包括稳定可靠的工具集,快速响应的设计,可访问性和国际化,数据可视化功能(物流,医疗保健和金融行业的关键),安全性,性能优化,对新兴标准(例如Web组件)的遵从性,商业用户以及文档和支持。这一系列的库解决了 HTML 的操作,但是和 CSS 的衍化路径不太相关。

构建工具和 CSS 编译、打包等出现迅速融合进了构建工具,JavaScript 也顺利成为了管理 CSS/JavaScript 的首选工具。SPA/复杂 Web 应用的发展导致 HTML 也融进了 JavaScript 麾下,从此出现了一种语言(JavaScript) 解决 HTML CSS JavaScript 三种输出内容的工程。可以说历史上没有任何一种语言有这么复杂的目标,语言的缔造者肯定没有想到变化如斯。典型代表就是Angular,Vue和React了。

比如会使用 Vue 的工程师可能不会编写 React 的工程。JavaScript 框架的变化,大家能感受到前端火热的发展和蓬勃的需求。

每个阵营之间的格格不入,一个 Vue 控件也不可能在 React 工程里使用。

这种架构本身也导致了一些问题,譬如导致基于后端渲染 HTML 的 CSRF 几乎不可实现,服务器所有数据可能都有规范的 JSON 输出(极大的方便了爬虫)。效能问题有页面加载时间过长、初次加载内容较多。极端情况下还是得有服务器端渲染,然后技术体系变为:后端 前端 (SSR团队)。

虽然从 JavaScript 发展出来了 TypeScript,工程上的问题也未完全解决,譬如静态检查功能匮乏,大型工程难以保证质量。加上 HTML/CSS 后单元测试粗糙,难以用简单方法覆盖所有业务的功能。很多企业里的前端团队成为代码变更最频繁、代码量最大的工程团队。

JavaScript 已经到了悲剧时代

割裂的发展不是越来越好,而是越来越糟糕了。但是现状也是合理的,只能寄希望于Web技术变革了。

目前比较有可能的方向有:

  • Web-Component 貌似是一个跨库的解决方案,但是本身也是一个库,感觉意义不大
  • WASM,功能是能覆盖,但是解决问题依然未变:HTML CSS JavaScript,还有很长的路要走。
  • Dart,AngularDart 已经比 Angular 展现了更好的工程性。
  • 更希望浏览器端出现融合 HTML/CSS/JavaScript 的语言,最终减少工程目标。这个方向上比较看好 Flutter,将来是否可能出现 Flutter 的生成物直接在浏览器端运行呢?

奠定互联网三大规范: URI/HTTP/HTML 发明至今多少年了

  • HTTP 1984,至今37年
  • URI 1994
  • HTML 1991

虽然一直在衍化,但是核心本质一直未变化,推翻是万万不可能的。

JavaScript 已经到了悲剧时代

Dart 在 Web 领域的探索

  • 2011年10月,Chrome 发布了内置 DartVM 的浏览器,尝试用 Dart 取代 JavaScript
  • 2015年03月,Chrome 移除 Dart VM,尝试把 Dart 编译为 JavaScript
  • 2015年02月,csslib 发布第一个版本,支持 css 的解析
  • 2016年11月,dart-sass 发布第一个版本,如今已经成为 Sass 的官方首选工具了
  • 2019年开始(?),Dart 对 HTML/CSS/JavaScript 具备完全的操控能力

是的,超过市场占有率70%的浏览器曾经支持另外一种脚本语言,然后又移除了。Dart 的尝试超前业界的理解和接受很多年,他们的努力不会被人们遗忘。

Lars Bak & Kasper Lund, Dart co-founders said:

我们之所以开始Dart项目,是因为我们相信每个开发人员都应该获得简单性,生产力和性能。我们的新Web策略使开发人员可以更轻松地使用Dart进行构建,也可以使用Dart构建现代的Web。

对于那些不看好、不相信 Dart 的前端程序员,我只能说: In Dart, I Trust. 虽然我不专职写 Web。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/19074.html

发表评论

登录后才能评论