第1周 需求分析和架构设计:做什么,如何做?
开工之前,先来看看我们到底要做一个什么项目,有哪些功能。然后站在上帝视角,从整体的架构层面,该如何设计该项目。
课程安排:
1、需求分析-了解软件开发生命周期
2、技术整体架构
3、研发流程优化背后的思考
4、为什么要优化前端研发流程
5、前端监控体系+测试体系分享
第2周 脚手架架构设计和框架搭建
万丈高楼平地起,讲解大厂级别的脚手架是如何设计的,从头开始绘制架构设计图,并完成脚手架的框架搭建。
课程安排:
1、掌握脚手架的实现原理
2、掌握脚手架管理工具Lerna和常用操作
3、基于Lerna构建脚手架项目
4、图解脚手架架构设计
5、脚手架工程体系设计
6、深入阅读Lerna源码,剖析require.resolve原理
第3周 脚手架核心流程开发
本周将完成脚手架内核@imooc-cli/core子项目设计,并开发脚手架的执行准备阶段和命令注册阶段。
课程安排:
1、脚手架核心子项目core包架构设计
2、掌握脚手架node运行版本限制
3、掌握脚手架root自动降级
4、掌握npmlog实现自定义脚手架日志
5、掌握脚手架用户主目录检查
6、掌握脚手架入参解析和环境变量配置
7、运用npm API实现脚手架自动更新
8、掌握脚手架命令注册原理
9、运用commander简化脚手架命令注册
10、node支持ES模块化标准的两种方法
第4周 脚手架命令注册和执行过程开发
本周将完成脚手架内核@imooc-cli/core子项目的执行命令阶段,我们将采用分离式架构设计、缓存结构设计大幅提升脚手架的下载速度和执行性能。
课程安排:
1、掌握脚手架执行命令原理
2、掌握高性能脚手架架构思路和具体方法
3、封装通用的npm包管理类Package
4、掌握API方式完成npm包下载和自动更新
5、掌握脚手架缓存结构设计
6、掌握Node多进程的四种实现方案
7、深度解析Node多进程child_process库源码
第5周 脚手架创建项目流程设计和开发
本周将开发脚手架创建项目的@imooc-cli/init子项目,完成init包的准备阶段和下载模板阶段开发。
课程安排:
1、脚手架项目创建能力架构设计
2、深入理解命令行交互原理和inquirer的应用
3、掌握服务端框架egg.js的开发方法
4、掌握云mongodb和egg接入mongodb方法
5、运用egg.js+mongodb构建项目模板API
6、掌握正则表达式并完成项目名称自动格式化
7、掌握spinner实现命令行loading效果
8、完成标准项目模板开发
9、完成项目模板的缓存和下载功能
第6周 脚手架项目和组件初始化开发
init包将完成项目和组件的初始化过程,本周将完成init包的安装模板阶段。
课程安排:
1、掌握脚手架标准安装模式和自定义安装模式实现原理
2、掌握ejs模板的实现原理和开发方法
3、基于ejs模板完成项目模板动态化
4、完成标准组件模板开发
5、完成项目或组件项目标准安装流程开发
6、完成自定义项目模板初始化流程开发
7、ejs源码解析——彻底搞懂ejs模板编译和渲染原理
8、require源码解析——彻底搞懂Node.js模块加载原理
第7周 B端项目需求分析 和 架构设计
对于一个复杂前端项目,在编码之前,分析过程可谓是“磨刀不误砍柴工”,本周我们来给大家讲解怎样一步步抽丝剥茧,从需求到难点,再到系统整体设计。
课程安排:
1、整体需求分析初步 和 细化:编辑器需求分析
2、编辑器开发的难点分析 和 难点可能使用解决方案
3、整体架构设计
第8周 前端基础技术回顾和巡礼
在课程正式开始之前,扎实的基础知识是本课程的必备条件。这一周,让我们一起来温习 - typescript,vue3,ant-desing-vue 以及 webpack 和 rollup 的基础知识。
课程安排:
1、Typescript - 进入类型的世界
2、vue3 以及 新版全家桶 vuex,vue-router
3、ant-design-vue - 完美支持 vue3 的组件库
4、webpack 和 rollup - 现代打包工具双雄
第9周 项目整体搭建
万事开头难,本周我们使用技术储备中简介的知识,来搭建项目的大体结构和框架,包括 项目创建,代码结构,基础路由,基本布局和 基本的全局数据结构。
课程安排:
1、使用 imooc-cli 创建项目
2、规定代码规范和项目结构 ,安装编辑器辅助插件
3、使用 vue-router 添加基础路由结构
4、使用 ant-design-vue 搭建基础布局
5、使用 vuex 创建项目的基本数据结构
第10周 编辑器基本布局,及业务组件库初步开发
本周从编辑器开始开发,完成编辑器的基本布局,并且分析组件属性和修改组件属性的对应关系,创建业务组件库的第一个组件,并且完成最简单的编辑器交互,最后提出了业务组件实时实现编辑更新的解决方案。
课程安排:
1、创建编辑器的基本布局
2、分析画布组成元素的组件属性
3、创建第一个组件 LText
4、属性和编辑组件的实现方案
第11周 掌握测试基本工具,给组件库添加单元测试
本周从什么是测试入手,简介了测试的基本概念,介绍通用测试工具 Jest 和 Vue 测试框架 vue-test-utils,然后使用这两种工具完成LText组件的单元测试。
课程安排:
1、Jest 简介和基本用法
2、vue-test-utils 的基本用法
3、为 Ltext 添加测试用例
第12周 通用上传组件开发以及使用
本周主要从业务组件 LImage 入手,从易到难使用 TDD 开发一个复杂的通用上传组件,之后将组件用于左侧组件列表中,完成图片组件的功能。
课程安排:
1、为通用上传组件写需求。
2、从易到难渐进式使用 TDD 的混合方式开发一个复杂的上传组件。
3、将组件用于左侧组件列表用于创建 LImage 组件。
4、衍生出来的一系列扩展知识:比如 Vue3 组件的类型,Vue3 通信的几种方法,以及 Element Plus Upload 组件的源码分析等。
第13周 业务组件库打包、发布,添加 CI/CD
本周继续丰富业务组件库的功能,将组件库剥离成单独的代码库,使用 rollup 打包成多种 JS 模块形式,发布到 NPM,最后还使用 travis 完成了 CI/CD 流程。
课程安排:
1、创建单独的组件库代码库
2、添加剩余的业务组件
3、使用 rollup 打包生成多种 JS 模块
4、发布至 npm 和 使用 husky 完成发布前测试
5、使用 travis 完成组件库 CI/CD 功能
第14周 后端技术选型以及基础知识巩固
在项目开始之前,我们需要根据需求分析完成技术选型,以及基础的夯实。本周深入浅出的介绍了后端框架以及数据库从选型,基础再到深入,最后得出最佳实践的过程。
课程安排:
1. 服务器端需求分析和技术选型
2. Egg.js + Typescript 开发 RESTful API
3. Mongodb 基础以及高级特性
4. Egg.js 进阶 - 插件机制以及源代码解读
第15周 用户系统设计与实现
正式开始项目,本周我们从实现三种用户登录的实现方式入手,在学习的过程中,引出并学习 Redis,鉴权,Cookie-Session 以及 JWT 和 Oauth2 前后端分离开发啊的实现方式。
课程安排:
1. 用户系统三种方法实现 - 密码,短信(阿里云SMS) 以及 Oauth2
2. Redis 适用场景以及应用
3. 用户鉴权的解决方案汇总以及 JWT 的实现方案
4. 使用阿里云短信服务(SMS)实现手机登录
5. Oauth2 登录实现前后端分离的解决方案
第16周 文件上传(本地 + OSS 云服务)
继续深入项目,这周着重三大块内容,Stream 的学习,HTTP 中文件处理(本地以及云服务),SSR 实现 H5 作品展示,最后使用 Casl 完成 RBAC 用户权限控制。
课程安排:
1. Stream 概念以及进阶使用
2. 本地文件上传以及图片处理
3. 云服务OSS完成文件上传以及处理
4. SSR 概念以及实现 H5 端作品的展示
5. RBAC 完成用户权限的细粒度控制
第17周 部署 以及 CI/CD
项目开发结束,进入部署环境,从传统的部署到 Docker 容器化部署,Nginx 转发配置,以及使用 Github Actions 完成 CI/CD 自动部署。
课程安排:
1. 传统部署到虚拟化容器的发展
2. 使用 Docker 以及 docker-compose 完成部署
3. 使用 Github Actions 完成 CI/CD
4. 使用 Github Actions 和 Docker 完成自动部署
第18周 编辑器组件图层面板功能开发
本周继续进行属性编辑面板的功能,完成属性的分组功能,完成图层面板的显示 隐藏 锁定 排序等功能。最后完成背景设置面板的功能,在这个过程中,学习一系列第三方库的使用。
课程安排:
1、使用 cropper.js 开发 image processer 组件
2、同属性分组并且开发 EditGroup 组件
3、开发图层面板 并且 使用 vue-draggable-next 完成排序功能
4、背景设置面板开发
第19周 让元素动起来 - 编辑器画布交互功能开发
本周是集中火力在编辑器交互功能上,完成元素的拖动定位,拖动改变大小,快捷键支持,重做,回滚,右键菜单等一系列功能的开发。
课程安排:
1、拖动定位功能开发
2、拖动改变大小功能开发
3、使用 hotkeys js 开发快捷键功能
4、实现 Undo Redo 功能
5、添加右键菜单功能
第20周 前后端结合 - 编辑器整合后端接口
本周开始接入后端开发,实现作品的预览,保存,自动保存,发布和渠道编辑等一系列功能。
课程安排:
1、预览功能开发
2、保存和自动保存功能
3、使用 html2canvas 生成截图并发布作品
4、使用 qrcodejs2 生成二维码并实现渠道编辑功能
第21周 整合开发 B 端其他页面的各种功能
这周来完成其他页面的分析和编码工作,在这个过程中我们最重要的是掌握几个重要的第三方库以的用法及它们的原理,以及通过一个比较复杂的钩子函数加强 vue3 composition API 的应用。
课程安排:
1、使用HTML2Canvas 完成页面元素截图
2、使用 QRCode 生成二维码
3、使用 Clipboard.js 完成拷贝文字到剪贴板
4、编写 useLoadMore 钩子函数
5、使用 FileSaver.js 完成文件的下载
第22周 大型项目的编译,部署以及性能优化
这一周我们来完成一个大型项目开发完毕以后的过程,那就是将在本地运行的项目编译成符合线上要求的版本,将它部署上线,并且尽可能的完成性能优化。
课程安排:
1、Vue Cli 编译的环境,过程和模式
2、Webpack 的基础回顾以及 Loader 和 Plugin 的原理
3、Webpack 打包的分析和优化手段
3、HTTP 传输的优化手段
第23周 脚手架功能升级-上手大厂开发模式
本周讲解如何通过脚手架+页面模板实现代码的快速复用。
课程安排:
1、掌握大厂代码复用方法轮和背后思考
2、掌握如何通过脚手架实现页面级别复用
3、掌握页面模板的开发方法
4、完成脚手架add命令的开发逻辑
5、解决页面模板安装过程中的依赖冲突问题
第24周 前端监控平台架构设计+前端埋点库开发
本周我们将完成前端监控平台的架构设计,带大家了解前端JS库的开发和上线流程,并完成监控JS库的设计方案和部分代码实现。
课程安排:
1. 前端监控平台架构设计
2. 前端JS库开发流程
3. 前端埋点库架构设计
4. 前端埋点库开发
第25周 前端埋点库开发和上线
本周我们将完成JS库的全部功能开发、设计自动化测试脚本对JS库功能进行自动检测,并利用GULP优化前端埋点库的构建和发布流程。
课程安排:
1. 完成前端埋点库剩余功能开发
2. GULP快速入门
3. 通过GULP实现前端埋点构建和发布
第26周 前端监控平台日志+大数据处理
本周我们将利用阿里云MaxCompute平台实现大数据日志存储和处理,利用大数据仓库实现超大规模数据的存储和查询,并通过数据清洗、数据回流等机制实现大数据报表等生成流程。
课程安排:
1. 前端监控平台日志+大数据处理原理
2. 大数据发展历史介绍
3. 大数据处理链路讲解
4. 实现前端埋点上报数据的完整处理过程
第27周 前端监控平台数据可视化平台
本周我们将利用大数据报表数据开发前端数据可视化的监控平台,通过流量漏斗、报表等各种数据可视化报表展现数据,除此之外,Sam老师还将为大家解析大厂前端完整研发体系,并分享ABTest实现机制和原理。
课程安排:
1. 前端监控平台需求分析和技术选型
2. 前端监控平台开发
3. 扩展知识:前端AB介绍和原理分析
4. 大厂前端完整研发体系介绍
第28周 脚手架发布模块架构设计和核心流程开发
完成项目开发后,需要进行前端发布,脚手架的@imooc-cli/publish子项目将完成项目和组件的标准发布流程,本周将完成publish包的架构设计和核心流程开发
课程安排:
1、掌握项目/组件标准发布流程架构设计和流程图绘制
2、掌握自动化git流程架构设计和实现细节
3、掌握云构建实现原理和实现细节
4、掌握项目/组件发布原理和实现细节
5、完成public子项目创建和主流程开发
第29周 脚手架发布模块git自动化流程开发
本周将完成项目发布过程中的git flow流程开发,遵循标准的git flow流程,学会可快速改造和优化日常开发中的git处理流程,巩固git的各种使用技巧和方法。
课程安排:
1、掌握git操作方法和git flow流程
2、封装通用的git处理类Git
3、掌握git处理过程中的缓存结构设计
4、掌握git处理过程中的各种异常流程
5、完成Github & Gitee Open API接入
6、Git类准备阶段开发,完成各种git配置初始化
7、Git类初始化阶段开发,完成git仓库初始化、remote自动关联、强制合8、并远程代码等功能
9、Git类分支自动比对功能开发,完成代码冲突检查、stash区自动检查、10、自动同步master分支等功能
11、完成Git类代码自动提交功能开发
第30周 脚手架发布模块云构建系统开发
git flow流程完成后,我们将进入脚手架中最重要也是难度最高的一个环节,即云构建系统开发,本周我们通过egg.js+WebSocket+Redis最终实现完成云构建模块开发。
课程安排:
1、封装通用的云构建类CloudBuild
2、掌握WebSocket通信协议和开发方法
3、应用egg-socket.io插件快速接入WebSocket服务
4、掌握Redis缓存数据库的应用
5、应用egg-redis插件快速接入Redis服务
6、完成CloudBuild准备和预发布阶段开发,完成发布前配置和各类检查
7、掌握服务端CloudBuild处理流程和实现逻辑
8、服务端CloudBuildTask类封装,完成预处理、源码下载、云构建等流程开发
9、大作业:CloudBuild构建和依赖安装指令动态化功能设计和实现
第31周 脚手架发布模块云发布功能开发
脚手架云构建模块开发完成后,本周将继续完成项目的云发布流程开发。
课程安排:
1、掌握前端云发布逻辑实现
2、掌握oss入门使用方法
3、完成服务端oss API接入
4、掌握oss域名绑定+cdn接入
5、掌握项目预发布和正式发布流程
6、掌握项目回滚等异常流程处理
7、完成发布后自动打tag和开发分支删除功能
8、完成发布流程整体开发和联调
9、大作业:项目回滚+多版本发布功能架构设计和具体实现
第32周 脚手架组件发布功能开发
项目发布流程已经调通,本周将完成组件发布流程开发,组件发布流程和项目不同,主要差异在于:组件需要发布到npm和组件信息需要落库,所以需要不同的处理方式。
课程安排:
1、完成组件git flow流程开发
2、掌握组件构建和发布流程设计
3、掌握组件预览功能设计
4、完成组件构建和发布流程开发
5、完成组件预览功能开发
6、掌握RDS开通和使用方法
7、掌握egg.js+mysql的开发方法
8、完成组件相关API的开发方法
9、完成组件发布全流程联调
10、完成脚手架整体发布和上线
第33周 组件平台开发
本周将基于umi完成组件库前端部分创建,同时结合react hook开发组件库的前端页面,并将组件库发布上线。
课程安排:
1、掌握umi项目的开发方法
2、掌握react hook的开发方法
3、完成antd组件库集成
4、完成组件列表页开发
5、完成组件详情页开发
6、完成组件平台上线
第34周 项目单元测试用例设计和开发
讲解如何开发单元测试用例,并开发测试代码。
课程安排:
1、掌握脚手架单元测试库mocha
2、掌握测试用例设计技巧
3、完成脚手架单元测试用例设计
4、完成init库测试用例开发和调试
5、完成publish库测试用例开发和调试
第35周 大厂如何管理多人协作的研发项目
本周带领大家进入大厂文化 ,了解大厂如何做项目管理,多人协作的管理,以及团队人员的管理,课程内容复盘,未来技术的发展分析。
课程安排:
1、软件研发流程概述,先有一个整体的认识
2、敏感项目研发流程,以及常用工具
3、制定项目计划,包括范围 WBS,时间,质量,风险,沟通
4、计划监控,保证计划顺利执行
5、项目功能迭代和 bug 修复
6、多人协作、工作分配和跟踪
7、大厂绩效考核标准
8、大厂人员面试标准
9、大厂数值汇报方法和技巧
10、大厂标准的工作交流方式
11、整个课程内容复盘
12、未来的技术展望