前端项目架构怎么搭

news2024/11/20 8:26:34

前端项目架构

文章目录

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

框架选型标准

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

基于以上因素,对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.coloradmin.cn/o/640995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《大卫科波菲尔》社会网络分析

《大卫科波菲尔》社会网络分析 1.简介1.1数据集介绍1.2社会网络分析简介1.3《大卫科波菲尔》介绍 2.描述性统计3.网络概述4.社区发现5.好句摘抄6.总结和不足 1.简介 1.1数据集介绍 Newman教授的个人数据网站 网址:http://www-personal.umich.edu/~mejn/netdata/ 从…

网络设备容量测试该如何进行?

网络设备容量测试该如何进行? 网络设备容量测试是现代IT运维管理中的重要内容之一。随着企业对网络带宽需求的不断增加,为了更好地满足用户需求和提升网络性能,进行网络设备容量测试显得尤为重要。那么,网络设备容量测试该如何进行呢? 首先…

转行大数据该怎么学

大数据分析主要面向于离线计算。负责数据分析、报表统计等工作,重于数据价值的体现;数据的ETL调度,即E抽取、T转换、L加载,着重于离线数据的流转。虽然工作形式比较单一,但日常需求比较多,尤其是节假日的数…

UE特效案例 —— 武器附魔

一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设置相应的强度和颜色;PostProcessVolume设置曝光,设置Min/Max Brightness为1; 与关闭Game Sett…

从数据中台实践,浅谈数据质量管理

时代背景 近20年来,我国的科学技术发展日新月异,各种新兴技术层出不穷,深刻的改变着各行各业,也改变着我们的生活。大数据、云计算、人工智能的出现更是将技术革命推向了高潮。在这种背景下,继农业经济、工业经济之后&…

NSS周常刷密码(3)

[LitCTF 2023]md5的破解 from hashlib import md5 from string import ascii_lowercase,digits import itertools f1 LitCTF{md5can3derypt213thoughcrsh} for i in itertools.product(ascii_lowercasedigits, repeat4):t .join(i)flag f1[:13] t[:2] f1[13:16] t[2] f…

d2l_第四章学习_Classification/Softmax Regression

x.1 Classification 分类问题理论 x.1.1 Classification和Regression的区别 注意,广义上来讲,Classification/Softmax Regression 和 Linear Regression 都属于线性模型。但人们口语上更习惯用Classification表示Softmax Regression,而用Re…

13. ReentrantLock、ReentrantReadWriteLock、StampedLock讲解

13.1 关于锁的面试题 ● 你知道Java里面有那些锁 ● 你说说你用过的锁,锁饥饿问题是什么? ● 有没有比读写锁更快的锁 ● StampedLock知道吗?(邮戳锁/票据锁) ● ReentrantReadWriteLock有锁降级机制,你知道…

linux实验四 vi编辑器及用户管理

1、vi编辑器的详细使用 (1)在用户主目录下建一个名为vi的目录。 (2)进入vi目录。 (3)将文件/etc/man_db.conf复制到当前目录下,并用命令sudo修改man_db.conf的属性为所有用户可以读写。 &am…

华为OD机试真题 JavaScript 实现【贪心的商人】【2023Q1 100分】

一、题目描述 商人经营一家店铺,有number种商品,由于仓库限制每件商品的最大持有数量是item[index],每种商品的价格在每天是item_price[item_index][day],通过对商品的买进和卖出获取利润,请给出商人在days天内能获取…

SQL高级之order by优化

简介 MySQL支持两种方式的排序,FileSort和Index,其中Index的效率较高他是指MySQL扫描索引本身完成排序。FileSort方式效率较低 使用Index 一般情况下ORDER BY满足两种情况会使用索引排序 ORDER BY语句使用索引最左前列使用where子句与order by 子句条…

复习之linux虚拟化的介绍

一、虚拟化客户端及工具的安装 1.在虚拟机westos中列出: ps:虚拟机中安装虚拟机无意义,这里指是做实验看清楚虚拟机的创建! # dnf group list --hidden irtualization Client :虚拟化客户端 Virtualization Tools &…

稳定性治理二,稳定性分析

目录 重新认识系统稳定性(SLA与系分)稳定性分析(单点,容量和性能,依赖,数据保护,安全,资损,弹性能力,业务连续性,变更控制)压测方案&a…

面向对象3构造器

类的成员之三:构造器(Constructor) 我们 new 完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要 挨个为它们再赋值,太麻烦了。我们能不能在 new 对象时,直接为当前对象的 某个或所有成员变量直接…

美团买菜基于 Flink 的实时数仓建设

摘要:本文整理自美团买菜实时数仓技术负责人严书,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分: 1. 背景介绍 2. 技术愿景和架构设计 3. 典型场景、挑战与应对 4. 未来规划 Tips:点击「阅读原文」免…

ReentrantLock实现原理-条件锁

在前两篇文章中,我们了解了ReentrantLock内部公平锁和非公平锁的实现原理,可以知道其底层基于AQS,使用双向链表实现,同时在线程间通信方式(2)中我们了解到ReentrantLock也是支持条件锁的,接下来我们来看下,…

ISO21434 网络安全支持终止与退役(十一)

目录 一、概述 二、目标 三、网络安全支持终止 3.1 输入 3.2 要求和建议 3.3 输出 四、退役 4.1 输入 4.1.1 先决条件 4.1.2 进一步支持信息 4.2 要求和建议 4.3 输出 一、概述 退役不同于结束网络安全支持。一个组织可以结束对一个项目或组件的网络安全支持&#…

【Linux】常用命令总结

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 1.登录操作 2.操作系统 a.os是什么? b.好的操作系统的衡量指标?为什么要有操作系统? 3.Linux下的基本指令 a.ls指令 b.pwd指令 c.cd指令 d…

SB领导的特征

越是SB领导,往往越有这9大特征,难怪员工不服气。 孔子曾说过:“视其所以,观其所由、察其所安、人焉善哉?” 领导也是如此,想要判断领导是不是SB,关键就看他的所作所为。 越是“SB”的领导&#…

在CRM系统中如何获取联系人的信息?

CRM客户管理系统可以有效应对企业对联系人管理的需求,帮助销售人员随时随地查阅、记录、修改联系人,为业务开展做好铺垫。CRM中联系人是什么?如何获取联系人信息? 1.CRM中联系人是什么? CRM系统联系人指的是沟通对象…