热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何构建大型的前端项目

如何构建大型的前端项目1.搭建好项目的脚手架一般新开发一个项目时,我们会首先搭建好一个脚手架,然后才会开始写代码。一般脚手架都应当有以下的几个功能:自动化构建代码,比如打包、压缩、
如何构建大型的前端项目

1. 搭建好项目的脚手架

一般新开发一个项目时,我们会首先搭建好一个脚手架,然后才会开始写代码。一般脚手架都应当有以下的几个功能:

  1. 自动化构建代码,比如打包、压缩、上传等功能
  2. 本地开发与调试,并有热替换与热加载等功能
  3. 本地接口数据模拟
  4. css 模块化
  5. 检查并自动矫正不符合规范的代码,并优化代码格式

社区已有很多模板(boilerplate)或工具帮助我们搭建一个现成的脚手架,比如:

  • create-react-app
  • vue-cli
  • yeoman
  • html5-boilerplate
  • react-boilerplate
  • hackathon-starter

当然,如果这些模板或工具都不能满足你的需求,你也可以搭建自己的脚手架,可以参考:

  • 搭建自己的前端脚手架
  • 怎样提升代码质量
  • CSS 模块化
  • css 的弱化与 js 的强化
  • 本地化接口模拟、前后端并行开发

2. 定义好项目的目录结构

对于大型目录而言,一个好的目录结构是非常必要的。一个好的目录结构应当具有以下的一些特点:

  1. 解耦:代码尽量去耦合,这样代码逻辑清晰,也容易扩展
  2. 分块:按照功能对代码进行分块、分组,并能快捷的添加分块、分组
  3. 编辑器友好:需要更新功能时,可以很快的定位到相关文件,并且这些文件应该是很靠近的,而不至于到处找文件

可以参考 目录结构优化

3. 做好项目的组件化

这里的组件化,并非框架层面的组件化,而是工程层面的组件化。

当一个项目中的不同的区块需要共用同一段代码,或者不同项目之间需要共享同一个组件的时候,就需要做组件化了。

组件化一般分为项目内的组件化和项目外的组件化。

项目内的组件化是,同一个项目内不同区块共用的代码可以提取出来为一个单独的组件。

项目外的组件化是,跨项目间共享的代码可以提取出来为一个单独的项目,然后如正常的 npm 包一样使用。

可以参考:

  • 组件化
  • 私有 npm 仓库

4. 封装团队的构建工具

对于多项目而言,不管使用 webpack 还是 rollup 来打包项目,都会面临一些问题:

  1. 不同项目有不同配置文件,更新配置需要到处改,而且很难保持一致
  2. 如果有项目的升级,不同区块可能会有不同的配置

这个时候,把配置文件封装成一个项目,然后使用版本化的方式管理,如正常的 npm 包一样使用,就会很方便了。

比如,我的项目都是使用 lila 来构建的。

5. 选好基础 js 框架、ui 框架、页面模板

开始开发前,需要先选好基础 js 框架,比如 react、vue、angular、jquery 等,因为一旦选定,基本上后面都不能更换了,因为更换的成本太大了。

选好基础 js 框架后,可以选一个比较好的 ui 框架,这样可以少写很多代码,可以参考 前端最受欢迎的 UI 框架。

如果页面的定制化程度不高,可以选择一个比较好的页面模板,比如:

  • AdminLTE
  • vue-element-admin
  • gentelella
  • ngx-admin
  • ant-design-pro

6. 测试

一般前端测试分以下几种:

  1. 单元测试:模块单元、函数单元、组件单元等的单元块的测试
  2. 集成测试:接口依赖(ajax)、I/O 依赖、环境依赖(localStorage、IndexedDB)等的上下文的集成测试
  3. 样式测试:对样式的测试
  4. E2E 测试:端到端测试,也就是在实际生产环境测试整个应用

一般会用到下面的一些工具:

  • jest
  • enzyme
  • cypress
  • selenium
  • puppeteer

另外,可以参考 聊聊前端开发的测试。

7. 持续集成构建与测试

一般大型工程的的构建与测试都会花很长的时间,在本地做这些事情的话就不太实际,这就需要做持续集成构建与测试了。

持续集成工具用的比较多的:

  • jenkins
  • gitlab ci

jenkins 是通用型的工具,可以与 github、bitbucket、gitlab 等代码托管服务配合使用,优点是功能强大、插件多、社区活跃,但缺点是配置复杂、使用难度较高。

gitlab ci 是 gitlab 内部自带的持续集成功能,优点是使用简单、配置简单,但缺点是不及 jenkins 功能强大、绑定 gitlab 才能使用。

另外,如果是开源项目,travis ci 是个不错的选择。

后续

更多博客,查看 https://github.com/senntyou/blogs

作者:深予之 (@senntyou)

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)


推荐阅读
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文总结了优化代码可读性的核心原则与技巧,通过合理的变量命名、函数和对象的结构化组织,以及遵循一致性等方法,帮助开发者编写更易读、维护性更高的代码。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • 本文详细介绍了如何利用Go语言和WebSockets技术构建一个高效的实时聊天系统。随着网络应用的日益复杂化,实时交互成为了提升用户体验的关键要素之一。通过本指南,开发者可以学习到最新的技术和最佳实践。 ... [详细]
  • [Vue.js 3.0] Guide – Scaling Up – State Management
    [Vue.js 3.0] Guide – Scaling Up – State Management ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 国际高保真音乐流媒体平台的崛起:亚马逊与谷歌的竞争策略
    近期,亚马逊和谷歌正积极筹备推出高保真音乐流媒体服务,预计在2019年底前上线。根据市场研究机构CIRP的数据,截至2018年12月,美国智能音箱的安装量已增至6600万台,较第三季度增长显著。这一趋势对Spotify等传统流媒体平台构成了新的挑战。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
author-avatar
地之南_816
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有