23. 如何设计一个前端项目

23. 如何设计一个前端项目

      • 设计项目需要关注的重点:
    • 技术方案设计和选型
      • 技术选型的影响因素
      • 前端框架和工具选型
    • 多人协作和团队规范
      • 使用一直的代码开发规范
      • 制定合适的代码流程规范

设计项目需要关注的重点:

  1. 技术方案设计和选型
  2. 多人协作和团队规范的制订

技术方案设计和选型

从0开始搭建项目,需要考虑一下技术选型:

  1. 前端框架和脚手架
  2. 状态管理工具
  3. 路由管理
  4. 代码构建和编译方案

需要基于项目定位(To B还是To C), 用户量体系,项目复杂度因素,进行技术方案的设计

技术选型的影响因素

一般来说从头开始搭建前端项目:

  1. 项目规模如何,功能交互是否复杂,面向哪些用户
  2. 是否存在多人协作?团队规模大概是怎样的?
  3. 团队成员技术栈如何?对新技术的接受程度怎么样?
  4. 还是否有现有技术方案可以参考?是否需要进行调整?

为什么要考虑这些问题?

  • 项目规模和功能交互会影响框架和工具的选型轻量项目可能react/Vue框架比较灵活,大型项目还可使用Angular全家桶。
  • 用户体系会影响系统兼容性的倾向,比如用户受众年龄偏大,则需要考虑使用机型性能可能相对较差,需要兼容的机型品牌比较多。
  • 存在多人协作需要考虑完善团队规范,同时尽量使用工具来保证流程规范。
  • 团队技术栈倾向同样影响技术选型,如果有县城的技术方案和项目安利,可以考虑是否符合实际需要,是团队成员熟练的工具可以避免很

前端框架和工具选型

对于前端框架和工具你的使用,项目面临两个选择:

  1. 使用开源/现有框架
  2. 造轮子
    使用开源的好处是,它们有完整详细文档,丰富的社区资源。在遇到问题的时候也能通过issues和Stack Overflow来查找。
    前端发展到现在,几大框架的之间的差距越来越小,目前主流的三大框架包括 Angular、React 和 Vue可以进行选型和对比:
框架优势不足
Angular提供完整的开发规范和解决方案,解决了多人协作、大型应用的痛点基于大型复杂项目设计,解决方案大而全导致相对笨重设计和使用的概念很多(如依赖注入/注入器/令牌、指令、模块化、AOT 等),入门成本较大
React概念较少,对前端编码侵入较少,开发者只需要掌握 Javascript 便可实现大多数功能框架(库)轻量,可灵活搭配各种状态管理工具、脚手架等进行开发对于大型复杂项目,需要自行搭配其他配套工具来解决
Vue对新人友好、文档和社区较完善框架(库)轻量,可灵活搭配各种工具进行开发,官方也提供完整的全家桶解决方案如指令和语法糖有一定的概念门槛对于大型复杂项目,需要自行搭配其他配套工具来解决

除了热门框架,有能力的团队可以选择贴合自身项目需要,相对小众的框架和工具,甚至可以自行研发合适自己的。

如果想要做自己的框架,尤其是想要在业务中尝试使用,需要万分谨慎,除了需要贴合业务实际需要,更要具备足够的责任感,需要提供友好的文档和API给其他人,不然对项目的维护,新加入的成员来说,会带来毁灭性的开发体验。
技术选型没有标准答案,很多时候我们还需要结合项目现状,选择适合团队使用的技术栈。

多人协作和团队规范

相比项目的搭建和快速上线,项目的维护永远是程序员的大头。搭建一套代码合流程规范,不知将规范写的淋漓尽致,更是需要使用流程化的工具来确保大家遵守规范。

使用一直的代码开发规范

好的编码习惯很重要,语义化的变量命名,适当的注释,都会对代码的可读性有很大的提升。但是每个人习惯都不一样,所以我们需要有统一的代码规范。
可以是使用一些工具来确保代码符合规范:

  • 使用 Eslint 检测代码规范;
  • 使用 Prettier 自动化格式代码;
  • 使用 Git Commit Hooks 拒绝不符合规范的代码提交;
  • 使用流水线检测出不规范的代码,并拒绝合入主干分支;
  • 使用流水线检测出不规范的代码,并拒绝进入发布流程。

制定合适的代码流程规范

一般来说开发流程会包括:

  • git 创建分支过程 : 分支命名,是否需要关键需要单或者bug单
  • git提交代码过程 : 检查代码是否符合规范,只允许合格代码进行提交。
  • 分支提交过程:需要进行交叉Code Review , 对方同意后才允许合入代码
  • 合入主干过程:对代码进行自动化构建和测试,功能正常且符合规范的代码才可以合并主干、
  • 代码发布过程:自动拉去主干分支,创建发布分支,对代码进行自动化构建和测试,正常后会开始进入灰度发布流程。
    通过自动化的工具我们同样可以确保以上流程按预期进行,很多团队也会使用持续继承(CI)和持续部署(CD)。CI/CD在项目中的落地,很多时候会表现为流水线的开发模式。建立完成的 CI/CD 流水线,除了可以按照规范约束每次代码提交的质量,还可以有效地提高效率。越是大规模的团队越能体会搭配CI/CD带来的便利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/242577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现CHOA-BiLSTM黑猩猩优化算法优化双向长短期记忆网络回归预测 (多指标,多图)

回归预测 | MATLAB实现CHOA-BiLSTM黑猩猩优化算法优化双向长短期记忆网络回归预测 (多指标,多图) 目录 回归预测 | MATLAB实现CHOA-BiLSTM黑猩猩优化算法优化双向长短期记忆网络回归预测 (多指标,多图)效果…

YOLOv8改进 | 2023主干篇 | EfficientViT替换Backbone(高效的视觉变换网络)

一、本文介绍 本文给大家带来的改进机制是EfficientViT(高效的视觉变换网络),EfficientViT的核心是一种轻量级的多尺度线性注意力模块,能够在只使用硬件高效操作的情况下实现全局感受野和多尺度学习。本文带来是2023年的最新版本…

是谁,在参与数十亿美元的量子市场?

量子技术是最不为人们所了解、但却最有希望在未来几年颠覆商业和产业的进步技术之一。 很少有像量子信息科学市场这样小的市场能引起如此热烈的讨论。上周,根据Hyperion Research在圣克拉拉举行的Q2B硅谷会议上发布的年度量子计算(QC)市场更新…

【开源软件】最好的开源软件-2023-第23名 Apache Druid

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

Git使用——IDEA中git branch显示乱码 后面提示standard input 如何解决

问题描述: idea中的terminal中输入git branch显示乱码 解决方案 在idea的file里面,进行设置 选择安装的git下面的bash 参考博客: https://blog.csdn.net/weixin_39925939/article/details/122410453

使用 Timm 库替换 YOLOv8 主干网络 | 1000+ 主干融合YOLOv8

文章目录 前言版本差异说明替换方法parse_moedl( ) 方法_predict_once( ) 方法修改 yaml ,加载主干论文引用timm 是一个包含最先进计算机视觉模型、层、工具、优化器、调度器、数据加载器、数据增强和训练/评估脚本的库。 该库内置了 700 多个预训练模型,并且设计灵活易用。…

算法基础之树的重心

树的重心 无向图: 边没有方向 有向图:边有方向 只能单向询问 无向图建立双向的边 要求输出每种情况连通块个数最大值的最小值**(最小的最大值)** #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace s…

开发案例:使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候&#xff0c;首先分析一下大概的实现结构以及开发思路&#xff0c;方便我们少走弯路&#xff0c;也可以使组件更加容易拓展&#xff0c;维护性更强。然后我会把功能逐个拆开来讲&#xff0c;这样大家才能学习到更详细的内容。下面简单阐述…

一个Redis实例最多能存放多少keys

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

【Qt QML入门】Image

Image类型显示一个图像。 使用source属性将图像的源指定为URL。图像可以以Qt支持的任何标准图像格式提供&#xff0c;包括位图格式&#xff0c;如PNG和JPEG&#xff0c;以及矢量图形格式&#xff0c;如SVG。 如果没有指定宽度和高度属性&#xff0c;图像将自动使用加载图像的大…

如果我忽然嗝屁了,家人怎么继承我的财产

前言 笔者很喜欢的电影《寻梦环游记》有这么一句经典台词&#xff1a;“真正的死亡是世界上没有一个人记得你”。 然而&#xff0c;现实中我们所说的“死亡”&#xff0c;其实就是 他再不能与这个世界、与自己在乎的人有新的互动了。 本文&#xff0c;笔者想写一写 关于死亡的…

iOS16.5 以上12小时制/24小时制 HH/hh引起的时间计算错误

iOS16.5以上的版本&#xff0c;如果用yyy-MM-dd HH:mm:ss转换时间&#xff0c;则有肯能发生错误。 先上代码&#xff1a; NSString * timeStr "2023-01-01 11:13:32"; NSDateFormatter * dateFormatter [[NSDateFormatter alloc] init]; [dateFormatter setDateFo…

windows10下jdk安装

文章目录 windows10下jdk安装说明what安装包下载执行安装包验证是否安装成功 windows10下jdk安装 说明 操作系统&#xff1a;windows10 版本&#xff1a;1.8 what JDK(Java Development Kit) 是 Java 语言的软件开发工具包 安装包下载 https://www.oracle.com/java/techn…

Proxmox服务安装

文章目录 系统盘制作 TODO安装系统安装Proxmox系统安装wpa服务配置wifi通过IP访问Proxmox创建服务器配置服务器网络连接虚拟机方式第一种方法&#xff1a;通过建设OpenVPN方式连接虚拟机第二种方法&#xff1a;通过端口转发直连虚拟机设置安装ubuntu服务器允许root用户远程登录…

.net core提示The xx field is required,One or more validation errors occurred

访问接口时缺少model中的参数时&#xff0c;会提示&#xff1a; The xx field is required One or more validation errors occurred原因是.net core webapi默认参数为不可空&#xff0c;因此会验证并报错。 解决方案&#xff1a; 在项目的.csproj中&#xff0c;修改Nullable…

Android--Jetpack--数据库Room详解二

本是青灯不归客&#xff0c;却因浊酒恋红尘 一&#xff0c;基本使用 关于Room数据库的基本使用&#xff0c;请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二&#xff0c;Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用&#xff0c;请参考文章Andr…

谷歌上架应用的机审流程或审核机制是怎么样的?

Google play是全球最大安卓应用市场&#xff0c;拥有巨大的流量&#xff0c;是开发者们上架应用的首选平台。不过&#xff0c;开发者们的应用需要经过谷歌严格审核&#xff0c;确保符合谷歌应用相关政策和法律法规才能成功上架。 众所周知&#xff0c;谷歌审核系统&#xff0c…

基于ssm民宿管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本民宿管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

c语言结构体调用格式与对齐

1.声明形式&#xff1a; struct 结构体名字 { 结构体成员 }结构体变量名&#xff1b; 2.赋值方法 3.结构体对齐&#xff1a; 1.起始偏移量&#xff1a;默认结构体第一个元素对齐0起始偏移量&#xff0c;第一个元素占一个字节&#xff0c;此时偏移量为1. 2.标准数&#xff…

基于stm32 FP-AUD-SMARTMIC1 音频系统开发

基于stm32 FP-AUD-SMARTMIC1 音频系统开发 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, FP-AUD-SMARTMIC1 是一个用于 STM32F4Discovery …