福利来了: 我们要跟 @前端早读课 合作搞一次线上直播,时间是12月12日晚8点半,分享迅雷前端的敏捷开发实践。如果你错过了上次的分享,或者希望和我们一起近距离沟通前端敏捷开发相关的话题,请一定不要错过这次的 Live,Live介绍:前端早读课Live: 迅雷前端敏捷开发之路,报名地址: 前端早读课直播间。
线上出现了脚本错误,还是被老板发现的,如何监控追踪线上问题?每次发版都要手动构建、部署,多人开发却只有一个测试环境,如何提高效率?每周N个运营活动需求,如何提高开发效率?相似的业务代码如何抽象成公共模块?前不久的一场分享会可以为你解惑!
11月22日迅雷前端团队又在公司办了一场技术分享会,这次主题是《迅雷前端敏捷开发体系》。
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bb0620f3b58_w-620_h-451_f-png_s-481451.gif)
第一场:迅雷前端敏捷开发之路
第一场是赵兵同学带来《迅雷前端敏捷开发之路》,赵兵同学是迅雷组件库XNPM的创作者和推动者,他自己也开发了不少开源组件,比如@xunlei/vue-lazy-component。
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bb6f4c34661_w-1000_h-564_f-png_s-730335.gif)
1. 如何快速上线一个新产品?
- 需求拆分成独立功能点
- 功能点按照优先级排序
- 了解产品经理的真正意图,换种方式解决可能更好
- 需求分期迭代,每周一个版本,根据用户反馈调整产品方案
2. 出了进度沟通问题?
无法实时跟踪各方进度?看板君上线了,看板君的真身其实是worktile,像流水线一样处理任务,任务进度一目了然。
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bbae14524ef_w-1342_h-542_f-png_s-189510.gif)
3. 线上出现了脚本错误,还是被老板发现的,如何监控追踪线上问题?
简单地说就是规范工作流,接入监控和告警。这时候工作流君和监控君要上线了。 工作流君的真身就是Eslint代码检查、Git flow开发流程、增量code review(在完成featureE或者hotfix等合并分支的情况下@其他同事进⾏review)。 监控君就是错误监控、性能检测、告警、旁路监控。现在我们有基于sentry的错误上报系统,还有监控系统,告警除了微信告警还有钉钉机器人告警,旁路监控有监控宝。
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bbca93dc2f3_w-1854_h-435_f-png_s-55501.gif)
4. 开发效率又跟不上了?
每次发版都要手动构建和部署,多人开发却只有一个测试环境,效率太低!这时候自动化君上线了,机器能做的就不要手动去做。自动化君的真身就是Gitlab CI。提交代码⾃自动触发测试、构建、发布⼯工作流。还能每个分⽀自动生成一个测试地址 。
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bc3ecbb191b_w-1005_h-408_f-png_s-131342.gif)
赵兵同学的分享通俗易懂,连产品同学都过来听。他还分享了如何不重复造轮子、如何将第三方业务需求插件化和通过知识分享的方式提高团队水平并,更多细节请到附件的PDF文件中查看。
第二场:会员活动运营框架
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bc735652d8a_w-1914_h-1080_f-png_s-2052032.gif)
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bd0335d35b5_w-815_h-471_f-png_s-42554.gif)
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bd21656cba0_w-1207_h-406_f-png_s-128958.gif)
接下来他讲了他们的前端框架遇到的问题和解决方法,比如前端框架和分包和整包引入,按需加载问题,活动框架样式和JS功能依赖无法做到非常灵活通用问题。更多细节请看附件文档。
第三场:公共模块开发指南
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bd5ea9887cd_w-1280_h-723_f-png_s-1795823.gif)
公共模块想必大家都很熟悉,小编就重点介绍下大家比较关心的如何开发公共模块。
1. 安装
公共模块的安装方式通常有两种:CDN在线地址,NPM模块引入。彬彬同学比较了这两种方式的优缺点,CDN异步和同步的引入方式,及如何兼容ES Module、CommonJS等多种模块规范。还介绍了打包工具webpack和rollup。
2. 接口设计
彬彬同学从接口的命名讲起,包括正确拼写的重要性,语义化,时态。又说明了同步接口和异步接口的错误捕获处理方式的区别。最后讲了参数的设计和长数字转字符串、对象转JSON的必要性。
3. 单元测试
他介绍了测试的重要性、Mocha等几个测试框架、断言库和代码覆盖率的概念。
4. 版本管理
这部分他介绍了语义化版本号的意义,还有些提交信息的一个规范:Angular规范,以及自动生成这个Angular规范的工具Commitizen,效果如下:
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007be823bfd87d_w-445_h-238_f-png_s-151631.gif)
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007bea85eb14d4_w-569_h-287_f-png_s-55910.gif)
5. 文档
公共模块文档很重要,通常项目下都有个README,是项目的门面,基本内容应该是简要介绍模块、安装方法和使用示例。README还可以包括一些构建和版本信息的徽章、接口API、更新日志和开源协议。他还介绍了一个根据javascript文件中的注释信息生成API文档的工具-JSDoc。下面就是用JSDoc生成的迅雷9 API接口文档。
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_11_29_16007becb67eb11f_w-945_h-620_f-png_s-315006.gif)
到此三位同学的分享就结束了,相信开篇的问题大家都已在本文找到了答案,更多分享细节参见附件文档。
附件文档地址: https://github.com/xunleif2e/blog
扫一扫关注迅雷前端公众号
![](http://www.mk2048.com/web_upload/blog_imgs/7/https___user-gold-cdn-xitu-io_2017_9_18_a61c018adbf0a3e865643c51e91251bb.gif)