vue技术栈前端建设方案

前言

主要介绍云课堂前端在CRM系统的前端建设方面的经验总结,方便其他前端人做技术选型,全栈工程师快速建站。本文适合对vue技术栈和前端工具化、工程化感兴趣的朋友。

整体架构

CRM系统的服务端是基于node的,前端是以vue技术栈为主的。前端部分整体架构图如下:

应用层

整体前端应用层基于vue技术栈的传统三大件:

至于util库则是选择了传统的 lodash。当然你也可以选择完全基于函数式编程范式的 ramda和基于ts构建的 remeda。

至于发送请求的库,我们选择了 axios,其方便的拦截处理和插件拓展功能非常实用。也有其他备选方案如 request和 superagent。

工具层

在应用层的选型维度之外,我们也进行了一些工具化的建设。

在mock数据方面,虽然配合axios的 axios-mock-adapter很好用,但是其限制了使用范围(必须和axios配合),并且需要进行额外的逻辑侵入。结合网易自研的 nei的编辑优势和webpack-dev-server的方便配置,团队自研了 http-mocker,提高mock的体验和效率。通过可视化界面编辑数据,并灵活切换远程本地代理,达到mock的效果。

在工程构建方面,选择了业界主流的 webpack作为打包工具。这里需要注意的是,为了优化加载文件大小,需要好好利用其 code splitting功能。

在工程组件模板方面,团队自研了 yoso,动态切换github和gitlab模板库,方便程序员同时为社区和企业做贡献。

在一些其他的格式化管理方面,充分利用了git钩子,基于 husky做了一系列优化,后面会具体谈到。

测试

针对应用的质量,我们进行了组件和util维度的单元测试、数据状态管理的单元测试和部分重要逻辑的UI自动化测试。

针对组件和util的单元测试,我们基于由Facebook出品的 jest,传统的 mocha和 chai还有覆盖率工具 istanbul需要自己去单独引用,配置较为繁琐。而jest则全套集成,方便快捷。

针对重要的基础组件,基于 jest-serializer-vue配合jest的快照测试功能,来确保模板的输出结果一致性。

针对Vuex的数据状态管理的测试,个人认为其重要性仅次于util,这里推荐一个自己参与开发的工具 vue-test-actions,可以简化很多重复的逻辑。

针对UI自动化的测试,基于无头浏览器 puppeteer,以及jest对应的插件 jest-puppeteer。这里也可以选择 cypress,虽然可视化的体验更好,但是也更加重型。而个人觉得既然单元测试选择了jest,通过jest-puppeteer来配合puppeteer也可以达到需求。

可维护、美化

我们在git钩子中通过 husky配合 lint-staged可以做很多有意义的事情,这里列举几个实例。

代码美化

在commit阶段,通过 prettier,对代码进行指定格式的修改和美化,配置方式如下:

校验commit信息

校验commit信息是否符合规范,这里我们采用了 AngularJS Git Commit Message Conventions,严格语义的提交信息,可以在工具化时做很多事情,比如说配合 conventional-changelog通过获取git元数据自动生成changelog等。

配置如下:

verifyCommitMsg.js文件内容如下:

自动化部署

一般自动化部署是在其他CD机器上去做的,如果没有这个条件,甚至可以在git钩子阶段完成。但是需要注意的一点是,git钩子是没有push阶段的,所以需要通过延时,并且需要一些工具如 git-branch-is,来判断当前push的分支。

这里配置如下:

由于这里的部署脚本调用了网易内部NDP平台的API和秘钥,就不具体展示了。

工程化

前面提到了web应用、工具、测试、美化校验等相关点,这里说明下在工程化角度做的一些事情和经验。

首先,在CI方面,由于我们在commit阶段只是做了简单了代码美化,所以eslint和测试的执行过程都交给了Gitlab的runner。

在异常监控方面,我们选择了 sentry,并使用了其私有化部署工具 onpremise。

在多工程维护管理方面,个人认为组件或者模块适合用mono-repo的风格管理,使用 lerna这样的工具。而工程规模的才是采用multi-repo风格来管理比较合适。为了提高多个工程分支等操作时的便捷性,团队自研了 multi-repo-git,来提高分支操作的效率。从此再也不用同时开好几个控制台面板了。

总结

以上就是本次分享的全部经验了,如果各位对其中某些选择觉得不妥,或者对某些自研工具有同场景下更好的开源解决方案,欢迎交流。

原文链接,讨论地址

4617作文网器械起名女装品牌名称起名周易起名有科学依据吗八字起名网免费名典大同算命先生梦幻捕鱼破解版周围二手车交易市场位置论语起女孩名字的给孩子起名字圣经生辰八字给店铺起名庄起名字德州算命准的师傅怎么推算自己是什么命姓姓崔取名起名大全八字算命免费测财运根据什么才能给婴儿起一个好名字宝宝软件起名大全合婚算命软件周公解梦 梦到老鼠周易起名测试分数产品取名起名大全大全车行起名子大全姓丘男孩起名大全姓吴起名字有的算命为什么很准母婴服务公司起名2020年属鼠宝宝怎么起名字男孩起名字俊哪些稷字起名好不好微信周易会馆算命淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化