前端项目的架构设计要考虑哪些方面
招聘前端小伙伴一起做前端基础建设,如果你和我一样热爱这个项目,请投递简历到2758570254@qq.com
评估开发时间的时候需要考虑哪些方面?才能给到靠谱的解决方案,以互联网医疗为例,我们可以从这几个方面去思考:
浅层需求
这方面的需求主要来自业务和技术总监
- 老系统(如:云检系统、云诊系统)的支持(提效)
- 项目的治理和快速开发,平台有很多大客户定制开发,定制开发的内容简单、重复,开发过程需要简化
- 角色支撑,系统将支持不同角色的不同权限,跨系统的角色设计
深层需求
进一步拆解
- 实现组件复用(组件库,组件平台)
- 简化配置
- 版本回退
- 统计闭环
- 渠道管理
- 灵活发布
- 系统治理
确定项目范围
- B端和编辑器,用做作品的编辑和发布
- H5/小程序 SSR(性能分析)
- 管理后台,前端分析
模块的拆解
- 编辑器的开发(所见即所得)
- 业务组件库(独立的第三方项目,可在画布和C端相互引用,实现复用)
- 统计服务,自定义数据统计(输入作品,输出作品的数据统计并进行数据分析汇总导出结果,指导运营策略)
- devOps脚手架,实现项目的持续的集成和发布
技术方案设计
- B端(编辑器) + B端的server端
- H5 SSR
- 后台 + 后台的server端
- 统计服务(openAPI)
- 组件库(组件平台)
- 脚手架(创建项目、发布项目)
- TODO 技术架构图
数据结构
- 结构设计,通过vnode规范来设计,节省沟通、学习成本,符合业界规范,减少时间浪费;组件用数组,不用对象,数组有序
- 数据同步,通过Vuex表示当前选择的组件
- 图层面板怎么设计,是computed计算出来的索引,而不是一个单独的数据
{
activity: {
title: '',
setting: '',
Props: '',
components: [
{
id:'',
name: '',
tag: '',
attrs: [],
children:[
'文本'
]
}
],
activeComponent:''// 当前选中的组件
}
}
数据流转
通过json实现数据的流转
- 编辑器 > 编辑器server > DB
- DB > SSR H5
- admin后台 > admin server > DB
产出
- 技术方案设计文档 会遇到的问题有哪些:
- 没有规范可依
- 没有思路
目录:
- 业务需求
- 整体架构设计
- 项目模块的拆分和关系图
- 特殊模块说明(比如:组件库、统计服务)
- 核心数据结构设计
- 数据流转关系
- 扩展性论证(组件、数据结构、编辑器功能、页面配置)
- 开发提效(脚手架、开发平台)
- 运维保障(线上服务、安全、监控报警)
基础架构(脚手架)开发,前端工程化
- 为什么要设计脚手架
- 所有的项目都是通过项目脚手架来创建
- 通过工具实现前端自动化,是提高研发效率的主要抓手
- 基础架构团队专门维护
- 必要性
- 提升前端研发效率(多团队,通用代码模板的初始化)
- git操作自动化,节约开发时间和麻烦
- 项目构建和发布
- 价值
- 研发过程自动化
- 研发过程标准化
- 研发过程数据化,优化流程的抓手
- 问题:自动化构建工具不能完全满足我们的要求(jenkins)
- 无法照顾到项目的本地开发
- jenkins插件是通过java语言开发
- 前端扩展性的功能相对简单
- 脚手架原理
- 脚手架是操作系统客户端 vue : 主命令 command : create param: vue-test-app --option : 选项 -: 选项参数
终端输入 > 在环境变量中找到vue命令 > 链接到vue.js文件 > node解析vue.js > vue.js 解析command > vue.js 执行command
问题:
-
vue-cli全局安装后添加一个命令为vue 因为在node的packge.json中绑定了路径,在bin中都为可执行命令,在vue-cli的packge.json当中绑定了vue命令和vueJs
-
全局安装vue-cli,发生了什么 node会将包下载到node_modules里面,解析包的bin里面解析packge.json,然后在node的bin目录配置一个软链接
-
vue命令为什么会执行node 在执行vue命令的时候,在环境变量$PATH中找到vue命令有没有注册,链接到vue.js文件,在vue.js 文件上添加了环境变量,指定用node执行,在环境变量中去找到node命令,执行
- 本质
- 脚手架是操作系统上的一个客户端 node是操作系统,通过命令行和参数执行 node编写软链接,会连接到包的js文件(可执行文件)
- 脚手架开发
- 分包:
- 注册命令:
- 参数解析:
- 帮助文档:
- 命令行交互:
- 日志打印:
- 变色:
- 通信,文件交付:
- 实操
- 创建文件夹
- 初始化 npm init
- 创建目录bin, 里面添加文件 index.js
- 添加环境变量
- 修改packge.json,绑定命令
- 登陆npm login, 通过npm publish 发布(npm怎么创建私库)
- 通过npm i xxx 安装
- 注意事项
- 实现脚手架开发的全流程
- lerna多Package管理的实现原理