Skip to content

第9课 前端负责人的工作内容

统计信息:字数 5440 阅读11分钟

前端架构师培训:架构设计+前端规范

1、架构设计

架构师

架构师:规范团队的工作形式;划分出低耦合高内聚的模块,并高效的设计模块间的沟通。模块的耦合度较低,后期的改动维护比较方便。

程序:代码和说明文档,数据结构和算法,模块+消息交流

业务架构:从需求出发划分架构;需求做的事情必须都完成

需求变成模块(模块能实现哪些功能,不能实现哪些功能)不同模块实现什么样的功能?现在这样功能设置,是否支持未来的功能扩展或者功能变化?

架构实例:编译器

编辑器:建造者设计模式

编辑器功能:可以编辑(可以设置字体字号);可以导入文档(初始化文字dom)管理模块;支持undo-redo

function writer(userConfig) {
  this.initer = new initer();
  this.styler = new controlStyle();
  this.stater = new state();
  this.initer.initDom(userConfig);
}

window.writer = writer();

function initer() {
}

initer.prototype.initConfig = function(config) {
}

initer.prototype.initDom = function(userConfig){
  let finalConfig = this.initConfig(userConfig);
  this.colorDom.onclick = function() {
    this.style.color('red');
  }
}

function controlStyle() {
}

controlStyle.prototype.setSize = function() {
}

controlStyle.prototype.setColor = function() {
}

function state() {
  this.stateArr = [];
  this.nowState = 0;
}

state.prototype.add = function() {
}

state.prototype.back = function() {
}

state.prototype.go = function() {
}

通用框架模板:

  • 业务模块:基础界面模块(统一的外观)+ 不同的子页面
  • 支持模块:组件库+工具库+公用CSS
  • 底层组件库(第三方或者自己完成,性能更高,代码更健壮,具有可更改性)
  • 工具模块(utils)工具模块:cookies token 对象操作等工具库(完成操作),可以减少重复的代码,便于修改,可更改性。自己把底层库和工具库写好(写一段时间),后面开发就比较健壮,可更改。
  • 公用CSS:如果公用的UI调整了,直接调整公用的CSS即可,不需要界面中都定义这个颜色,后期调整比较麻烦。
  • 网易的工作流程:立项评审(产品)+选型技术框架+进行UI评审(项目的主体色+辅助色+搭配色,字体风格)+前端公用的CSS)

公用CSS模块:一个类名对应一个属性,直接使用多类名(如果主界面颜色更改后,那么直接修改公用模块即可)

.color-orange {
  color: #2757ae;
}
.color-theme {
  background-color: green;
}
.d-flex {
  display: flex;
}

例子:Jquery 模块说明

底层依赖模块(工具方法,数据缓存,异步队列操作)

中层实现层:通过异步队列实现ajax,通过数据存取操作界面数据

高层API接口:选择器,DOM操作,样式操作,事件交互,AJAX,动画操作

顶层:封装$,实现高层API工具函数的绑定

2、定义公司的前端规范

前端规范:

  • 代码风格标准(ESLint)
  • 性能标准
  • 工作流程标准
  • 规范的层级:文档规范-评审人手动验证规范(review)-自动化规范验证(蚂蚁金服组件)

性能标准

现状评估:页面加载时间+动态响应速度+内存消耗

优化:增加缓存,减少体积,减少请求,减少链接时间

目标确定:平均加载时间+秒开率+内存测试

性能查看工具

1、F12控制台(Performance):查看内存消耗多少,DOM 渲染时间等。可以查看本地测试的调试情况,不能查看实际上用户的全部情况。

2、可以获取全局的变量,我们在小范围内部测试时,可以收到实时的性能回传,这样在发布的之前可以做性能优化。可以把信息写一个自动化程序,提交到后台作为反馈。

window.performance = 
{
  memory: {
    totalJSHeapSize: 1
    usedJsHeapSize: 1
    jsHeapSizeLimit: 1
  },
  timing: {
    connectStart: 1
    connectEnd: 2
    secureConnectionStart: 3
    requestStart: 4
    responseStart: 5,
    responseEnd: 6,
    domLoading: 7,
    domComplete: 8,
    loadEventStart: 9,
    loadEventEnd: 10,
  }
}
var per = window.performance;
function getmb(size) {
  return Math.floor(size/1024/1024, 4) + 'MB';
}
function getSec(time) {
  return time / 1000 + 's';
}
// 内存占用
getmb(per.memory.usedJSHeapSize)
// tcp 连接耗时:tcp链接耗时反映了服务器的问题:如果耗时很多,说明建立连接很慢。HTTP 协议基于TCP/IP协议。首先TCP/IP协议建立一个管道,然后HTTP在上面传输数据
getsec(per.timing.connectedEnd - per.timing.connectStart)
// 响应耗时:响应耗时,说明数据传输量的多少:解决方法,增加带宽或者减少数据量(资源懒加载)。
getsec(per.timing.responseEnd - per.timing.responseStart)
// dom render 耗时
window.onload = function() {
  getsec(per.timing.domComplete - per.timing.domloading)
}

然后可以把这部分性能数据发送到服务器上面

工作流程标准

  • 初始化项目(vue-cli react-create-app)
  • 项目构建和调试(webpack babel)
  • 测试(单元测试,CI CD 等集成测试)
  • 代码管理(git)

文档标准

  • 项目配置规范
  • 提交审核规范
  • 需求管理规范

Last update: November 9, 2024