2.14、定期备份
备份是常被忽略的一件事情,但当我们遇见毁灭性场景时,缺少备份带来的损失是非常大的,常见场景:
- 服务器损坏,导致存在该服务器上的内容全部完蛋;
- 触发某致命bug或者错误操作(例如rm -f),导致文件和数据全部消失;
- 数据库出现错误操作或出现问题,导致用户数据、公司资产遭受严重损失;
意义:
避免在遭遇极端场景时,给公司带来不可估量的损失 。
3、应用层设计
3.1、多页和单页
除了特殊场景,通常推荐使用多页架构 。理由如下:
- 多页项目,页面和页面之间是独立的,不存在交互,因此当一个页面需要单独重构时,不会影响其他页面,对于有长期历史的项目来说,可维护性、可重构性要高很多;
- 多页项目的缺点是不同页面切换时,会有一个白屏时间,但通常来说,这个时间并不长,大部分现有大公司的线上网页,都是这样的,因此认为是可以接受的;
- 多页项目可以单次只更新一个页面的版本,而单页项目如果其中一个功能模块要更新(特别是公共组件更新),很容易让所有页面都需要更新版本;
- 多页项目的版本控制更简单,如果需要页面拆分,调整部分页面的使用流程,难度也会更低;
- 灰度发布更友好;
意义:
降低长期项目迭代维护的难度,
3.2、以应用为单位划分前端项目
在项目比较大的时候,将所有页面的前端文件放入到同一个代码仓库里,我之前参与过一家企业的前端项目开发,发现其就是这么做的 。根据使用经验来看[原创水印-作者:零零水(王冬),微信:qq20004604],存在很多问题:
- 会极大的增加代码的维护难度;
- 项目会变得很丑陋;
- 不方便权限管理,容易造成页面误更改或代码泄密;
- 任何人都有权利改任何他能看到的页面(在合并代码的时候,管理人员并不能确定他本次修改的页面是否是需求里他应该改的页面);
- 发布成本高,即使改一个页面,也需要发布所有资源;
- 方便进行管理,当某个业务有需求变更时,可以只给研发人员该业务前端应用的developer权限;
- 在需要发布某业务时,只需要发布该业务的所属应用即可;
规范项目,增加代码的安全性,降低项目维护成本 。
3.3、基础组件库的建设
这个蛮基础的,对于组件库的建设,不建议研发人员较少时去做这件事情,专职前端开发人数少于10人时,建议使用比较靠谱的第三方UI库,例如Antd,这样性价比更高 。
设计基础组件库的前提,是要求统一技术栈,这样才能最大化基础组件库的效益 。组件库建议以使用以下参考标准:
- 使用ts;
- 可扩展性强;
- 适用程度高;
- 文档清楚详细;
- 版本隔离,小版本优化加功能,大改需要大版本更新;
- 和UI协调统一,要求UI交互参与进来;
意义:
统一不同/相同产品线之间的风格,给用户更好的体验,减少单次开发中写UI组件时浪费的时间和人力,提高开发效率 。
3.4、技术栈统一
前端有三大主流框架,还有兼容性最强jQuery,以及各种第三方库,UI框架 。因此项目需求如果复杂一些,很容易形成一个大杂烩 。因此前端的技术栈必须统一,具体来说,建议实现以下举措:
- 三大框架选型其一,团队水平一般推荐Vue、水平较好推荐React,对外项目选React或者ng;
- 需要兼容IE8或更老版本时,建议使用jQuery;
- 组件库自建或者统一选择一个固定的第三方;
- 一些特殊第三方库统一使用一个版本,例如需要使用地图时,固定使用高德或百度或腾讯地图;
- 基础设施建设应避免重复造轮子,所有团队尽量共用,并有专门的前端平_台负责统一这些东西,对于特殊需求,可以新建,但应当有说服力;
推荐阅读
- 大型网站技术架构负载均衡技术介绍
- 推荐一款nginx+redis+ehcache高并发与高可用缓存架构
- Redis 核心原理和架构
- 了解分布式架构,让你的软件架构之路越走越顺
- Redis混合存储产品与架构介绍
- web前端分享HTML5中的nav标签
- API网关在微服务架构中的应用
- 程序员必备!关系型数据库架构的超强总结
- 软件即服务 架构师必备技能指南:SaaS架构设计
- 前端的异步编程有哪些了解呢?