前端项目重构的深度思考和复盘( 三 )

  • 拆分子系统(微前端)
  • 当然我们始终需要保持一个理念: 局部最优, 误增繁复.
    1. 基于已有的工程经验沉淀, 需要对工程化配置做进一步升级, 优化
    这种情况主要是在项目发展稳定之后, 需要思考的重构方向, 比如早期由于业务场景单一, 很多公共配置都写在业务代码里的, 随着业务复杂之后, 很多模块都需要使用改配置或者变量, 比如:
    // a.jsconst publicDomain = 'https://dooring.vip';const serverUrl = 'https://xxx.cn';// b.jsconst publicDomain = 'https://dooring.vip';// c.jsconst appid = 'xxxxxxxx';const website_Logo = 'http://h5.dooring.cn/logo.png';
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    对于这种零散且固定的变量, 未来可能会被多个页面或者模块复用, 所以为了降低成本, 我们可以把这些通用配置提取到外层, 作为公共配置文件, 这样后期新项目也能享受开箱即用的配置体验.
    拿我的亲身经验, 比如几年前我开发的低代码项目H5-Dooring, 有一些零散的配置信息分散在项目的各个角落, 后面经过几次重构优化之后, 整个项目只需要在配置文件中轻松配置内容, 即可一键控制页面的走向, 这里分享一下优化过后的配置文件:
    // h5-dooring全局配置文件define: {START_ENV,lang,// 配置h5端访问的域名h5Domain: 'h5.dooring.cn',// 设置当前版本号curVersion: dooringVersion,// 备案信息copyright: 'xxxxx-3',// 是否显示更新弹窗showUpdateModal: true,// 更新日志updateList:["1. 新增表格组件","2. 国际化优化","3. 表单详情页支持内部滚动","4. 个人图片库性能优化","5. 下载代码功能优化"],// 网站logo地址logo: 'http://cdn.dooring.cn/dr/logo.ff7fc6bb.png',// 入口页面是否展示赞助品牌和版权提示showAdsAndTip: true,// 登录时获取登录码的二维码qrcode: 'http://cdn.dooring.cn/dr%2Fcode1.png',// 友情链接展示friendLinks: [{name: 'V6',link: 'http://v6.dooring.cn/beta',title: '可视化大屏编辑器'},{name: 'Power',link: '/powernice',title: '文档编辑器'}],// 默认语言defaultLocale: 'zh-CN',langMap: langMap},
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
    • 24.
    • 25.
    • 26.
    • 27.
    • 28.
    • 29.
    • 30.
    • 31.
    • 32.
    • 33.
    • 34.
    • 35.
    • 36.
    • 37.
    • 38.
    • 39.
    • 40.
    • 41.
    • 42.
    • 43.
    这样, 我们的工程化结果就可以让不同的技术小伙伴轻松的享受, 让项目创建的成本和自由度得到极大的提升.
    1. 老旧脚手架无法适应当前的项目生产效率

    前端项目重构的深度思考和复盘

    文章插图
    图片
    对于这种场景, 我们就需要对脚手架自身有更多的研究和了解, 比如熟悉webpack设计思想, 熟悉babel的工作流程, 熟悉 nodejs 开发工具链的一些模式等, 这里分享几个比较成熟的先进脚手架, 大家如果觉得老项目工程比较老旧, 可以往这几个方向重构:
    • 基于webpack5.0的项目脚手架
    • vite
    • umi4.0
    如果大家对以上三种之一比较熟悉, 也可以基于他们二次封装成符合自身业务场景的diy项目工具.
    • 渲染层优化
    渲染层优化主要表现在产品的体验上, 比如:
    • 提高首屏加载速度
    • 白屏体验优化
    • 大数据列表渲染优化
    • api请求优化
    • 动画性能优化
    • dom过载导致的页面卡顿优化
    以上是我之前遇到的一些渲染优化的维度, 接下来和大家一一介绍解决思路.
    1. 提高首屏加载速度
    有很多方法可以帮助我们提高首屏加载速度, 比如:


    推荐阅读