前端项目架构怎么搭

news/2024/7/10 1:05:35 标签: 前端, 架构, javascript, vue

前端项目架构

文章目录

  • **前端项目架构**
    • **框架选型标准**
    • **异常处理**
    • **自动化构建** **(打包)**
    • **基础组件**
    • **公共方法封装**
    • **目录结构分配原则**

框架选型标准

​ 框架的选型需要考虑很多因素,如该技术能否可以满足业务需求、浏览器支持情况、框架自身是否成熟、团队成员对该技术(或框架)的掌握情况,是否有人可以全局把控、学习成本是否可以接受、该技术(框架)本身的稳定性,它的社区、维护者等;在项目实施中,我们一般会关注到要有可复用的组件,要打包部署方便,最好学起来不要太复杂,方便能力建设、节省招聘成本等等。

基于以上因素,对vue.js、react、AngularJS这三个当前最流行的框架来做一些分析:

angular:

​ 完善的MV*框架,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能

缺点:

  1. 验证功能错误信息显示比较薄弱,需要写很多模板标签

  2. 框架偏重,学习曲线陡峭

React:

  1. 子组件重复渲染问题需要手动优化

  2. 可以使用redux进行状态管理,函数式、不可变、模式化,时间旅行

  3. 可使用JSX,完全的javascript能力

  4. 更繁荣的社区生态

Vue

  1. 可使用JSX,但推荐使用模版语言而不是JSX

  2. 学习曲线平缓,容易上手

  3. 更轻量,单页面

  4. 框架稳定更新优化,社区活跃

​ 组件复用是每个项目都会重点关注的一个维度。合适的、职责单一的组件会大大提升新特性的开发效率和工程的可维护性,也能方便地进行测试。Vue、Component的组件相对灵活、轻量,添加依赖就可以无缝集成到遗留系统中。对于从0到1的系统,也可以使用新的实践来构建工程,例如ES6、Webpack等技术。Angular官方推荐使用TypeScript,这需要单独构建和打包,不方便与遗留系统集成。

​ 在学习曲线维度上,Vue.js和React的重点更侧重于创建可复用、易于测试、能灵活集成的组件。当然,通过其它扩展组件,以及一些脚手架插件的支持,也可以方便的搭建一个采用最新实践的前端应用的构建框架。它们最大的优点是按需定制,学习曲线平滑,构建出来的应用小而精。

​ 相对来说,Angular是大而全的框架,它们更侧重于大型前端工程的构建,为开发人员屏蔽项目构建底层的细节,提出了自己的一套解决方案。使用它们的难点是要度过前期曲线陡峭的学习期,优点是由于使用了标准化的开发方式,后期能极大的提高开发生产力,提升开发效率。

​ 综上所述,以目前团队成员的学习情况以及框架的上手难度、业务需求适用情况来说,建议使用vue.js

异常处理

异常处理一般主要体现两个方面:

  1. 前端校验异常处理,如信息校验、错误提示信息、警告提示等。

  2. 另一个是前后端交互异常处理,前端根据后端封装的接口结构对其进行方法封装。如接口请求错误、软硬提示信息等。前端只需要根据对应的情况展示不同的提示内容即可。

自动化构建 (打包)

​ 自动化构建是前端架构过程中非常重要的一环,架构者可以多花点时间和精力在上面,这个过程对整个团队的开发效率以及项目的整理质量有很大关系,可以让开发的同学在开发的过程中只用关心业务逻辑,不会被其他问题干扰。目前自动化构建工具的选择有webpack、grunt、gulp、fis等,各有各的优劣,按照项目实际情况选择一个即可。

自动化构建过程主要要考虑和解决好以下几个部分:

  1. 提高开发效率:热加载、开发和生产代码分离

  2. 优化性能:代码合并压缩、文件版本号、按需加载、图片优化

  3. 提高代码质量:模块化、ES6+Babel编译、css预处理、eslint代码检查、无用代码片段过滤

项目的架构在最开始都会有很多的优化空间,在开发的过程中需要不断对不足的地方进行优化,所以项目的架构过程是一个不断完善的过程。

基础组件

​ 如果我们引入一些成熟的UI框架,项目的基础组件很大一部分都得到了解决,比如弹框、日期、分页等控件。那这里强调的基础组件,一类是对这些UI控件的二次封装,比如下拉框、多选框等,第二类是公用的组件,比如头部、尾部、加载状态、为空状态等,这些在架构的过程中可以提前考虑下。

如使用vue框架,可以选择element-ui进行配合进行开发。Element的官方介绍是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。它提供了我们项目中常用的各类组件,基本可以满足需求。

公共方法封装

​ 在项目开发过程中会遇到许多方法复用,我们把这些方法抽离出来封装到公公方法中。避免多次定义造成的代码冗余或覆盖。如:格式化日期、根据value值获取列表对应的label值、request请求方法、处理字符串方法等。

目录结构分配原则

清晰的目录结构,会让整个项目显得有逻辑性,便于管理源代码,也方便开发人员去识别不同的文件夹和文件,这样就可以快速找到特定文件的特定代码,大大降低了对整个项目的理解成本,也让新同学可以快速上手。以下是一个推荐的基础目录结构:

在这里插入图片描述


http://www.niftyadmin.cn/n/428393.html

相关文章

统信UOS系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.11.2,并配置编译测试Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131182539 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

关于数据库SQL优化

简介 在项目上线初期,业务数据量相对较少,SQL的执行效率对程序运行效率的影响可能不太明显,因此开发和运维人员可能无法判断SQL对程序的运行效率有多大。但随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行…

nllb-200-distilled-600M语言对照表

这个模型就是机翻,好处就是不花钱,不用联网,支持语言多,坏处就是翻译质量差,中文资料少,我找了半天才在GitHub上找到对照表 flores200c 凑合着用 Languages in FLORES-200 LanguageFLORES-200 codeAceh…

「网络编程」第一讲:初识网络_网络基础1

「前言」文章是关于网络编程方面的,今天内容大致是网络基础,讲解下面开始! 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 青山不改,绿水长流 ——白居易 目录 一、…

【6.13 代随_56day】 两个字符串的删除操作、编辑距离

两个字符串的删除操作、编辑距离 两个字符串的删除操作1.方法图解步骤代码 编辑距离1.方法图解步骤代码 两个字符串的删除操作 力扣连接:583. 两个字符串的删除操作(中等) 1.方法 确定递推公式 当word1[i - 1] 与 word2[j - 1]相同的时候 …

OpenCV项目开发实战--对图像种的对象进行无缝克隆-附Python、C++的代码实现

文末附基于Python和C++两种方式实现的测试代码下载链接 图 1:无缝克隆示例:一架飞机被克隆到傍晚天空的图片中。 OpenCV 3 中引入的令人兴奋的新功能之一称为无缝克隆。有了这个新功能,您可以从一个图像中复制一个对象,然后将其粘贴到另一个图像中,从而使构图看起来无缝…

修复cors跨域资源共享漏洞

CORS介绍 浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的 ,即JavaScript或Cookie只能访问同源(相同协议,相同域名&#xf…

ASP.NET教育报表管理系统-权限管理模块(源代码+论文)

随着教育改革的不断深化,建立一套能够适应这些改变的教育报表管理 系统也就显得尤为重要。教育报表管理系统是根据某教育局的实际需求进行设计开发的,该报表系统主要记录了教育局其管辖范围内所有教学单位内教育情况的数据,并可进行汇总。 本论文设计采用B/S模式,利用VS20…