怎么做架构设计
什么是程序
程序 = 模块 + 消息交流
架构师是做什么的
- 规范——有效的规范团队工作形式
- 模块——划分出低耦合的模块,并高效的设计模块间的沟通
宏观架构图
如何分析业务架构
- 从需求出发划分模块
- 根据需求——模块做的事情不能多不能少
在线编辑器
需求:能编辑,调整字体颜色和大小,回退前进
拆分需求:
1.初始化dom,初始化样式
2.方法控制颜色和大小
3.状态记录和管理
整理思路:
初始化模块(解析用户配置,初始化dom)=》 字体控制模块(颜色,大小调节)=》 状态模块(记录状态,操作状态)
// 初始化模块
function init(config) {
this.defaultConfig = {};
}
init.prototype.initConfig = () => {
// 产出最终配置
}
init.prototype.initDom = (finalConfig) => {
// 生成dom
// 绑定事件
fontDom.onclick = () => {
this.styler.sizeChange(size);
}
backDom.onclick = () => {
this.stater.back();
}
}
// 字体控制模块
function styleControl() {
}
styleControl.prototype.colorChange = () => {
}
styleControl.prototype.sizeChange = () => {
}
// 状态模块
function stateControl() {
this.stateArr = [];
this.nowin = 0;
}
stateControl.prototype.push = () => {
this.stateArr.push(state);
}
stateControl.prototype.go = () => {
if (this.nowin < this.stateArr.length - 1) ++this.nowin;
return this.stateArr[this.nowin];
}
stateControl.prototype.back = () => {
}
架构模板
流程:项目立项评审->ui评审(确定项目主题设计)->产出主题色,配色方案,字体搭配,字体色,大体结构等
-> 前端设计通用css
比如:
.color-theme-back {
background-color: black;
}
.color-theme-font {
color: green;
}
......
如何定义公司的前端标准
团队前端标准包含哪些?
- 代码风格标准——eslint
- 性能标准——自动化的性能测试
- 工作流程标准——标准的工具链流程
- 文档规范->人工监督->建立一整套自动化规范
性能标准
如何查看网页的各种性能指标
除了浏览器调试工具自带的performance,我们也可以在控制台输入window.performance,拿到我们需要的各种性能指标
在测试阶段,页面嵌入一小段性能测试代码,回传后台接口,在后台看到可视化数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>性能指标</title>
</head>
<body>
<div id="mydiv" class="div1"></div>
<div class="div1 img1"></div>
<div class="div1 img2"></div>
<div class="div1 img3"></div>
<div class="div1 img4"></div>
<script>
var _performance = window.performance;
function getmb(size) {
return `${Math.floor(size / 1024 / 1024, 4)}mb`;
}
function getsec(time) {
return `${time / 1000}s`;
}
console.log(`内存占用${getmb(_performance.memory.usedJSHeapSize)}`);
// http协议建立在tcp上,tcp从服务器输送内容到b/s
console.log(`tcp链接时间${getsec(_performance.timing.connectEnd - _performance.timing.connectStart)}`);
console.log(`响应时间${getsec(_performance.timing.responseEnd - _performance.timing.responseStart)}`);
console.log(`dom渲染耗时${getsec(_performance.timing.domComplete - _performance.timing.domLoading)}`);
</script>
</body>
</html>
工作流程标准
完整的工具链:一个自己的脚手架->项目内置-构建-测试-自动化提交
晋升要点
程序员的角色升级
路漫漫其修远兮