周末杂谈
周六去了趟杭州参加 D2 前端技术论坛。
阿里的确很大,但也很远,感觉都要出杭州了。
众所周知的是,阿里的前端技术在业界一直处于领先地位,不论是技术的深度还是广度都难忘其项背。当然,我们现在使用的一些技术在横向上已经可以跟上时代的潮流了。比如 React ,比如 ReactNative ,当然还有一直很火热的 Node.js。
React
React 方面,我所在的部门刚开始搞。支付宝所做的 AntDesign 是一个非常不错的示范,可能也是我之后要在我们组做的一些事情:抽象出很多的基础组件用于业务逻辑的开发。当然�这肯定是一个很漫长的积累的过程。任重而道远,仁以为己任。
React Native
由于当时那个分会场实在太小,没有挤进去听元彦和他同事的分享。不过据说很多内容都是关于 React 和 ReactNative 的介绍。还有就是淘宝前端会开源一些他们在这方面的实践。一个是 react-web ,还有一些 RN 相关的工具吧。也都是道听途说,到时候等 slide 出来再仔细看看。
我们部门在 RN 方面已经有了上线的实践,之后也会在公司内部做一些分享。
虽然现在应用的规模还不大,值得肯定的一点是确实开发效率比较高,基本上我们是3人2周开发出一个完整的应用(包括了消息推送,产品搜索,产品列表,产品详情以及订单的一些内容),其中还有两个原先是做 iOS 开发的同事,基本上是从零到一的一个过程。
现在看来还是有些隐患的,比如:
- 路由的管理。我们现在是直接用 Navigator 来进行操作的,直接写了一个 Mapper 的方法来管理各种跳转,比较混乱。
- 接口的抽象。很多接口其实调用方式都是一样的,但是都分散在了不同的 View 里面。这其实严重的违背了 DRY 原则,这是一定要改掉的。
- 代码的质量。正如我前面所说,只有我一个是原先写前端/Node.js 的开发,另外两个对于 JavaScript 和 ReactNative 基本上是新手的姿态进入项目开发的。所以在很多代码结构以及编码风格方面确实做的不是很好。这可能是我们项目的一大隐患。
- More...不得不承认的一点是,由于项目的进度要求以及人员配置的问题,在项目开始变得庞大的时候还会暴露出更多的问题。
Node.js
Node 方面,我们部门已经实践了将近大半年时间了。当然之前还有一些失败项目的铺垫,这就不谈了。
这次在 D2上听了不四(dead-horse)的分享。大部分内容都是之前在天猫的 Github 分享上看到过的。相比他们,我们的规模可能在可见的未来也不会达到那个程度,不过还是有很多可以值得借鉴的地方的。
- 私有 NPM。这是我在很早之前就想在公司内建设的东西。这对于企业的 Node.js 开发而言还是比较重要的,毕竟很多可以复用的东西用 require 文件路径的方式来做还是很蛋疼的事情。封装成模块,配以完善的文档对于日后的维护和新员工对系统的熟悉都是很重要的。
- 单元测试。测试在我们这一直没有得到应有的重视,基本上一个 feature 会有一些黑盒测试的用例,然后由测试人员进行覆盖。但是从任何角度来说,单元测试都是很重要的。不过我在这方面实践的确实很少,之前也只有在一些小的模块里写过一些测试用例。这也是我们之后需要提高的点。
- 性能。对于前端来说主要还是 CDN ,这方面也没有很好的提升空间,关键还是看量。至于 Node.js 代码层面的性能,之前也使用过朴灵大大的 node-profiler -- 虽然确实能捕捉到很多代码相关的内容,但是并不是很好分析。听同事和他聊好像还要接入到 Alinode 的服务才能进一步分析。
- 稳定性。天猫使用的自己开发的一些诸如 cfork, graceful 等模块然后配合 Node.js 的 cluster 进行应用的管理。不四也表示不使用 PM2就是因为它的提及比应用本身还庞大。不过我倒是觉得这并不是一个问题。 PM2 已经是一个成熟的管理工具,它的体积并不会影响我们应用的性能。而且还可以基于它提供的一些 API 做一些后台监控(我们现在暂时只实现了一个可以管理应用状态和监控 CPU 和内存的后台)。就我们现在在线上跑的两个应用来讲,基本上不是代码写的出大 BUG 了,还没有出现过宕机的情况。
早点休息了,明天上班继续撸 React :D