热门标签 | 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许可证)


推荐阅读
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 本文介绍了解决MySQL数据库Error Code: 1030错误的方法和原因。通过检查文件权限和磁盘空间,注释掉innodb_force_recovery参数等步骤,可以解决无法插入数据和修改文件的问题。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
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社区 版权所有