两年前,我开始接触 Vue.js 框架,当时就被它的轻量、组件化和友好的 API 所吸引。以后我将 Vue.js 和 Webpack 技术栈引入个人公司(TalkingData)可视化团队,并通过一年多的实践,现已成为整个公司的前端开发规范。 与此同时,我开源了 iView 项目,它是基于 Vue.js 的一套高质量 UI 组件库,从设计规范、工程构建到国际化都提供了完整的解决方案,并支持 SSR。在许多志愿者的帮助下,将文档所有翻译为英文,在 Vue 开发者社区颇受欢迎。前端
去年的 7 月 28 日,一个名叫 iView(github.com/iview/iview) 的工程立项了,今天正好是它一周岁生日。回想当初只是做为一个团队组件库来开发,风风雨雨经历了一年,已经成为 Vue 社区最受欢迎的组件库之一了,在 GitHub 也收获了近 8000 Star,npm 每个月有 10k 多安装。固然,这一切的成果,都离不开公司给予个人支持和 Vue 社区的活跃。laravel
既然是记念日,就来点好玩的吧。咱们从新装饰了**iView 官网**,今天开始的一周里,能够在首页发弹幕,来和世界各地的朋友们一块儿畅(chě)聊(dàn)吧。git
iView 一周年,对于开发者来讲最好的消息,就是咱们终于发布 2.0 的第一个正式版。在过去的 4 个多月里,咱们连续发布了 19 个 rc 版,其实早能够发布 2.0 正式版的,并在此基础上迭代。迟迟不发,就是想把最好的一个版本带给你们。固然,即便今天发布了正式版,依然还有很多问题等待解决,一个好的组件库是须要经历不断磨练。github
来回顾一下,从 1.0 到 2.0,iView 有哪些重要改变:web
最重要的固然是支持 Vue 2 了,其次支持了 SSR 和 Nuxt.js,对经常使用组件进行了扩展:Table 单元格的渲染基于 Vue 的 Render 函数,并支持展开;Select 支持远程搜索;Cascader 支持异步和搜索。还有 100 多项细节优化。2.0 正式版,更是增强了 Table组件,优化了其 8 个问题,全部的浮层类组件都增长了 transfer 属性,能够选择是否将其插入到 body 内,使用更灵活。具体的更新内容能够查看更新日志。npm
上个月,咱们已将 iView 文档所有翻译为英文,前先后后进行了 3 个多月才算完成。有了英文版后,更多的国外开发者也参与到 GitHub 讨论之中,相信接下来会有更多来自国外的 contributors。segmentfault
上图是来自 Vue 社区一位国外开发者的评价。前端工程化
英文版的翻译离不开社区的贡献,在此特别感谢 lcx960324、rijn 和 BigChief45 三位热心志愿者。多线程
iView 从 2.0 版本开始,版本代号将以得到过 Apple Design Awards 的游戏或优秀的独立游戏来命名。app
每一个开源项目的版本代号都有它的故事。做为一枚热爱 iOS 独立游戏的玩家,往往看到画风精致、剧情动人的好游戏都会流连忘返,推荐给身边的同事,因此用它来命名,也算是对独立游戏的一种支持。
2.x 的第一个版本(2.0)代号是 Leo's Fortune(里奥的财富)。
iView 已经很好地帮助前端开发工程师们加速完成中后台业务开发,但做为一个有追求的大数据可视化团队,这仅仅只是一个开始。下半年,TalkingData 可视化团队将继续开源两个重磅级项目:
这两个项目都会给数据可视化带来福音,其中值得详细介绍的是 InMap,事实上它的历史要早于 iView,只是一直属于闭源状态,在 TalkingData 内部使用。此次也是鼓足了劲,在 API 和易用性上进行重构后开源。
在地理可视化的过程当中,由于地图的矢量数据不是一次性加载的,矢量数据是随着用户的请求,随着瓦片一块儿加载到本地的。在这个过程中存在两部分的计算比较多,限制了可视化绘制的速度,一个就是各类数据的坐标转换,另外一个就是各类数据的可视化。目前 InMap 中使用了 web worker 在后台对矢量数据使用多线程计算,保证页面对用户响应的同时对各类数据进行计算,对于其余适合并行计算的坐标数据采用 GPU 进行转换。绘制可视化层使用了 WebGL。
下图是基于 InMap 实现的一个全 3D 地球,能够实现自传、公转、随意拖拽旋转、放大缩小等立体效果。
InMap 和 InChart 预计会在数月后和你们见面,敬请期待!
可以完整参与一个开源项目,见证它从 0 到 1 的改变,对我来讲确实是一件幸运的事,由于从这段开源经历里,学到了太多的知识,也结实了不少开发者。开源是一件颇有意义的事情,然而不少国内开发者却有一个很差的习惯,他们被统称为“伸手党”。相比不少国内开发者提出的 issues,我更喜欢去解答国外友人的英文 issues,这不是由于英文看起来有多高大上,而是国外朋友的提问都很友善,并且是通过深思熟虑的。在求知的态度礼帽上,这点国人作的确实很差,若是你 watch 了 iView 的项目,天天会收到几十封邮件,其中大多没有按照 issue guide 的要求来问,close 掉,还常常被骂,一阵负能量。试问,这些不按要求问题,还态度恶劣的人,大家为开源作过什么贡献呢?开源是免费,但不是说用了开源产品就是大爷,那么牛逼,干吗不本身造轮子呢。
这样的问题不只仅发生在 iView 上,我同 VUX(知名移动端 Vue 组件库) 的做者也深入探讨过,在 VUX 的社区也会带有很多相似的负能量。这种不良现象在国内应该还有不少,VUX 的 readme 曾今写的这段仅有的中文,正是写给这部分人看的:
我相信提 issue 的朋友初衷都是好的,都是来解决问题的,只是聪明的、真正想解决问题的人,都会花费一些时间来认真填写 issue 内容。付出就有回报,任何一个认真的提问,我也会认真的回答,而那些随随便便提的问题,连代码格式化也不会的也会被随随便便关掉。
开源是世界的,因此请善待 GitHub 社区。
从 2016 年下旬开始,TalkingData 的众多新项目开始使用 iView,部分核心项目已逐步开始使用 iView 重构。如下是部分项目的截图:
TalkingData 数据工程师 王祥: 上半年,部门的两条重要产品线 App Analytics 和智能数据市场 (SDMK),用 Vue+iView 完成了产品重构,效果显著。下半年,其它几个重要产品,也计划引入 Vue+iView 技术栈。iView 的引入,保证了各产品线的视觉统一,设计师几乎不须要参与到产品研发过程,下降了人力成本;工程师们能够更专一在业务上,避免了除了业务代码还要维护基础的组件,极大的缩短了产品研发周期。强烈建议采用 Vue 技术栈的团队,也尝试下 iView。感谢 iView!
TalkingData 数据工程师 杨涛: 从使用 iView 0.9.x 版本到目前的 2.x 版本,见证了 iView 从实现各种组件到丰富组件功能的每一步,使得咱们在团队做战中大大提升了项目开发效率。在咱们的多个项目中使用了 iView 的各种组件,它完善的文档和示例代码下降了学习成本,同时 iView 也在高频率的更新完善,选择 iView 做为前端 UI 组件简单易用大大加快了项目进度的同时更多的是感觉到 iView 的工匠精神。
汉云优品 产品经理 关静凯: 我是一个爱搞技术的产品经理,在看到 iView 以后,被 iView 总体的 API 和 UX 设计所折服,很是容易上手,起初只是在产品设计上使用 iView 快速实现中后台 Demo,iView 使产品的交互和 UI 保持了高度一致性,在对公司前端团队培训后,逐渐完成了前端工程化,如今公司的产品已经使用了 Vue.js 和 iView 进行了重构。iView 的源代码很是规范,二次开发及其友好,目前正结合公司现有业务,进行了一些组件的添加,主要集中在数据可视化和一些业务组件的封装,iView 给公司带来的不只仅是前端技术的革新,更重要的是推进了产品迭代的速度,由于成功引入 iView,我也得到了公司层面的支持整合设计和前端组建了 UED 部门。再次感谢iView 框架带来的便利。
接下来要作的事情还有不少,咱们会经过 iView 在大量实战项目中的使用,在组件的易用性、稳定性上不断提高和改良,也会在 UI 细节上更加规范、漂亮。
这里也要特别感谢全部为 iView 项目付出努力的贡献者们,一个好的项目,是须要你们共同创造和维护的。也借此文,呼吁有工匠精神,热爱开源的开发者们可以加入到 iView 项目里来,一块儿把它打形成世界级优秀组件库。
为庆祝 iView 一周年暨 2.0 版发布,**Vue.js 系列课程**一概 6.6 元,持续一周。
最后特别感谢如下技术社区长期以来对 iView 开源项目的推广与支持(排名不分前后):