合肥Web培训
达内合肥web培训中心

0551-64632511

热门课程

精读《12 个评估 JS 库你需要关心的事》

  • 时间:2018-09-25 12:07
  • 发布:黄子毅
  • 来源:稀土掘金

精读《12 个评估 JS 库你需要关心的事》

1引言

作者给出了从12个角度全面分析JS库的可用性,分别是:

特性。

稳定性。

性能。

包生态。

社区。

学习曲线。

文档。

工具。

发展历史。

团队。

兼容性。

趋势。

下面总结一下作者的观点。

2概述&精读

特性

当你调研一个JS库,功能当然是最重要的,就好比React的用于开发UI界面非常方便,这是流行起来的一部分因素。

但同时React解决的问题很聚焦,于是把例如Router和Store部分交给社区给解决方案,这就让Vue的官方维护生态模式发展了起来。但这更多取决于你的偏好,像lodash这种精简的库也会长盛不衰,重要的是这个库提供的能力是否解决了你的业务问题。

评分:A -化腐朽为神奇。B -更优雅的解决方案。C -比现有方案差。

稳定性

这个库如果经常出BUG,那显然无法在生产环境使用。最好经过严格的测试,保证这个库一定不会出错,这样我们就可以专心排查业务的问题了。

评分:A - BUG很少,方便调试。B -不会影响你的稳定性,比如出BUG概率和你的业务代码相近。C -引入该库会让你背线上故障。

性能

如果让用户15秒才能打开网页,那一切都是徒劳。

拿PReact为例子,为什么API相同的轮子可以活下来?因为体积小,而且PReact把宣传重点放在性能上。

如何一句话说明白你不是在造无用的轮子?性能更好。

评分:A -小体积,高性能,支持各种黑科技特性比如Tree shaking。B -对性能没有影响。C -导致性能降低。

包生态

用过monaco-editor吗?大家都在用webpack但它却走amd路线,我不知道你用什么方法让它支持commonjs的,但这一定耽误了你不少时间。

包生态包括第三方包的成熟度,包的使用难易度,支持多少种模块化方案,是否支持TS,有没有管理好自己的依赖等等。

开箱即用是最好的,有长期维护组织的更佳。

同时不要有太多相互竞争的社区方案为佳。比如工具库用lodash这很容易,但React数据流方案选择哪个?太多的竞争对手不断写软文抢夺用户(程序员)的注意力,试图说服他们加班重构。

评分:A -方案唯一且生态运作良好,维护记录标准规范且顺畅。B -很多新晋网红包,且竞争选择多。C -没有人给你做包,想用要自己封装。

社区

能否快速在Stack Overflow搜到问题的答案能反映出社区的活跃度,不论是官方文档还是第三方进行的问答。

社区越活跃,帮你提前踩的坑就越多,如果你遇到一个大家都没有遇到过的问题,并不代表你用得有多深度,而可能你根本就用错库了。

评分:A -各种论坛每日都很活跃,Github issue问题日清。B -论坛/聊天室不太活跃。C -除了作者自吹的文档,再也找不到任何相关信息了。

学习曲线

不要以为把库功能做的强大,就算难用点也会有用户跪舔,这是幻觉。

Vue之所以那么火爆,是因为原生HTML的门槛比JSX低,而使用React的用户往往都觉得JSX比HTML门槛低。我也不知道该怎么描述,从JS可以产生一切的角度,学习HTML反而被认为是高门槛的体现。

所以认清现实,JSX Star多并不是其理论有多先进(理论确实先进),而是很多人觉得整体学习维护成本比HTML低。

评分:A -一天就能成为这个库的熟练搬砖工。B -浪费了一周时间才能投入使用。C -学了一周才发现之前的理解是错的,而且认识到这只是个开始。

文档

写文档的人一般都是库的作者,这种人一般经验会比较丰富,写起文档一般不会考虑初学者的感受,所以找到一份对初学者友好的文档还是挺不容易的。

对于库的维护者,要站在初学者角度去写文档,站在使用者角度,如果文档开头就看不懂的话,最好尽早换个文档或者换个库。

评分:A -专门维护文档站点、视频、图片、示例项目,再好一点的话可以有专门基金会组织编程比赛,通过某三岁孩子可以一天入门强力影射技术生态的完备性。B -有最基本的Readme和API文档。C - Readme写的是Create react app,其他的只能查源码了。

工具

工具可以从多个维度体现出这个库的优势,首先是确实带来了使用方便,其次展示了团队维护实力的雄厚(精力溢出到可以做周边工具了)。

Redux之所以这么火,Redux dev tools功不可没,笔者读过一些心理学书籍,也经历过一些技术选型,看到Redux dev tools的图形化界面后,大脑因为受到视觉冲击比理性的逻辑思考大太多,潜意识里给Redux加了不少分,导致讨论结果都变得不太理性了。

如果你的库能图形化表达,或者做一个PPT或者辅助工具,那一定会大大加分。(React chrome插件在打开react做的网页时亮起来真的很酷,这个勋章很有仪式感,以至于我不想换一个框架)

评分:A -两个以上的工具,包括浏览器拓展、代码编辑器拓展、CLI工具或者SaaS服务,实力碾压的话,会有许多花哨的辅助工具出现。B -一个工具。C -没有工具。

发展历史

一个Star 10K的库,如果最早提交是十天前,就算不是刷的也最好也不要用,因为不知道哪天作者就不再维护了。

历史越悠久的库使用风险越小,除非它所在的面被淘汰(技术栈、生态、编程语言等等)。

评分:A - 4年以上历史,有权威认证。B - 1-4年历史,已经有不少人使用过了。C -作者自己都没用过就安利你用到线上去。

团队

看谁是这个库背后的男人。大公司广泛使用的开源库,并且有一定国际影响力,而且大厂也有成功开源历史经验的话,就会增加说服力。

但Vue就是个例外,几乎凭尤大一人之力打造,对这种情况,笔者想说的是,一个真心热爱技术并践行全职维护的人,也许比一个背着KPI的团队维护副产品更靠谱。

评分:A -一线大厂,品质权威认证。B -中型团队维护,并且有清晰的分工记录。C -工作之余顺便开源出去,就没打算对这个库负责。

兼容性

除了浏览器兼容性,库API的兼容性也非常重要。当你很容易联系到作者,并且改动API的建议被很快采纳时,你就要小心了。

React Router 3 -> 4升级带来的阵痛大家都有体会过,babel7放弃stage 0-4也带来不少吐槽,Angular1和Angular2的区分直接让很多人粉转黑了。虽然许多时候频繁的更新是为了增添新功能,但如果带来API兼容问题,反而会招来反感。

假如你们团队维护的10年间,因为某个库作者非常勤奋的更新导致以时间为维度,均匀分布了数十种不同的版本,你会发誓下一个项目不再使用这个库了。

评分:A -总是能兼容升级,实在不行就提前警告并告知在某个版本会废弃,并提供迁移工具,比如React。B -有Break Change但是文档把升级改动写的很清楚。C -突然到来的小版本升级让你不得不重构之前的调用代码。

趋势

炒作也好,讨论也好,保持大家对这个库的新鲜关注非常重要,因为这能连带的让这个库做好上面说的很多点。

但注意过分的炒作,可能会降低这个库的稳定性,毕竟在用户爆发式增长之前,最好有一部分当小白鼠。

评分:A -是HackNews的明星话题,Star成千上万,各种会议以此为名(Vue conf,React conf)。B -几百Star,有一些讨论。C -别看现在Star少,迟早有一天我会超过那啥那啥。

搬家成本

这个是作者补充的比较重要的一天:如果哪天不用这个库了,换成别的成本有多大?

这方面测试库做的很好,很多主流测试库比如Jest、Ava、Mocha、Jasmine等之间都有互转的脚本,业界基本达成了一些共识和规范。

比较坑的是React、Vue、Angluar,使用之后你基本就被绑定了,至今没有谁可以无缝做各大框架的迁移。当然JS的年龄还很短,而且说不好未来还会被新语言、技术、容器颠覆而成为历史,标准化不是做不到而是需要时间,也许就在十几年之后,但是今天就是做不到。

3总结

下次技术选型讨论时,可以拿出规则一条一条比对了!

然后技术选型只是基础库,利用这些基础可以维护好自己的开源库,把更多时间用在创造业务价值上。

仔细思考就会发现,程序员开发的工具库也适合点线面体的概念。一个库react-button就是一个点,而它所在的线react如果被人抛弃了,无数个react-xxx也会翻船。而react、vue、angluar这些线都在js引擎这个面上,当可以用C#写WebAssembly时,Reason、Blazor、Dart就会逐渐成为浏览器的主角,react之类的库统统要回炉打造。而当未来人机互联不需要浏览器作为媒介时,js引擎这个面依附的体-人机交互场景也被打翻了,这一浪又会引起多大的变化。

所以技术选型是为了解决当下业务问题,仔细考虑好几个因素,适合解决业务场景就足够了。

作者:黄子毅

链接:https://juejin.im/post/5ba9867a6fb9a05d1f220d2b

来源:掘金

前端开发行业学习门槛也较低,很多转行的小白通过扎实的学习成为了大咖,技术过硬的前端工程师也通过夯实基础,找到了更好的工作,更有从后端转入前端的工程师,因为掌握后端技术而更加有优势,在前端开发行业取得很大成功。

但是在学习前端的过程中,极大部分刚入门或者在从事前端的小伙伴,在学习的过程中遇到很多难题难以解决,或者很难发现自己的问题所在,耗费很大精力也无法得到提升。

那么我们应该如何精准学习提高效率,如何抓住机遇有效提升自己呢?报名合肥达内web培训本月免费试听课程,学习最新热门技术找一份自己满意的高薪工作。

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!

免费预约22大课程试听课

上一篇:Node.js v10.11.0 发布,服务器端的 JavaScript 运行环境
下一篇:零基础可以学会web前端开发吗?

这几个优秀的web前端开发框架你用过吗?

2018年Web应用安全现状报告

合肥web前端培训JS常用语句有哪些?

Web系统权限控制如何设计

选择城市和中心
贵州省

广西省

海南省