模板仓库
模板仓库是什么
从写代码的开始,程序员一直在做一些偷懒的动作,比如17年那会儿,刚刚接触小程序,我作为一线开发人员,得花费大量的时间在小程序的调研上面,从0到1的过程,往往是最难的。
而我们的team leader告诉我,一个新的东西,从0到1非常难,从1到10就不应该那么难,应该把优秀的实践沉淀下来,下次开发就没有那么费劲了。
最开始,我对这个小程序做了很多的集成工作,公用的东西尽可能的提取出来,下次别人开发的时候,直接把我这个东西拿过去用就行了。
后来,慢慢的,直接集成了一个仓库模板,让别人去用。(这个模板就是我们的模板仓库)
根据我的个人经历,说一个题外话,其实国内大多数的前端团队比较low,很多公司基本上没有这方面的沉淀。
根据这个主题,我大致把这些公司分为三个层次:
1、任何项目,直接通过脚手架生成,然后直接在上面开发。或者直接在社区,拿一个案例,改改就成自己的项目,再进行二次开发。这是第一层次。
2、对于一个新的项目,进行充分调研,实践的过程中,不断集成,后续的二次开发,就能减少大量的时间。这是第二层次。
3、形成完备的仓库模板体系(pc端、mobile端、小程序端、甚至其他技术栈),提供完备的操作命令,在代码规范、模板、路由、样式、监控、埋点都有完整的实践。这是第三层次。
模板仓库怎么弄
根据个人的实践、我觉得应该从这么几个方面进行着手
1、规范
规范应该分为这么几个点:一个是对GIT规范的支持、还有就是对编码规范的支持、以及自己其他的一些设置。
GIT规范的支持,主要体现在githooks、以及commit message的格式校验,便于我们更好的管理git提交规范。
编码规范的支持,主要体现在eslint、stylelint两个方面,eslint主要是针对js、ts、vue、jsx等等进行校验,stylelint主要针对css、less等等进行校验。
同时,在githooks的precommit阶段,进行校验和修复。
这一部分:可以参考个人写的两篇文章:
1、GIT规范:juejin.cn/post/685705…
2、Lint规范支持:juejin.cn/post/685819…
2、基础库选择
基础库选择,就是要用比较知名的,大家都在使用的东西,进行我们的项目开发。
本质上,就是维护自己的package.json文件。
针对一个vue项目,个人会用这么几个库
axios、element-ui、lodash、moment、vue、vue-router、vuex、md5
3、基础代码集成
这里面分为这么几个部分:文件目录结构划分、pages/views、components、router、store、styles等等。
1、个人的vue模板仓库,目录大致是这样的
2、components
这一部分,名字叫组件,应该是觉得可以集成在项目中,大多数情况下,都用的着的一些东西。
3、views
这一部分,表示视图,应该提供一个类似demo的页面,帮助开发者快速进行页面生成,便于二次开发。
4、styles
这一部分,是公用的样式,一般会包括两个文件,一个是reset.css、一个是common.css。
reset.css是对样式的初始化。
common.css是对自己常用的一些布局进行梳理。
5、store
表示数据,是vuex的集成的地方。
4、命令提供
比如我们开发一个新的页面,这时候,免不了一些新建文件、引入组件等等重复性比较高的一些操作。
比如我们在pc端,最常用的业务,有这么三种情况:列表页、详情页、表单。
我们可以使用一个简单的命令,比如 npm run addPage,就能生成一个简单的页面。然后在这个基础上,直接进行二次开发。
5、其他集成
这一部分,比较偏向业务化,需要公司有足够的沉淀。体现在这么几个方面。
1、工具库集成。
这一部分,是一个专题,它的作用,是把公司常用的工具类集成起来。
比如:时间格式化、日期格式化、手机号校验、银行卡校验等等这些贴近团队内部的东西,集成进去。
具体的方式,可以通过发布npm包的方式,发布到npm上,然后接入模板仓库中。
2、业务组件库
如果我们经常使用element-ui,那么它对我们的效率的提升,是显而易见的。但是它的定位——基础组件库。
所谓的业务组件库,就是贴近业务,和我们公司内部的使用场景相关,在element-ui之上,二次封装,可以复用的东西,叫做业务组件库。
如果自己团队内部有这样的东西,可以接入到自己的模板仓库中!
3、监控和埋点
如果公司内部,有针对前端的监控和埋点插件,就直接接入。
但是如果没有的话(个人认为,绝大多数小公司是没有的),可以通过三方平台的方式接入。个人推荐阿里的——岳鹰监控
岳鹰:yueying-docs.effirst.com/start.html
埋点和监控,又是一个专题,后续会出系列文章,给大家分享。
个人实践
个人现在的想法,是提供几个基础的模板仓库,分为两端:pc、mobile。技术栈选择上会提供vue版本、以及react版本的仓库。
vue的pc版:github.com/mapbar-fron…
react的pc版:github.com/mapbar-fron…
不过这些仓库目前在更新中,本人会尽快的完善这些内容。
写在最后:本文是作者专题《前端团队技术打造》的一部分,查看更多内容请看下面的文章:juejin.cn/post/685705…