收起左侧

[前端] 前端架构师34周 91G 2021版

120
回复
1324
查看
  [复制链接]
  • TA的每日心情
    擦汗
    2023-5-17 08:17
  • 签到天数: 6 天

    [LV.2]小吧熟人

    发表于 2023-6-20 02:09:00 | 显示全部楼层 |阅读模式

    登录后查看本帖详细内容!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    ├─第1周 需求分析和架构设计:做什么,如何做?! {9 P, W8 @/ R# U
    │      1-1 课程导学.mp4* p1 I: y5 l) _& {
    │      1-2 【学习任务】本课程学习目标撰写.png* }' e' R7 ~4 H8 |, h
    │      1-3 【学习任务】学习计划制定.png7 \- b0 z- a3 i4 g( |
    │      2-1 周介绍.mp4
    6 r# v6 T, ]6 y│      3-1 产品研发流程.mp4! l# s, I% ^) u: u: E) \- |5 M
    │      3-2 以架构师的思维分析需求.mp4
    0 O) L* ^% z6 a│      3-3 项目浅层需求.mp4
    & Q3 [5 \0 N% A: ?+ Q# r│      3-4 深度需求.mp4# O3 x* r" c  G# K1 L
    │      3-5 需求总结.mp4
    , P% w5 a' |: R; H5 {% D│      4-1 整体架构设计-章介绍.mp4. Q+ M5 `( k% w. y$ @
    │      4-2 分析需要多少个项目.mp4
    ' M7 n- h' h. H│      4-3 需要自研统计服务.mp4
    * |! |9 R+ Q% G4 t│      4-4 各个项目之间的关系图.mp4
    1 X' w6 L6 x; H  U; i│      4-5 作品数据结构设计.mp4
    ' m0 z# ?, [, X3 {│      4-6 数据流转关系图.mp43 A9 k; T# d/ H& Z  ?6 Q3 c
    │      4-7 技术方案文档的重要性.mp4
    , O- U) K4 x* D. i│      4-8 写架构设计文档.mp47 @, F( R5 w) x7 d2 ^4 v- H- L
    │      4-9 本章总结以及下一步计划.mp48 ~: L6 b" D5 L0 b( R
    │      5-1 本周总结.mp48 D; [+ m1 i2 L1 H9 g+ W: u: P
    │      5-2 关于作业和打卡.mp4$ b: ]. v0 u2 E9 Q6 X! P* w
    │      5-3 【学习任务】完成《技术方案设计文档》.png" X$ ]" }+ W, G$ Z- [3 d
    │      8 N3 K& z8 e. _! G4 F9 b
    ├─第2周 脚手架架构设计和框架搭建$ \# f+ _: K; T& Z1 W- W# @
    │      1-1 确立本周目标.mp4( n, r" F7 @; `' Q9 x) G
    │      1-2 前端研发脚手架imooc-cli核心功能演示.mp4" W% P, \. q% o) s  o- R1 v
    │      1-3 脚手架在课程中的定位.mp4( R* ~! {9 ^. ~, |* ^
    │      2-1 本章知识脉络和难点解析.mp4
    ' z1 k0 U7 G) H  |│      2-2 站在前端研发的视角,分析开发脚手架的必要性.mp4$ ^& {% f( e9 `* P; u! u; I
    │      2-3 从使用角度理解什么是脚手架?.mp44 R5 p3 h( f" `) n
    │      2-4 脚手架原理讲解(上).mp4
    ' K; b% _* s: h( P0 T, {1 ?│      2-5 脚手架原理讲解(下).mp4; F# T  ]' m7 K1 M8 o
    │      2-6 脚手架开发流程和难点解析.mp4
    " c' ]4 |% M! @. w( T' O% V│      2-7 快速入门第一个脚手架.mp4
    * Y8 y* k6 b, k3 a" Z7 _│      2-8 脚手架本地调试方法.mp4
    2 A% ]' J7 Y; |$ {8 }│      2-9 脚手架本地调试标准流程总结.mp4
    1 B6 y+ h7 O4 d3 C; Z, I! ]: G│      2-10 脚手架命令注册和参数解析.mp4
    1 @# [4 Y) r2 z- t3 C2 @! w│      2-11 脚手架项目发布.mp4: r0 A% ]* ~1 ~
    │      3-1 本章的收获是什么,难点是什么?.mp40 H' i) U* A' E/ O( H3 J! `. n
    │      3-2 原生脚手架开发痛点分析.mp4
    " g' G4 J2 i' R  j: m/ V9 t│      3-3 本章重点:lerna简介及脚手架开发流程.mp4& g- `% ?- A! E6 @% T3 l! V
    │      3-4 基于lerna搭建脚手架框架.mp4
    ( O3 g  F$ U7 n' V$ b│      3-5 Lerna核心操作.mp4
    ! B; J! x) j1 Z, ]" d│      3-6 Lerna发布流程.mp45 a2 }- ~% H2 @- D& t
    │      4-1 赚回学费:武装简历、升职加薪.mp4
    ) c" z+ R$ c2 [3 }  O# d│      4-2 lerna源码结构分析和调试技巧.mp4
    / N: w2 N$ D& ]1 y│      4-3 Node源码调试过程中必会的小技巧.mp4+ o) r" s2 e! x8 J/ [
    │      4-4 lerna初始化过程源码详细分析.mp4# @  m" v7 {: S4 Y
    │      4-5 【高能知识点】npm项目本地依赖引用方法.mp4
    4 N1 T1 {: v" d│      4-6 脚手架框架yargs快速入门.mp4
    0 d: J) }6 ]4 u# h* |│      4-7 yargs高级用法讲解.mp4
    6 p7 N+ r" S; [/ A- D│      4-8 lerna脚手架初始化过程超详细讲解.mp4
    ! D; _" G+ ^, i+ B) x% ?│      4-9 lerna脚手架Command执行过程详解.mp4
    . o+ l1 r' g! Y; m* {│      4-10 【关键知识复习】javascript事件循环.mp4# |) l& P! {; X. `
    │      4-11 【讨论题】谈一谈 Node和Web的事件循环(EventLoop)机制的异同.png& m7 H7 L) [2 e1 r
    │      4-12 import-local执行流程深度分析.mp4
    1 [7 p& R5 c& ?! z│      4-13 pkg-dir源码解析(一大波优秀的文件操作库).mp42 U/ e4 |2 w0 E' B: {
    │      4-14 resolve-from源码解析(彻底搞懂node_modules模块加载逻辑).mp4
    $ Q6 n5 A% i+ P5 n: j│      4-15 Node模块加载核心方法_resovleFileName源码深入解析.mp4
    + f! v& C$ Q, \, _) ^2 k0 ]& |* P│      4-16 fs模块toRealPath源码深入解析.mp4
    & E' X$ R) n' O/ l7 ]$ D( j, C│      4-17 讲一个高难度的正则表达式(想挑战的点进来).mp4
    3 ~6 r1 e' B7 x* z│      4-18 大招:如何快速拿到面试“一血”.mp4
    3 `) V6 \' S6 W$ A* F4 h8 u5 e6 c! Z8 ~│      5-1 本周总结+作业.mp4
    8 }$ X9 I% k% p; y7 q' a, n/ h! T8 [│      5-3 【学习任务】脚手架架构设计和框架搭建.png# H- W* t& i9 }- v, B
    │      9 V" m4 t2 S. \! M. G7 C. i
    ├─第3周 脚手架核心流程开发
    $ p/ o1 O' x  Q( X% t+ C" E│      1-1 本周整体内容介绍和学习方法.mp4) l; M* `5 j" V0 l( h- L
    │      2-1 聊一个很多同学很感兴趣的话题:大厂是如何做项目的?.mp45 p0 o* u% M' x9 I
    │      2-2 前端研发过程中的痛点和需求分析.mp4( g7 U' a* Q9 i, s- z4 l0 }' N
    │      2-3 加餐:大厂的git操作规范是怎样的?.mp4
    0 m0 b! {. G2 Q8 v│      2-4 高端操作:脚手架架构设计+绘制架构图.mp4# |6 ~0 A$ B+ d" w* b( M
    │      2-5 架构设计图绘图技巧分享.mp4& z: b7 ?, b1 t/ @) w
    │      3-1 脚手架模块拆分策略.mp4
    ' }' I  b+ s& O* p│      3-2 core模块技术方案.mp4) v5 X- l6 c, G" S+ n
    │      4-1 脚手架框架代码拆包+import-local应用.mp4, r" ~" R5 ^. F- i
    │      4-2 检查版本号功能开发(require加载资源类型讲解+npmlog封装).mp4
    : s. h& d7 |7 J0 p9 T│      4-3 最低Node版本检查功能开发.mp4
    9 X8 K: v; w: P7 A$ c│      4-4 root账号启动检查和自动降级功能开发.mp4, H2 P/ ^$ c) {$ O" X
    │      4-5 用户主目录检查功能开发.mp4" w  g$ e) }5 B3 [
    │      4-6 入参检查和debug模式开发.mp4' a3 I* V. u5 B3 L# U- b
    │      4-7 环境变量检查功能开发.mp4
    9 w2 L4 d4 g0 d' t- F│      4-8 通用npm API模块封装.mp4
    $ V: d- c3 c' D- j! r│      4-9 npm全局更新功能开发.mp4# @, r3 F' Y  M3 ^
    │      5-1 快速实现一个commander脚手架.mp4
    ( S* |" ?+ L3 C# K$ V7 A6 a│      5-2 commander脚手架全局配置.mp44 m: f6 \! L) |# j
    │      5-3 commander脚手架命令注册的两种方法.mp44 U' |- U, S/ L! [7 K' C. j
    │      5-4 commander注册命令的两种高级用法.mp4( L3 N, {/ r  a5 c
    │      5-5 再讲3条commander的高级用法.mp44 U- }# h6 j, X: G- A( D
    │      6-1 通过webpack完成ES Module资源构建.mp4
    0 @5 M$ ~" A4 |' P' k& @: y│      6-2 通过webpack target属性支持Node内置库.mp4
    8 u/ K4 u* r6 K0 u│      6-3 webpack loader配置babel-loader支持低版本node.mp4
    0 N# o7 M5 v6 d. v│      6-4 通过Node原生支持ES Module.mp4  `; C  j' N9 S8 S
    │      6-5 【讨论题】聊一聊你对 Webpack babel-loader原理的理解.png+ M& W; i! S# d3 D
    │      6-6 Node支持ES Module的两种方法总结.mp4- x) @. z; T/ h* b& O
    │      7-1 本周总结+作业.mp44 b1 t  V9 D4 r6 ^2 W
    │      7-2 【学习任务】练习 commander 命令的使用.png
    - Y" u' d. s3 T6 y│      
    ! W! A" @$ o7 B: Y├─第4周 脚手架命令注册和执行过程开发8 N8 C; K; z+ G8 L+ Y/ ]7 E) h1 Y; |
    │      1-1 本周整体内容介绍和学习方法.mp4
    6 K- E; a) C4 Q: n: L3 T│      2-1 imooc-cli脚手架初始化+全局参数注册.mp4
    * X- o& J. |" w6 S│      2-2 imooc-cli脚手架命令注册.mp4+ t) G) ]* \2 W" C
    │      3-1 当前imooc-cli脚手架架构痛点分析.mp42 Z7 X1 O3 Z& h- v" L
    │      3-2 高性能脚手架架构设计.mp4
    / ^* T1 w; u- z2 N│      3-3 脚手架命令动态加载功能架构设计.mp4
    . `# U$ \9 O' g6 [3 u8 A, ]6 ]│      4-1 脚手架命令本地调试功能支持.mp4' ?( E3 D' ?0 e
    │      4-2 动态执行库exec模块创建.mp4% t; o7 B2 O( ?2 P6 F
    │      4-3 创建npm模块通用类Package.mp4. d, O8 s# s+ F5 r7 k
    │      4-4 Package类的属性、方法定义及构造函数逻辑开发.mp49 H5 R$ P6 I" G9 q; Z) u, v. V
    │      4-5 Package类获取入口文件路径功能开发(pkg-dir应用+解决不同操作系统路径兼容问题).mp4
    / ^0 {. \  w; w, T│      4-6 利用npminstall库安装npm模块.mp4
    ! c; ]% P: R" @; Q1 V│      4-7 Package类判断模块是否存在方法开发.mp4
    6 S6 V! v5 T: J+ r1 }' s│      4-8 Package类更新模块逻辑开发.mp40 B- H% J1 D# X4 |$ L1 Y8 C1 Q
    │      4-9 Package类获取缓存模块入口文件功能改造.mp44 L( G1 j* o# x: t3 a5 Z/ _& N
    │      5-1 进程的基本概念(讲解在操作系统中如何查看进程的嵌套关系).mp4
    - q2 Q/ [- n( k! j; j│      5-2 child_process异步方法使用教程(exec&execFile).mp4! R' l2 x9 b4 r
    │      5-3 child_process spawn用法以及与exec&execFile的区别.mp4
    ' n$ v1 J- K* {│      5-4 child_process fork用法及父子进程通信机制讲解.mp4% G* [8 W4 q0 X" g
    │      5-5 child_process同步方法使用教程.mp4$ ^( i+ {* z7 j' U5 m4 T
    │      5-6 【讨论题】对Node.js cluster模块进行原理分析,说出你的理解.png
    , \+ b9 l+ ]' k8 d│      6-1 通用脚手架命令Command类封装.mp4
    6 b+ Y& i( O$ [' Q+ t│      6-2 脚手架参数初始化方法开发.mp4
    ; @4 ]' T. X0 H4 {+ x' [│      6-3 利用Node多进程动态执行命令(stdio的inherit属性讲解).mp4: g  U9 @% ^) F! I. n( n8 s  j+ r
    │      6-4 生成Node多进程动态执行代码.mp4- f2 Q  h8 R$ H% v* l6 U
    │      6-5 windows操作系统spawn执行命令兼容.mp45 _% w7 y$ {- x
    │      7-1 Node多进程child_process库exec方法源码执行流程分析.mp4
    ( }5 Y9 T: x5 g7 O+ l│      7-2 高能:child_process库exec源码精度.mp4- G0 ]4 d! l; d; X9 ^0 ^5 H
    │      7-3 深度分析child_process库spawn底层实现.mp4( w' C! D0 \) B
    │      7-4 child_process事件应用方法详解.mp4
    2 \! J) V: C5 t$ \3 k$ e│      7-5 高难度:深度解析child_process库spawn方法回调原理.mp4
    0 y" O4 ?% X* h. w7 c( O* N│      7-6 child_process库fork执行流程分析.mp4, w+ `0 ^! F2 T' Z9 f
    │      7-7 精化:Node多进程源码总结(想知道结论的同学直接点这里).mp4
    0 _" z" |  }7 C! t" f│      8-1 本周总结+作业.mp47 x+ X+ L2 X) O/ a
    │      8-2 【学习任务】 脚手架命令注册的实现.png0 X# n1 t- X, x9 V2 H, q
    │      3 z+ c2 L; S; C8 H
    ├─第5周 脚手架创建项目流程设计和开发% g: s# N' G: Y2 V2 J
    │      1-1 本周整体内容介绍和学习方法.mp4% g% ^7 |# g. A" q  {! ?! m
    │      2-1 脚手架创建项目功能架构背后的思考.mp4
    ; d# s" _- C7 m* U│      2-2 项目创建前准备阶段架构设计.mp4# x% S& @7 \0 q3 F  i; f
    │      2-3 下载项目模板阶段架构设计.mp4; U$ ~0 R5 I  A8 W
    │      3-1 项目创建准备阶段——判断当前目录是否为空功能开发.mp4
    " i$ y9 D/ F/ A; b  W" g0 x│      3-2 inquirer基本用法和常用属性入门.mp4- b: {! ~) T* Y2 g
    │      3-3 inquirer其他交互形式演示.mp4
    ; u% E, j; E! g' j; l7 i│      3-4 强制清空当前目录功能开发.mp44 M: I- o: x" v7 Z1 i2 W. \" \5 m
    │      3-5 获取项目基本信息功能开发.mp4# h# s9 P6 y/ b3 a: e
    │      3-6 项目名称和版本号合法性校验.mp4
    & a3 f; X; O2 o( X% h7 W# h; Z│      4-1 下载项目模板功能实现流程分析+egg.js简介.mp4; [$ u- |3 b* k( {3 s. L! z
    │      4-2 imooc-cli后端项目创建.mp4
    9 g/ G& y  Y7 C+ [6 n│      4-3 通过egg.js框架添加新的API.mp4
    8 m3 _8 s, H" w4 t  s4 |$ g0 [2 u│      4-4 云mongodb开通+本地mongodb调试技巧讲解.mp4
    ; M: M. A5 i! }  w* B. @│      4-5 egg.js接入mongodb方法.mp42 N0 L6 R" l' E5 s/ c, X& |
    │      5-1 脚手架初始化项目模板开发.mp4/ {1 [; {4 s1 d$ F
    │      5-2 脚手架请求项目模板API开发.mp44 O/ ~  e! u0 K- n
    │      5-3 通过环境变量配置默认URL+选择项目模板功能开发.mp4
    - T! B1 ]# d) `│      5-4 基于vue-element-admin开发通用的中后台项目模板.mp41 g' W* l; S3 I& K
    │      6-1 脚手架下载项目模板功能开发.mp4
    2 @/ b- c( \# _0 k& o│      6-2 通过spinner实现命令行loading效果.mp4
    % h& q$ Y  {  b& ~" }2 V│      6-3 项目模板更新功能调试.mp40 i' b6 N+ i& f9 C8 l) H/ u
    │      7-1 本章学习路径和学习目标.mp4
    8 L1 V# }" Y( Z│      7-2 readline的使用方法和实现原理.mp4
    ) a4 w, O0 |  v1 s( x4 v│      7-3 高能:深入讲解readline键盘输入监听实现原理.mp4
    : G! Y7 H" v. a- X) d$ g& j│      7-4 秀操作:手写readline核心实现.mp4' ^/ k, w, Q4 z* `: Y3 f
    │      7-5 命令行样式修改的核心原理:ansi转义序列讲解.mp46 l8 a4 }- Y- R% o+ W  T7 A
    │      7-6 【讨论题】聊聊对readline源码的理解分析.png
    $ U" b" `7 @7 n* s6 X( `1 j│      7-7 响应式库rxjs快速入门.mp4+ I5 \* Q! h9 \( a0 @" V) L( H$ s
    │      7-8 放大招:手写命令行交互式列表组件(上).mp4/ V) V, i9 S) s! D8 a1 `2 c
    │      7-9 放大招:手写命令行交互式列表组件(下).mp4( Z# }3 O) |+ }  o% e
    │      7-10 inquirer源码执行流程分析.mp4
    7 X! g% v; B) w, i1 J+ v│      8-1 本周总结+作业.mp4" {' Z0 i3 \& G  p9 d: S
    │      8-2 【学习任务】脚手架创建项目流程设计和开发.png3 c8 k0 D# U9 z
    │      
    9 y9 }. g% g5 v! S  m/ K4 x├─第6周 脚手架项目和组件初始化开发! M( X  ?! x2 n  L9 |
    │      1-1 本周整体内容介绍和学习方法.mp4
    ' V/ _8 u( ^1 o" U│      2-1 脚手架安装项目模板架构设计.mp4
    5 P  |( E9 K4 E) p% @- O│      2-2 脚手架组件初始化架构设计.mp4) q' u, P2 m0 K/ w# r$ u4 Y5 g' u' H. a
    │      3-1 ejs模板引擎的三种基本用法.mp47 h- V* P- l4 q
    │      3-2 ejs模板不同标签用法详解.mp4
    9 ~2 [/ U8 R1 t$ R! d/ Y( C, ]* l│      3-3 ejs模板几种特殊用法.mp43 v, x9 m: s: f# u5 n5 G
    │      3-4 glob用法小结.mp40 x: s' c/ a8 ]2 L* }
    │      4-1 引入项目模板类型和标准安装逻辑开发.mp4
    ; A0 K0 E3 z: ~& A, A$ I│      4-2 拷贝项目模板功能开发.mp4
    ) Q+ [, M; U9 Z; _& N* h1 r5 u│      4-3 项目模板安装依赖和启动命令.mp44 A# h0 ~7 B8 Q" \' [: s$ h3 _
    │      4-4 白名单命令检测功能开发.mp4% c* O- p- @: F* ^! {# R
    │      4-5 项目名称自动格式化功能开发.mp4
    : l* Y$ W! Q5 `1 t' {" [0 J2 f│      4-6 本章核心:ejs动态渲染项目模板.mp4. r2 H% T& e- Q; j0 P1 t# o2 e
    │      4-7 init命令直接传入项目名称功能支持.mp44 r( w2 f4 O6 ?4 O4 L, h
    │      5-1 慕课乐高组件库模板开发.mp4- g' R7 |" W" W4 o5 [2 O8 r
    │      5-2 项目和组件模板数据隔离+动态配置ejs ignore.mp49 Z8 z  T; w& c
    │      5-3 获取组件信息功能开发.mp4, p% ^" Q+ T5 g
    │      5-4 解决组件库初始化过程中各种工程问题.mp49 ?  r" N/ i3 Y' r& ~% y4 v
    │      6-1 自定义项目模板开发.mp4
    ; C9 B: @0 \& b2 F' ^2 M│      6-2 自定义模板安装逻辑开发.mp4, @7 l* W+ y& f3 e
    │      6-3 自定义模板上线.mp4
    4 Q- d9 Z" |. c; I7 T! q$ x* A│      7-1 ejs.compile执行流程分析.mp46 I) m  W  m  V; J" N& }
    │      7-2 深入讲解ejs编译原理.mp4
    ( @8 O3 p5 ?: V$ W( c/ A│      7-3 动态生成Function+with用法讲解.mp4
    ; I3 D: r. r1 F3 q( g% V│      7-4 ejs compile函数执行流程分析.mp4* A7 Q" u' [2 A/ b0 G8 v
    │      7-5 ejs.render和renderFile原理讲解.mp4
    6 e% a1 N( k6 j. w. G│      8-1 require源码执行流程分析.mp4
    : y! K! s" _3 `│      8-2 require加载模块原理详解.mp4, z( F1 \* a: f+ K. ^; d; S
    │      8-3 require加载内置模块和四种文件类型原理.mp4$ Y7 D* Q+ g) i' i& J+ X
    │      8-4 require缓存机制解析和CommonJS加载主模块原理.mp4
    . M( ^4 {; _& m│      8-5 require原理总结和回顾.mp46 F8 ]8 s. t- A9 j
    │      8-6 【讨论题】请谈谈你对Node.js require的理解(面试题).png& c# ^7 S/ E3 t( x7 U
    │      9-1 本周总结+作业.mp4
    , l+ D, Q, w* _3 ~│      9-2 【学习任务】脚手架项目和组件初始化开发.png2 q8 I  f9 c1 a9 o$ |) q
    │      
    $ H8 C4 x6 x1 P  l+ s. D├─第7周 B端项目需求分析和架构设计
    , ^  I2 E9 Y- e/ W2 r  c│      1-1 本周简介.mp4/ C$ n0 S; {/ Q; q- X# {  C
    │      2-1 引子:突破瓶颈,前端破局之路.mp4: @& P& z$ k, E9 {3 u% D5 b
    │      2-2 需求分析.mp4& U' {" Y5 x' o& t: o1 j& D4 L- w
    │      2-3 项目难点分析.mp4& L9 M6 r( J1 e0 @9 o9 E
    │      2-4 【讨论题】谈一谈大家目前在公司或者学习生活中,遇到的瓶颈.png5 n2 z3 ^6 T0 C4 u9 v- E3 I( ]
    │      3-1 组件库难点解决方案.mp43 T. H6 x" X$ a% r5 Z( g. d
    │      3-2 编辑器难点解析一.mp4
    7 N( t) n% r' n' n, d* n│      3-3 编辑器难点解析二.mp4
    - o2 f  K! {# b( q1 u│      3-4 技术选型 - typescript.mp4' j8 O* c7 E* l
    │      3-5 技术选型 - vue 和 react.mp4
    4 l+ H% H* N3 V7 B│      4-1 总体架构.mp4
    3 P9 n& z2 J5 i; }│      4-2 【学习任务】完成技术方案设计文档.png
      Z, B4 z  j1 n+ J$ q│      ( G1 C6 u0 y- s# s
    ├─第8周 前端基础技术回顾和巡礼
    " f$ g2 B3 n% U1 D6 e5 N│      1-1 本周导学.mp4
    ( Y5 X, a, N5 P& L; S│      2-1 Typescript 基础知识.mp45 E+ h. ~8 W* \* ?
    │      2-2 接口:Interface.mp4
    " J8 ]+ b0 u& ^│      2-3 类和接口.mp45 ?( H% T. Q4 v/ C: Q/ q5 G+ n
    │      2-4 泛型基础知识.mp4* ~, l& G4 K- h& }6 X7 l9 u
    │      2-5 解析源码:泛型和接口.mp4( M' w0 {+ f( y% p- l* U2 }
    │      2-6 源码解析:深入泛型.mp4* s" C1 h* X, |7 L8 ?. r( t
    │      2-7 源码解析 :高级特性.mp4( a& b0 i  H! Z! z
    │      2-8 源码解析 extends 的妙用.mp4
    : f4 y; k" p. W1 [' o3 \$ e│      2-9 定义文件 基础知识.mp46 x% X) B  u* L5 S8 ?0 |9 e1 b3 i' n* k
    │      2-10 定义文件进阶 - 写一个定义文件.mp4' `6 j8 Y  |4 K  O( H
    │      2-11 typescript 总结.mp4: T6 G0 E; r9 Q) t0 J  [2 t
    │      3-1 新特性简介.mp48 }1 s( B: d# m2 H1 R
    │      3-2 为什么有 composition API.mp49 g& v" @( S5 y# ]/ M( a
    │      3-3 composition API 基础知识.mp4
    # u' d5 p3 r# p* q! i│      3-4 深入响应式对象 - 追踪变化.mp4
    % F9 q7 W0 S/ p│      3-5 深入响应式对象 - 存储和触发 effect.mp4
    4 B" R; A( E7 T0 ]# u/ |  c│      3-6 Vue 副作用处理机制.mp4
    3 v) @6 n2 {# V9 z5 p5 r' a8 ?│      3-7 Vue 深入了解 watchEffect.mp4
    ; n2 d% c' x7 s) r- f: M│      3-8 Vue 使用 watch 精确控制副作用.mp4
    7 [0 k$ S4 |1 a( \  Z│      3-9 第一个自定义hooks 函数.mp4( _0 y& x0 k9 A2 e& t
    │      3-10 使用泛型改造自定义函数.mp4% ~" `5 }# T9 H+ @6 x4 g
    │      3-11 知识小结.mp4
    + E; C- I4 \( [$ j2 G/ P9 Y│      3-12 【学习任务】为 clipboard.js 库写类型文件.png, _" @- O: k& W. ], t  x, e+ ^
    │      3-13 【讨论题】谈谈你对这两种框架 React 和 Vue 的看法.png9 C% @, W  r6 v3 A+ w% \
    │      ) Y5 ^+ I5 Z- y0 N1 A) \* ]1 S
    ├─第9周 项目整体搭建( }( E9 u/ e2 b7 Y7 N
    │      1-1 课程导学.mp4
    3 @- E& }$ M: ?│      2-1 大话前端工具链.mp43 g, a4 g* e$ X) h
    │      2-2 使用 Imooc CLI 创建项目.mp4* Y2 f: h/ t6 |4 O5 W
    │      2-3 小花絮:Vue CLI 对战 Vite.mp4
    3 V8 C# T( C8 Z  y: E( @+ j│      3-1 使用 ESLint 添加代码规范.mp4, X$ @( ^, h1 }" i  e
    │      3-2 深入 ESLint 配置文件.mp4
    / F- i( B' [' S│      3-3 小花絮:使用 Prettier 自动格式化代码.mp4: k& v0 l( d* b/ B; N% D
    │      3-4 项目结构规范.mp4! @( h( J' w* i; _( B5 d2 M3 p2 Z" V
    │      3-5 了解 Git Flow 标准.mp4* p8 ^8 n* }& b7 L
    │      3-6 【讨论】聊一聊对于 ESLint 和 Prettier.png; K. a, Q  ~# n3 }( a
    │      4-1 安装 ant-design-vue 组件库.mp4
    . S" a7 ^6 E& Q0 ~: R│      4-2 使用 ant-design-vue 搭建页面框架.mp4  u, f" t( ~. J
    │      4-3 SPA 路由的基本原理.mp43 e; m: m. u2 O7 Z: f
    │      4-4 添加配置 Vue Router.mp4# p' G+ p9 \  U2 R1 o) p
    │      4-5 使用 Vue Router 钩子函数获取路由信息和跳转.mp40 m- V9 f) J7 `. v. j# {
    │      4-6 使用 Vue Router 元数据和嵌套路由解决不同模版结构.mp4
    ' l) x, I/ g2 C/ a: t│      5-1 什么是状态管理工具.mp4* U& P; |. g$ x5 s& e8 q" W8 I- j2 j
    │      5-2 Vuex 安装和基础使用.mp4
    9 j, \. m5 V$ U+ b5 d  a│      5-3 Vuex 结合整个应用.mp4# V: [% D0 \, W" {" E
    │      5-4 Vuex 添加 mutations 和 getters.mp42 f! q# j3 Z+ U* X
    │      5-5 使用 Module 分割 Vuex 模块.mp4' X/ O9 z4 F8 v
    │      6-1 本周总结.mp4
    & L5 ~, V% k8 p$ {, i# z│      6-2 【学习任务】 完成《技术规范文档》.png+ m5 V! z9 }# u' x& m' I" V# |( s: \
    │  
    - |. u  h1 J! e├─第10周 编辑器基本布局,及业务组件库初步开发
    1 E; T; |8 I; S  x│      1-1 本周导学.mp4
    ) m  p7 w7 ], ~  V# B. @. a│      2-1 将编辑器数据结构添加至 vuex store.mp4
    # [: z& l+ K$ U! w│      2-2  LText 组件初步实现.mp4! F0 u$ g0 \/ P4 X* B. K
    │      2-3 LText 添加通用属性.mp4
    2 E$ r% V: u+ }3 f; S$ u8 T3 b│      2-4 LText 使用 hooks 重用逻辑.mp43 r7 S" @/ j+ r5 q7 L5 E! ]# X
    │      2-5 完成点击模版列表添加到画布的行为.mp4/ W: ~/ }7 L+ _! a, m; N
    │      2-6 为业务组件属性添加类型的利弊.mp4
    ; ~# ]" d+ x4 @' U│      3-1 获取正在编辑的元素的属性.mp4
    . c1 m9 i* \$ D8 N* E│      3-2 添加属性和表单的基础对应关系并展示.mp4
    $ E) Y: c( J, X% N0 B6 Y. W│      3-3 添加更多简单对应关系并展示.mp4: I  l% q: N% ^0 @
    │      3-4 添加更多复杂对应关系并展示.mp4- O1 g6 v/ _% o# B( f( n
    │      3-5 分析展示和编辑属性的“金科玉律.mp4
    # j% U% x& P6 [$ n. Y" D% _│      3-6 添加编辑表单并更新界面 第一部分.mp4  R) ?, V) x  N+ D4 Q9 B/ @
    │      3-7 添加编辑表单并更新界面 第二部分.mp4
    8 x0 e: s- i+ v│      4-1 提出优化需求,以及组件返回的真相.mp40 _, v+ a8 y, H. \1 q* L
    │      4-2 将文本转换为 vNode.mp4
    " H9 T2 ^% v, n" t: I│      4-3 方案一:使用 JSX 重写 PropsTable 组件.mp4+ l1 j! l% R5 e
    │      4-4 方案二:使用 render 函数实现桥梁.mp4
    $ _' \. z4 e! D* e! [- u│      4-5 【讨论题】聊聊 Vue Template 和 JSX 的两种写法的看法.png
    . N- Z; u+ {/ T0 E│      5-1  本周重点内容回顾和总结.mp4
    . t. |; t9 L+ K* A│      5-2 【学习任务】完成删除画布的逻辑.png' {0 O# J& Z6 b8 B& p( t6 d; b2 ^
    │      5-3 【学习任务】添加更多属性和组件的对应关系.png" B- @! B% y" t1 T! O  O2 w
    │      5-4 【学习任务】修复在画布中点击组件跳转的问题.png
    6 S/ T" Z* J; e│      
    ' Z7 i3 G" J7 Y! W├─第11周 掌握测试基本工具,给组件库添加单元测试* ?: O; O2 s( l. E+ U
    │      1-1 导学.mp4! j/ b) c9 ]" ?
    │      2-1 为什么要有测试.mp4
    $ B; m  w4 d8 p' Z2 a9 h$ G│      2-2 Jest 简介.mp4
    # I7 |7 B# V% K+ y* q( F! L│      2-3 Jest 实现异步测试.mp4" _, U6 \: V9 k. t' I# K
    │      2-4 Jest mock 函数测试.mp4
    , G" s) g5 o5 c9 x- y6 q* P│      2-5 Jest mock 第三方模块实现.mp4
    7 q0 w9 D2 m" n9 [. {/ {│      2-6 Jest mock Timers.mp4- }" R! f( u- ]& f- K; x2 ?8 a) s" l
    │      2-7 【讨论题】谈谈关于测试.png+ ]# p& u5 O+ `0 v, ]# y, S2 t
    │      3-1 配置测试开发环境.mp4) z  c$ U& e" u/ _. O1 m* ^
    │      3-2 测试组件:渲染和元素获取.mp4
    : N7 w$ i! p, r│      3-3  测试组件:触发事件,更新表单,验证事件.mp4
    - }. \+ b  J9 ]9 v; D. u: ?│      3-4 测试组件:异步请求.mp40 z1 a9 u- x9 k5 H4 V0 p& [
    │      3-5  测试通用准备和清理.mp49 v! J6 I* k3 I* c
    │      4-1 测试中 mock 全局组件的实现.mp4" I$ Q/ E# `4 T+ s$ X
    │      4-2 模拟第三方库实现的三种”药方“ - 第一部分.mp46 L, Y+ F* _+ M2 Q7 b! R
    │      4-3 模拟第三方库实现的三种”药方“ - 第二部分.mp4
    ; j$ z9 Z" Y6 y; W9 b# R│      4-4 单独测试 Vuex store.mp4
    ! B. Q7 {: O& j1 x8 ?8 y" {$ l│      5-1 什么是 TDD 的开发方式.mp4
    ( C+ V  g  A9 w+ \- `3 O' |0 O│      5-2 TDD 第一步:编写测试用例.mp4( U- D' |4 _: b& o/ ^
    │      5-3 TDD 第二布:代码实现.mp4
    ! X1 W$ u! U# m│      5-4 TDD 第三步:和应用整合.mp4- ^* B6 z8 K+ J% q2 ]: u0 W
    │      6-1 章重点内容回顾和总结.mp4
    9 C6 y* |: a2 @, z- k( E│      6-2 【学习任务】完成 IconSwitch 组件的开发,并且为此添加测试.png
    ; R, l7 {6 w, e* }& c│      
    ; O9 Q4 x3 M7 }2 A├─第12周 通用上传组件开发以及使用
    " L/ i& M; ^+ t) S│      1-1 导学.mp4' |. E0 R/ M/ `" K2 M( E
    │      2-1 上传组件需求分析.mp43 i$ q( r- ]  Q  X$ j
    │      2-2 上传文件的原理.mp4
    1 B" n9 {  K: x; B│      2-3 万事开头难 - 编码基本流程.mp4
    ) ]4 D( m- f! u0 D! [& d7 Y7 G│      2-4 上传基本流程的测试编写.mp4% z0 E2 J6 e/ H, e1 l
    │      3-1 编写上传文件列表功能的测试用例.mp4
    " z: G# z1 p8 a" U│      3-2 根据测试实现上传文件列表功能.mp46 O$ m! W( n+ j& t- D5 {' D0 A
    │      3-3 编写自定义模版功能的测试用例.mp45 E/ g1 [% |" b" W5 Y% X7 u" z0 t
    │      3-4 根据测试完成自定义模版功能.mp4
    , i2 y! f4 O7 w3 C│      3-5 测试驱动开发 - 完成上传前检查的特性.mp43 l3 C7 L9 A2 M3 U
    │      3-6 中期回顾完成情况和新的需求.mp4# m: U, ^! M/ x+ p/ r1 k& k
    │      4-1 新的开发方式:添加拖动上传编码.mp4
    ) J- d# ?9 x2 D( S# h' \│      4-2 添加拖动上传测试.mp4
    5 K& @: _6 v2 j! h│      4-3 使用流程图分析代码小的重构.mp4
    % A$ R' w: i$ A1 G│      4-4 添加实例方法的编码和测试.mp47 k) [. `) D8 h) M6 d! {2 }
    │      4-5 【讨论题】谈一谈测试驱动开发.png) P: T% A5 v/ h- e. s" g
    │      5-1 Vue3 世界中的三种实例.mp4
    " c9 i4 y6 N. {% _, L, R( ?│      5-2 Vue3 中组件通信的四种方法.mp4
    : |1 Z2 }; o4 h; v$ x│      5-3 Element Plus Upload 组件源码分析第一部分.mp4& P; |5 ?( P5 c
    │      5-4 Element Plus Upload 组件源码分析第二部分.mp4
    ; A( Z( Z( f7 s7 b│      5-5 本地图片预览的两种方式.mp4
    : H7 N& ]1 e1 U  T: M# Q$ H│      5-6 Jest 浏览器环境之谜.mp46 F, J5 N% ~; g2 u8 v  {
    │      6-1 将上传组件添加到左侧组件列表.mp4  c0 V% x3 ^$ v7 {! Z; }  F. N
    │      6-2 上传图片后将图片组件添加到编辑器.mp44 h" @2 y" h/ P8 Y/ I( [
    │      6-3 扩展知识:Element 类型家族之间的关系.mp45 U) Q, |& _! T1 }  L& E& w9 l7 q
    │      6-4 通过 Image 构造函数获取图片的原始大小.mp4
    7 G7 @3 r* r3 G) V5 }+ W8 j6 u│      6-5 【学习任务】完成 ImageProcesser 组件的开发.png
    # I( e- I% N8 G" v# b│      7-1 周总结.mp4, K8 v7 h4 H8 C% W; v
    │      9 l2 D7 ]1 k% v& |% y0 g, x
    ├─第13周 业务组件库打包、发布,添加CI-CD
    1 m: x. n( E' U7 L│      1-1 周导学.mp4, ~2 U  [: W: z5 ~
    │      2-1 Javascript 模块化历史.mp4" R& i- g2 M7 e! z! g: @$ \9 X
    │      2-2 打包工具的根本作用.mp4% w! s. X& `/ i1 R
    │      2-3 Webpack 对阵 Rollup.mp4
    0 r+ W$ s  k8 b; }& L( Y8 V( C( A│      2-4 打包什么类型的模块.mp4+ F4 M4 O; q6 Q/ k( ]
    │      2-5 花絮 - Snowpack 另类打包工具 简介.mp4+ y, b) @8 L& |4 F
    │      3-1 创建组件库基本代码结构.mp4
    . J# e; i0 }. _│      3-2 Vue 插件系统简介.mp4. T1 Z5 V) {* R# h) _% ~9 _
    │      3-3 创建入口文件.mp4+ B0 E# O. [8 b+ K$ _/ V
    │      4-1 Rollup 配置文件和插件.mp4- v. E" y  x$ q0 Z
    │      4-2 添加 Vue Plugin.mp4
    2 W6 q8 t7 @: r  [│      4-3 添加 Typescript Plugin.mp4
    5 X$ }6 }  V( N9 H4 F: d4 e9 n│      4-4 尝试打包入口文件.mp44 b8 ]! Z) G2 W; G' e1 s' F
    │      4-5 生成两种格式的模块文件.mp45 U4 z! g; M7 \- d9 y
    │      4-6 使用 npm link 本地测试组件库.mp4
    + t6 r( {! n- y* y% B' f│      4-7 分析 Element Plus 的打包过程.mp4
    ; B/ d# y1 ^9 X$ L* ?/ \4 F  s│      4-8 扩展知识 - Rollup 插件开发的简单原理.mp42 R  N1 n" l& x  f
    │      5-1 npm 简介和 package.json 的设置.mp44 z6 M" r6 S# C" w% O
    │      5-2 使用 npm publish 发布业务组件库.mp4/ \; V2 t0 g7 R' d
    │      5-3 给业务组件库添加测试用例.mp4; k' x0 D" C# X" n4 L6 S! h7 j
    │      5-4 发布或者提交前检查代码质量和测试结果.mp4
    7 X" l8 X, u& O- {7 i1 N│      5-5 什么是 CI CD? .mp4' Y6 u+ B+ Z7 W; a' n: {- e4 T
    │      5-6 初步配置 travis 完成 CI.mp4
    9 J& U( Y4 h" Y! r' K6 V6 e# A& a6 q│      5-7 进一步配置 travis 完成 CD - 自动发布到 npm.mp4& y/ D% p9 w4 I1 F
    │      6-1 周总结.mp4
    9 F( b: r5 M3 o' U4 o/ T% r│      6-2 【讨论题】谈一谈业务组件库的开发.png
    & S4 h  `0 X% ^0 k; d; [│      6-3 【学习任务】发布自己的业务组件库.png8 X0 i, c, y3 q3 m
    │      0 x/ q3 g1 h0 U$ S: z9 l
    ├─第14周 服务端技术选型:磨刀不误砍柴工
    " l9 x/ H% t! E' k3 j+ K│      1-1 本周开始.mp4
    9 C3 `: h3 u" [% _│      2-1 nodejs框架选型-开始.mp4/ `; Q  S/ P) D1 p4 }
    │      2-2 介绍koa2和express.mp4
    . P1 B! }6 m* j5 ?0 g0 ]6 l+ T' P│      2-3 介绍egg.js.mp45 M* Z  L) |8 Z- u* {
    │      2-4 介绍nest.js.mp40 Y) Z/ X: |8 p& H# \. F" V' O4 J
    │      3-1 章开始.mp48 F' p$ g" Q1 |- T: e
    │      3-2 回顾数据结构设计.mp4- r  _' o% U9 U& y5 k- {
    │      3-3 Mysql 和 Sequelize -1.mp4
    ! Q8 B) n8 Z3 J$ E; s│      3-4 Mysql 和 Sequelize - 2.mp4# x0 e8 d4 a& J; i
    │      3-5 Mongodb和Mongoose.mp4
    : j# V7 v; w( v1 R$ b5 E8 v, n$ A- u│      3-6 Date 和时区.mp4
    & ~6 M# a! F7 b- O4 [2 L│      3-7 Mysql和Mongodb的区别.mp4
    : A' [3 n0 \9 ]! E│      3-8 介绍Redis.mp43 W4 ?) X$ ~9 D. K+ m* h
    │      3-9 章总结.mp4- N# W; [5 [" M0 d  I* U
    │      4-1 本章开始.mp41 R( f- A9 k( S# v: G
    │      4-2 介绍 Session 登录.mp4
      b2 S  R, G/ c; {1 n! i$ v│      4-3 介绍JWT登录.mp4' r% B% Z9 ^1 {* O  k' i
    │      4-4 SSO和OAuth2.mp4
    2 M/ D# q/ h/ A' ]$ n- b│      4-5 章总结.mp4
    0 k% Z2 D9 r+ ?* d" b# j4 N8 }│      5-1 章开始.mp4- C9 N$ x8 D) C$ f+ x
    │      5-2 介绍Jest和Mocha.mp4
    2 [) j: J4 u) E│      5-3 为何单元测试难以落实.mp4
    9 V* X6 j& E! P2 W3 ?5 B  P│      5-4 supertest接口测试.mp4: R( X+ r1 D- H4 z" l3 _
    │      5-5 章总结.mp4
    ( H3 L* M: }; Q$ E' [7 B│      6-1 pm2和nginx-章开始.mp4
    3 ~5 T# \, z+ A- J' b3 Q8 m│      6-2 pm2配置和使用.mp44 v5 U3 ?# @4 m1 A1 C
    │      6-3 pm2日志拆分.mp4! _) d% S) r3 J: Z, V) }
    │      6-4 nginx配置和日志拆分.mp4
    ! o$ C. {* Q8 `4 ~│      6-5 pm2和nginx-章总结.mp4
    % t, ^* t$ M$ V8 s│      7-1 开发环境配置.mp40 q3 {2 O( x. q; C' d3 t6 Z/ X
    │      7-2 周总结.mp46 h) b$ Q- j$ I% R, q! h3 c8 t
    │      % ?6 j6 e7 b) D1 ^& n2 d" F9 M+ i
    ├─第15周 服务端 CI-CD :github自动化
    / c, V( p. M: J$ z, t' X│      1-1 周介绍.mp47 f4 G2 x. d5 s$ L
    │      2-1 章介绍.mp41 x8 i! F5 K6 i; q
    │      2-2 认识 Github actions.mp4
    4 ?* v: j0 X; x, ~1 ~7 Y+ V6 ]│      2-3 Github actions 功能演示.mp4
    . e7 h3 S0 n& V3 a7 {" y8 ?4 V│      2-4 Github actions 做自动化测试.mp4* x  T# g, N  f/ ]* _
    │      2-5 Github actions 章总结.mp4
    . I6 b  V/ _& a4 X│      3-1 Docker 章介绍.mp4
    , C0 E4 |  d4 w│      3-2 认识 Docker.mp4
    ( S' S7 t4 X+ k: c2 Q4 n% d│      3-3 启动一个Docker容器.mp4
    ( h" h* P! @$ I" j1 U% S3 z│      3-4 Docker容器的进一步演示.mp4
    - ~* w+ `3 |, z3 ~% r; J│      3-5 介绍 Dockerfile 语法.mp4# r1 U1 H% _/ N8 Q! M0 J
    │      3-6 用 Dockerfile 构建镜像.mp4
    ' T( s6 m1 k, z│      3-7 Docker 章总结.mp46 V4 G9 |3 h# E+ U. f
    │      4-1 docker-compose 章开始.mp4$ j. g$ }! q) ?) u
    │      4-2 docker-compose 配置文件.mp4" u! m1 m8 T/ }& I9 H0 G, p
    │      4-3 docker-compose 命令演示.mp4# _2 q) W1 S; W. @  i: ]; r
    │      4-4 数据持久化.mp4  D1 o  d3 E' |% Q7 Y8 Z
    │      4-5 配置 mysql.mp4
    3 Z' _+ m5 T8 d' }$ H+ v. u) l4 |8 m│      4-6 docker-compose 章总结.mp41 Q$ }( k# E! k% b& \8 Q
    │      5-1 自动发布测试机 - 章开始.mp4
    / H! r" X9 ^: A% X' J+ g│      5-2 配置测试机.mp4$ g' h4 s& l+ N: _% Y
    │      5-3 自动发布到测试机-讲解配置.mp44 d5 N3 k& T* j) k( z# \4 d
    │      5-4 自动发布到测试机-功能演示.mp4
    0 K' V: B* b; l8 C# D2 y$ a│      5-5 自动发布测试机 - 章总结.mp4- A, E$ @5 m. S, t
    │      6-1 周总结.mp4+ w6 D6 ?- t. G' w3 M  \
    │      
    # D2 `* c8 g2 J1 M1 T( f+ U├─第16周 编辑器服务端基础 API 开发% {. u9 i5 G0 \- B
    │      1-1 周介绍.mp45 n2 n2 k( N; T$ W' O
    │      2-1 技术方案设计-章介绍.mp4. Q2 O4 e& w7 }, q9 R. I- c8 k8 G, Z8 V
    │      2-2 接口设计-整理所有接口.mp4! R6 e% o$ j$ _, N, p6 x; b5 n
    │      2-3 接口设计-关于预览和数据统计.mp4
    ' `8 c) u' o  @* {' D│      2-4 介绍GraphQL的使用和特点.mp4
    3 P4 J- C$ w) ]( v5 o+ u7 V│      2-5 选择Restful API 而非 GraphQL.mp4% ]0 h/ n, f) @& z5 B# F
    │      2-6 数据库设计-数据表结构.mp4' N% c3 v" j) P: Y5 p! b8 \
    │      2-7 数据库设计-代码演示.mp4
    ' f' e4 K, U9 _1 A. a% N$ @% j│      2-8 server端架构设计.mp4
    + Z2 J: Y7 @8 k. q│      2-9 技术方案设计-章总结.mp49 v* z9 }' F3 i, O: d7 {
    │      3-1 基础功能开发-章介绍.mp4) h& B! L4 C! b/ x* S) _1 e$ B( l+ o
    │      3-2 登录功能设计-获取验证码.mp4
    0 G$ V4 {" D4 F" T│      3-3 登录功能设计-划重点.mp4
    ! a5 W9 D+ x4 w' T  T4 X│      3-4 制定开发规范.mp4" E6 d! H" ?+ z' m  A  J7 F- ^
    │      3-5 用户信息接口-获取登录验证码.mp4
    % K2 A. A! X' G, }│      3-6 用户信息接口-登录.mp4
    / J9 X( m: x, T; N9 _) U3 w│      3-7 用户信息接口-接口测试.mp4
    4 [6 a8 t( O" ]# n& q+ M│      3-8 作品接口-创建作品.mp4
    ' K7 I1 c) g/ ~* w( Y" H│      3-9 作品接口-查询、更新和复制.mp4& d+ u3 ~  d- J  c" E* Q: F
    │      3-10 作品接口-接口测试.mp4& ]0 w) g) p5 |6 t8 b/ P
    │      3-11 模板接口-代码演示.mp4( q/ g- P6 v6 s5 B+ O1 }( f7 E
    │      3-12 模板接口-接口测试.mp4+ w0 }1 N/ r- R
    │      3-13 基础功能开发-章总结.mp4
    0 V4 t3 U/ `; `! M; T│      4-1 周总结.mp4' A6 l/ K9 a2 p
    │      
    ) J: D; w+ n3 j├─第17周 编辑器服务端调用第三方服务
    2 E! U5 ?& {! v% o$ y│      1-1 周介绍.mp4% }9 a! n- g9 q1 q+ S
    │      2-1 发布功能-章介绍.mp44 o- L( w- w( z* ^/ |. Z
    │      2-2 发布功能的几个要点.mp4. t2 H, y8 v+ B# N
    │      2-3 发布功能-如何防爬.mp4# G# O- M0 a! I( f
    │      2-4 发布功能-发布过程的设计.mp4
    ! v  N! `3 F$ I8 k. _+ P; |* Y│      2-5 发布功能-强制下线.mp4! B; P! A( R6 t# L
    │      2-6 发布功能-代码演示.mp4+ A) z5 H  g4 L2 _7 A
    │      2-7 发布功能-章总结.mp4
    " ?" v9 Q0 c% z% l( V; `* s│      3-1 短信服务-章开始.mp4$ u* V! Y' l  w/ t' o+ a" p$ F  O
    │      3-2 短信服务-调研.mp4
    ! h. ]9 {( O+ ^│      3-3 短信服务-配置.mp4
    . {0 d4 R4 O( S7 B  w6 y/ A/ k) ]  A2 f6 B: ]│      3-4 短信服务-实验demo.mp4* M4 f8 d0 M' l4 s# F
    │      3-5 短信服务-代码演示.mp4
    $ k' }, d8 ^" d1 V$ _. C│      3-6 短信服务-章总结.mp4
    $ J$ q# c3 z4 x│      4-1 上传文件到 OSS -章介绍.mp4
    ) k( U+ S: ]( z( F$ Y) Q* V│      4-2 购买和配置OSS.mp4
    5 L5 r( L1 m3 v6 s; V- p& l│      4-3 阿里云OSS-实验demo.mp4
    * a4 k& f8 \% W! t9 S* s- Y│      4-4 快速学习stream 的方法.mp4* n/ n; B/ s; {* U  l
    │      4-5 阿里云OSS-代码演示.mp4
    + |! \. t, g2 [│      4-6 阿里云OSS-章总结.mp4. F& c- j) U0 l
    │      5-1 内容安全检查-章开始.mp46 H* v, f8 U3 c8 S/ _
    │      5-2 内容安全检查-配置服务.mp45 ?: R- W6 z7 F4 j3 d8 A
    │      5-3 内容安全检查-实验demo-检查文本.mp4! Y% L1 Y4 U7 o) Y. I+ v! g
    │      5-4 内容安全检查-实验demo-检查图片.mp4
    , x# h& m5 ^: s* e/ q& O│      5-5 内容安全检查-代码演示.mp49 }' n  _6 B/ X! q+ d  O
    │      5-6 内容安全检查-章总结.mp4
    % `. d7 `: N  q/ w/ X% Q0 F│      
    . G, _) l* j; i├─第18周 编辑器组件图层面板功能开发9 r0 B, u# [8 B0 c) `0 l8 q" ^/ g' v6 l
    │      1-1 第十八周前言.mp4- x  v& e+ M/ D' }: e. k! ~. G
    │      2-1 知识回顾.mp4
    ) `( b4 R2 K+ A. {- t│      2-2 选择 CropperJS 作为图片裁剪库.mp4# s/ c8 _# e( H4 u& y& h# m, I
    │      2-3 初始化 Cropper 区域.mp4# K9 i0 C: O& M" p; B. q* X$ C
    │      2-4 使用阿里云 OSS 完成图片裁剪功能.mp4; Z5 g9 ~5 z3 m9 u. g' L4 U5 I2 U* P5 I
    │      2-5 使用 Cropper.js 获取裁剪图片数据.mp4
    0 K" L8 `. |! f│      2-6 方法二:完成裁剪后重新上传图片.mp4
    4 Y/ L+ U0 l$ t+ U' I│      3-1 分析图层设置的需求和实现.mp4) d: v0 {2 E' W  n2 m
    │      3-2 图层列表设置锁定和隐藏.mp4
    8 T8 j9 z6 n# F  O│      3-3 InlineEdit 书写测试用例以及初步功能开发.mp4* n! s% [, R# \- [1 B/ ^
    │      3-4 添加键盘响应钩子函数.mp4
    7 ]+ i% T& Q$ x, m7 z/ ]│      3-5 添加 useClickOutside.mp4
    * C; j  E6 ?3 Y  v+ D│      3-6 在界面上测试并且改进 InlineEdit 组件.mp4" A9 l" p% b" y) @6 v7 Q
    │      4-1 拖动排序列表的需求分析.mp4
    ' y1 E. y9 t  E! C2 e  s/ `+ v5 N│      4-2 拖拽排序第一部分 添加拖动事件.mp4- |1 G5 `  R- z" s
    │      4-3 拖拽排序第二部分 添加 drop 时排序.mp4# c, l0 V( Z9 d, o
    │      4-4 拖动排序第三部分 在拖动时完成排序.mp4- c7 B: ]6 Z& ?* H/ f$ U
    │      4-5 使用 Vue Draggable Next 完成排序.mp4
    - O2 ~/ R: c. I% D9 Z│      5-1 EditGroup 需求分析.mp4
    # d& I, }! Y; [. j+ y# O# J6 s│      5-2 EditGroup 编码第一部分.mp4% m: P- T$ u  k/ Z4 T0 e( Q- J
    │      5-3 EditGroup 编码第二部分:数据转换成界面.mp4( S  o7 u3 h8 E' v; o
    │      6-1 页面设置编码第一部分.mp4$ H  J4 g6 a5 p5 J+ V
    │      6-2 BackgroundProcesser 组件编码第一部分.mp4# L( X, j9 C3 O: b# o: M' H7 }+ Q
    │      6-3 使用正则获取文件名称.mp4" m6 U* e3 J1 g- B# v, ~: ~1 a8 g
    │      6-4 页面设置完成更新背景图片逻辑.mp4
      d0 ]+ g2 u$ ]) H│      7-1 第十八周总结.mp46 q. f) e2 p6 z; E. _0 S
    │      
    ! {0 {6 y0 p2 v1 _6 c: ^* @├─第19周 让元素动起来 - 编辑器画布交互功能开发
    8 k! h, E! y6 K% s, M9 i' O5 Q│      1-1 十九周导学.mp4
    ( Z& ~& m& t; ~5 i, ]4 T│      2-1 拖动移动元素的原理分析.mp4
    9 \6 G$ K- g" I& [$ |" _6 H│      2-2 拖动移动元素第一部分:计算偏移量.mp4
    7 x" Y: S7 A, S" y. K  A│      2-3 拖动移动第二部分: 实现元素移动.mp4# T/ M" B- e4 d
    │      2-4 拖动移动第三部分: 更新元素属性.mp4
    * ?6 ^4 M  b% N- e. F) d│      3-1 拖动改变大小的原理.mp4. y+ Q( |7 A5 Y. N1 ^) V9 ]$ R
    │      3-2 拖动改变大小 第一部分: 实现右下方拖拽大小.mp4
    + F! i0 {6 g: M│      3-3 拖拽改变大小 编码第二部分: 实现四个角拖拽大小.mp4
    4 T/ R4 m/ ~! _0 d/ V│      3-4 拖动改变大小 编码第三部分:发射事件 更新属性.mp49 @6 ]0 b6 _+ x$ [: D( t2 y
    │      4-1 快捷键需求分析.mp4* u% P8 y. ~  u4 `" t5 v- l
    │      4-2 快捷键编码第一部分:创建 useHotKeys.mp4  Y, d$ a8 `+ s9 u: q! o" [
    │      4-3 快捷键编码第二部分:添加 muations 完成操作.mp4! |& l9 T+ D7 u  e) s6 ^
    │      4-4 快捷键编码第三部分:添加移动元素的快捷键.mp4
    : _4 I2 x  u0 n( G( V/ j9 @│      4-5 快捷键编码第四部分:添加高级函数阻止默认行为.mp4
    , D4 i! q3 A; A4 {5 h/ ~- R│      4-6 尽善尽美 补充新的 mutations 的测试.mp4
    ( c* l4 u' p; c1 v│      5-1 撤销重做需求分析.mp43 N! d4 E+ A9 ]. R5 [& U. `' j
    │      5-2 撤销重做编码第一部分:添加历史记录.mp48 F' S: P- Q4 e/ f& u" |
    │      5-3 撤销重做编码第二部分:根据不同情况添加处理.mp4
    3 S5 k$ P* g, @; D1 v0 P& d│      5-4 撤销重做编码第三部分:根据当前情况添加测试.mp4
    + t, _% G$ W7 K/ a. }│      5-5 中期界面测试以及发现需要改进的点.mp4
    ( u4 o8 U  A  }8 ^1 b│      5-6 进阶:撤销重做支持一次处理多个数据.mp43 ?2 c7 g6 \4 b% N! R$ x
    │      5-7 进阶:撤销重做支持一次处理多个数据 第二部分.mp4/ r, }& I( N  F* B
    │      5-8 进阶:撤销重做支持函数防抖.mp4& Z5 I5 Z/ k" f6 U/ Z: W
    │      5-9 进阶:撤销重做支持最大历史条目数.mp41 j+ a& E9 B1 Z3 c4 G5 ?: V# Q
    │      5-10 撤销重做小结以及剩下的改进.mp4
    - z4 ^$ Q6 R; C( p6 _) Y1 E* O│      6-1 右键菜单需求分析.mp46 ^) o$ g+ O2 `5 s' @9 M
    │      6-2 右键菜单编码第一部分:添加右键菜单组件.mp44 {! q8 G2 P0 H! x2 z/ l  r. |" e2 h
    │      6-3 右键菜单第二部分:函数式的创建组件.mp4
    9 F0 |5 o- A, Q7 `│      6-4 右键菜单第三部分:插件化右键菜单.mp4
    ! C2 I8 l1 F- ?0 U$ r1 J│      6-5 右键菜单第四部分:删除组件实例的方法.mp4' B9 ]9 z, a8 U8 H
    │      7-1 十九周总结.mp4$ i+ D( r' }) G6 b
    │      
    9 {7 O5 z: A9 z9 a# y├─第20周 前后端结合 - 编辑器整合后端接口  T& Q; c# _  R$ O4 ?* f
    │      1-1 第二十周导学.mp4
    # D. _2 Q2 {5 S6 i" \& {│      2-1 前后端分离开发简介.mp4
    + d3 e  d! S$ z# \! M7 k" t' w│      2-2 分析后端接口和需求.mp4" @9 Y% T+ Y, [6 s* o( O4 |
    │      2-3 使用 vuex action 发送请求.mp4
    2 E. j7 @8 n/ x. Z* g│      3-1 JSON server 的简介和安装使用.mp4) O5 h9 B+ x# |- N& v2 T3 H
    │      3-2 JSON server 自定义接口URL 和 返回数据结构.mp4
    # s  V+ Z0 _9 @# z' U│      3-3 JSON Server 实现 JWT 验证 - 生成 token.mp4( v" ~! v; H7 _1 w# t+ ~0 y* X) Q
    │      3-4 JSON Server 实现 JWT 验证 - 实现路由保护.mp4. M0 w6 \5 ~& L% Z3 l1 U' [4 L1 s
    │      4-1 使用 AForm 完成表单验证.mp4
    3 }6 Y, V$ |8 u2 z; @│      4-2 使用 AForm 完成提交时验证的两种方法.mp4
    " Y0 [! T  `( l9 P& A" Q│      4-3 完成获取验证码的功能.mp4
    ! b* \7 ~4 T! `" j& a│      4-4 完成用户登陆过程.mp4
    / ^1 B1 w2 _0 g& ~" r  i│      4-5 使用高阶函数 actionWrapper 包装 action 通用逻辑.mp4
    9 B. {" D9 K. x7 a4 v$ V7 _+ s  C│      4-6 AForm 源代码解析 :Form 组件 和 FormItem 完成验证.mp4
    ( z  K% \5 T& d│      4-7 AForm 源代码解析 :使用 useForm 完成验证.mp4
    ( {/ b* ?+ {# V5 a│      5-1 添加全局读取状态 - 整体通用读取状态.mp4# Y/ T: ^( i& a% }; |% u' i
    │      5-2 添加全局读取状态 - 细粒度读取状态.mp4: J$ N. h7 o6 O' c. ^
    │      5-3 处理全局错误处理.mp4
    4 V3 j  z% j8 w2 c, K│      5-4 将全局读取和错误添加至根组件.mp4
    2 i! Q" I0 @* K, s9 t. d│      5-5 登陆状态持久化.mp4' b0 U4 v6 r. Q7 ^
    │      5-6 路由权限验证 第一部分 - 功能分析.mp4
    . ~# x) r3 V5 Z, H: a│      5-7 路由权限验证 第二部分 - 编码实现.mp4
    . @; M" R$ M; e: a( C9 A" \0 X│      6-1 编辑器获取作品 第一部分 - 发送并且改进 action.mp4" j* B2 u, m+ d. ?
    │      6-2 编辑器获取作品 第二部分 - 根据数据渲染至画布.mp4
    0 F5 |5 \' @: F, D5 M* O│      6-3 添加编辑器 Header.mp4
    6 k3 O) _6 T. e" u/ p/ @│      6-4 保存作品数据.mp4
    / [3 r0 Q" S+ |4 j! Q% D4 A│      6-5 添加自动保存功能.mp4: l$ z$ Q: N- o# e( v8 J/ r3 y
    │      6-6 跳转路由前提示保存.mp4! i. w! b0 O: m$ d1 L. \8 F# R& S
    │      6-7 提取和整合保存作品逻辑.mp4( G8 @* o9 s  t2 z& B
    │      8 l2 ^, f" s+ e# O
    ├─第21周 整合开发B端其他页面的各种功能- U; g$ w* S  ~, p) ?1 w% o7 ~
    │      1-1 周前言.mp43 w1 ~6 C# F5 P9 f- b5 N
    │      2-1 发布作品需求分析.mp4
    0 N7 }0 o2 k5 u; J│      2-2 前后端分离开发简介.mp4; L6 l, w% b; }9 m9 s
    │      2-3 html2canvas 获取截图.mp4: I/ @9 P" @' X' Q$ P6 y8 |
    │      2-4 html2canvas 踩坑修正 bug.mp4
    3 S  M' L) D3 N" z0 w# j$ C+ B; q│      2-5 完成截图并且上传文件.mp4" e' _. f) k1 V# M+ @2 d
    │      2-6 html2canvas的基本原理.mp4
    & S! i( R- E+ E  C5 J: ~│      2-7 html2canvas 原理简单编码实现.mp4- v- v* l8 Y; N* d9 i% A1 O
    │      3-1 完成发布流程.mp4  u3 v+ y- l  x- Q
    │      3-2 发布后创建渠道.mp4* b) g) u" h  d7 ^6 d5 o2 W, g- q
    │      3-3 添加 usePublishWork.mp4
    ( S0 ~6 D5 W4 g0 a6 h( J│      4-1 创建和删除渠道.mp4
    4 L, u, T% W# ~- Y% L│      4-2 使用 qrcode 将渠道链接生成二维码.mp43 T' e8 Y9 F9 f# U  u0 {3 I
    │      4-3 watch 数组的陷阱:新添加的渠道生成二维码.mp4
    8 M2 m2 w( e* S3 E( A2 F4 p) W' Z│      5-1 使用Clipboard.js 实现内容的拷贝.mp41 `6 x0 Q( ^, L4 |. L; B
    │      5-2 拷贝文本的原理.mp4
    2 ^$ ~7 J( ?* K# t8 [$ c$ V│      5-3 完成copyToClipBoard编码.mp4! V3 t5 i$ j! Q6 I: W0 w. L8 A
    │      5-4 PreviewForm 预览组件第一部分.mp43 ]2 l1 k- g  l/ W9 W0 Z! z
    │      5-5 PreviewForm 预览组件第二部分.mp4" W# x3 [9 ^+ I6 S- b+ K; [. V; Z5 U
    │      6-1 剩余页面需求分析.mp4
    % U1 P8 A. ], F0 N$ r+ b2 `! q│      6-2 useLoadMore 编码第一部分:改造 actionWrapper 支持 queryParams.mp4
    2 i: }( b8 Z8 G7 T/ j│      6-3 useLoadMore 编码第二部分:实现基本功能.mp45 [" q9 V! T  e6 ^$ s
    │      6-4 useLoadMore编码第三部分 - 页面实践以及支持无限滚动加载.mp4: L6 @# I. H/ X/ ?* `1 K
    │      6-5 useLoadMore编码第四部分 - 创建我的作品页以及发现新的问题.mp4
    $ }' T% Q$ i9 S; t7 i' u" x2 f│      6-6 useLoadMore 编码第五部分 - 数据驱动界面,改造成分页组件.mp4
    6 }/ j, |1 |/ m& T0 D│      7-1 下载图片原理编码第一部分.mp4( h/ V4 b2 Y4 r1 w
    │      7-2 下载文件原理编码第二部分.mp4
    + B4 M# l$ F: l% F6 u% [│      7-3 使用 FileSaver.js 来完成图片的下载.mp4& L5 z% _' q9 n6 I. P9 n
    │      7-4 FileSaver.js 源码解析.mp4
    3 y6 Z7 t+ K' V) a9 _│      8-1 周总结.mp4
    7 [) G* I9 i' C2 c│      
    / ]) m% Z3 Z9 X. A# {├─22大型项目的编译,部署以及性能优化
    6 s. t- R" _+ z0 H% E6 i3 U│  ├─第1章周介绍
    0 Y5 V2 W/ L: L0 p% r, A( H5 P5 o│  │      1-1第22周前言.mp47 z% Z  v( I( n" J. H1 r
    │  │      8 R# T: ?; `& r$ `5 E- W
    │  ├─第2章使用VueCli编译生产环境代码以及创建不同模式. J' C  w9 _/ t) j3 ]" b
    │  │      2-1开发,预生产,生产环境的概念.mp4, c: g  o; x) g* D9 |; c; I
    │  │      2-2使用vuecli生成生产环境代码.mp4
    : ^4 H& c- E9 M3 T# i% ~7 n# f│  │      2-3VueCLI中模式的概念以及简单使用.mp4" B, @; _& w" q4 G' x
    │  │      2-4使用环境变量文件第一部分.mp4
      m5 y1 n' L1 H│  │      2-5环境变量设置第二部分创建预发布环境变量文件.mp41 t, O* v5 b9 u- M* d+ D
    │  │      
    . d1 A# R" U7 o│  ├─第3章Webpack的基础回顾以及Loader和Plugin的原
    # n$ V7 J( x% E, B│  │      3-1Webpack基本概念回顾.mp4
    3 P8 U9 y0 n/ U6 o│  │      3-2动手写一个WebpackLoader第一部分.mp4
    . Z$ S! e( X% M│  │      3-3动手写一个WebpackLoader第二部分.mp4* I! N. d( l& l9 `
    │  │      3-4动手写一个Webpackplugins第一部分.mp4( G- S; W0 Y5 }+ X
    │  │      3-5动手写一个Webpackplugins第二部分.mp4. Q4 ?# p9 `2 X  b, c$ h# x1 z: N6 ]( ?
    │  │      % q* Z0 ?! @3 I+ s9 a1 P' z
    │  ├─第4章修改Vue.config.js配置完成打包分析和优化3 H9 |' g9 n5 `
    │  │      4-1vue.config.js简介.mp4. \  X5 P; m' R$ ~# Z5 k
    │  │      4-2安装webpack-bundle-analyzer插件.mp4( {: k- }; z# b
    │  │      4-3webpack打包优化第一部分:移除不需要的第三方库.mp4# p/ L9 {; ]. _
    │  │      4-4webpack打包优化第二部分:按需加载ant-desig.mp4
    $ |$ s4 b, T3 W( `$ E: R│  │      4-5webpack打包优化第三部分:分析第三方库继续优化的方案.mp44 I3 z9 d- e7 B4 G
    │  │      4-6手动分割第三方库成多个文件.mp4
    7 i/ _( O- c7 q' K( X/ E│  │      4-7按照模块大小自动分割第三方库.mp48 W4 y, Z) ?4 v) p' m; ]
    │  │      4-8实现路由懒加载.mp4
    8 I" D; l* p# l& E8 V│  │      4-9使用chainWebpack修改webpack已有配置.mp40 p6 `7 E- l, e: [
    │  │      # f' s5 }6 A* q4 z5 S1 s6 B
    │  ├─第5章部署以及HTTP优化
    0 J: C( \0 y) N: d8 |│  │      5-1部署的概念.mp4
    $ @4 N- R8 d8 W2 d2 p6 F3 @) _/ W│  │      5-2nginx安装和简单配置.mp4
    ( O3 ?' I2 |$ ?. w% W│  │      5-3HTTP缓存设置第一部分:Expires和Cache-Co.mp42 f* `- R4 @# v# Z7 F- ~, t
    │  │      5-4HTTP缓存设置第二部分:Etag和Last-Modifi.mp4
    / S: e  G; B4 ]" T8 M# P# X- x, _│  │      5-5使用gzip压缩对应的HTTP请求资源.mp4% w& x* p8 z4 u& X  b
    │  │      5-6使用Brotli完成HTTP压缩优化.mp4
    ; e+ d6 u7 Q" X5 J0 P% v4 H) a│  │      5-8使用keep-alive减少多次TCP连接.mp4* G: e8 J# B" n* X
    │  │      5-9使用HTTP2大幅提升加载速度.mp4" W9 A- q8 q) D4 j! `" P& D. ~
    │  │      + L7 V7 S1 |1 x+ F+ U/ D0 |6 U1 p
    │  └─第6章周总结
    0 X+ u+ T+ \+ ~│          6-1第22周总结.mp4; b& D! p$ `1 z
    │         
    2 M6 S, `+ Y6 B2 A7 ]├─23基于Vue3SSR渲染作品H5页。+ u/ K0 D8 o6 w; J1 P6 c
    │  ├─第2章技术方案设计3 l! ^+ f9 E% \: s5 T! w! |: J2 m2 r
    │  │      2-2回顾此前的技术方案设计.mp4
    $ h9 `7 o# k; @, n│  │      2-3回顾发布功能和url设计.mp4
    % B0 V$ K0 O$ ^7 g" D│  │      2-4整体设计思路-使用SSR.mp4& a9 P/ E; ~! s5 n# I7 b
    │  │      2-5整体设计思路-使用缓存.mp4: X* b6 a2 F. |" ]& f
    │  │      2-6整体设计思路-网页前端功能.mp4& U' D" v6 \) t9 n! K# k
    │  │      2-7写技术方案设计文档.mp4
    + M5 J" b" ?% V: w; a│  │      
    7 c1 W- G0 \% a1 C) p: ^! u) q│  ├─第3章搭建项目环境
    . z& k: H3 f; Z1 r( g9 S% G│  │      3-1搭建项目环境-章介绍.mp42 t8 @- b9 ?8 t$ V+ m8 Y
    │  │      3-2回顾biz-edtior-server项目环境.mp4! }$ a9 l, S5 o2 {3 ^  R9 e
    │  │      3-3初始化项目环境.mp4
    % @+ T5 A" E$ U│  │      3-4连接本地数据库.mp4  h2 N  p- c1 i+ Z9 v* A4 l7 s" F
    │  │      3-5Dockerfile的配置解读.mp4
    " |# G- E) O: e: J+ q. j│  │      3-6docker-host访问宿主机(重要).mp4
    8 ?, o4 u) R6 Z% y8 i8 M0 @+ u│  │      3-7githubactions自动部署到测试机.mp4$ X. l: l$ k( r+ h( q
    │  │      3-8搭建项目环境-章总结.mp4
    # ?; x1 F( R9 F% ]% f/ K9 d8 P9 ]│  │      
    * Q% h0 B1 Y+ J+ _│  ├─第4章使用Vue3SSR渲染页面
    1 i" `# r8 E* K0 O0 s│  │      4-1Vue3SSR渲染页面-章介绍.mp4
    5 j7 l( z; P+ |5 Y- Q+ b, ]│  │      4-2开发路由-发布页面.mp4
    , o* g! b1 N2 Q( M│  │      4-3开发路由-controller和cache.mp49 A4 |) ~% ?! q/ D) x+ U. {, A
    │  │      4-4Vue3SSR调研.mp42 U& k# J4 j* ?+ H: _$ A
    │  │      4-5Vue3SSR渲染页面html.mp4& t  R5 [3 X, j( O1 B
    │  │      4-6px转换为vw.mp40 `$ O9 e& r9 S7 X" {
    │  │      
    * i# j6 r1 R9 a: X- @+ c│  ├─第5章前端页面功能+ f! |, k. C1 s+ `5 @& L+ {7 e
    │  │      5-1H5前端功能开发-章介绍.mp49 t* N6 `: \  }( S6 I: q& H
    │  │      5-2webpack打包静态文件.mp4: i8 Y9 |. _) A+ [+ J8 f  C% }
    │  │      5-3动态引入打包出来的js和css文件.mp4/ P' e3 T% V0 L
    │  │      5-4静态文件上传到CDN.mp4
    : E+ h) D1 i% g, Q6 f│  │      5-5前端功能开发-渠道检查和统计.mp4
    8 a, N8 i6 k- f│  │      5-6h5实现事件跳转.mp4  _0 e: q% e$ h1 T% h+ b
    │  │      2 ~( S4 y. {4 E0 X) n. m/ r: o+ E0 L/ W
    │  ├─第6章配置微信jssdk
    9 {3 i) p8 p5 ~+ s│  │      6-1微信jssdk配置-章介绍.mp4) N8 A9 w! i# |9 X$ R" _
    │  │      6-2生成微信jssdk配置的主要流程.mp4
    * w  n7 n1 w6 Q6 ]5 O0 c│  │      6-3生成微信jssdk配置的流程-细节.mp4
    5 }/ g' |: `& [│  │      6-4生成微信jssdk配置的代码演示.mp4: L' Q3 y$ b  w" Q7 r
    │  │      6-5微信分享的线下调试方法.mp4
    - a3 |3 [9 @6 G) j, F2 ^& A6 `1 v│  │      6-6微信jssdk配置-章总结.mp4
    2 k* u) ~- `+ U& V3 m│  │      
    " e; j/ p! r0 \7 H6 F2 v. f' k│  └─第7章周总结8 o3 z% q6 @0 W2 ]) \* c# h
    │          7-1关于单元测试-留作业.mp4
    + G) m* A: I* W2 O3 S, |6 }7 N! B│          7-2周总结.mp4$ V+ {" H- v! [2 i
    │          , P- f* e. D$ ?& `) V& p. W7 {5 Z
    ├─24自研统计服务,使作品能实现分渠道统计- U4 D1 }3 u: N; A% s, ]
    │  ├─第1章周介绍
    % y7 A, T4 _8 w( _5 A# m│  │      1-1周介绍.mp4% m+ S- d- @/ V3 W' B
    │  │      
    ! X) Z% T% G% `+ p0 T- ~1 T" u│  ├─第2章技术方案设计
    : x  P$ k3 C2 K7 B- F- G# P│  │      2-1技术方案设计-章介绍.mp4
    ; l8 o" ]$ ~. K6 {│  │      2-2回顾和事件统计相关的内容.mp4
    # m9 R- L2 `/ h# k  d: I. J' v│  │      2-3技术方案设计-nginx收集日志.mp4% H: T5 Y+ P' t6 u* E1 o* J
    │  │      2-4技术方案设计-定时任务.mp4- V3 ?# p. K2 C: k5 s2 I: D* p# R
    │  │      2-5技术方案设计-章总结.mp48 m7 B1 l- `0 O
    │  │      
    , D* K3 _: Q  n2 u│  ├─第3章nginx收集日志
      N( _2 p6 w; m- }3 q8 R│  │      3-1nginx收集日志-章介绍.mp4
    % k0 C4 \* K0 N│  │      3-2nginx安装和配置.mp4' R9 L, v8 F2 |% x
    │  │      3-3linux定时任务crontab.mp4
    4 X# q( D( t* }' I9 s% H│  │      3-4nodejs定时任务node-cron.mp4
    5 X4 C- O2 v; T9 l; j│  │      3-5定时拆分日志文件.mp4" s1 q1 @) u) d0 [' h! ^
    │  │      
    % M9 E; \1 Q- U# x% B+ z2 B│  ├─第4章分析日志
    5 {1 M9 b0 \2 W/ p2 P+ {│  │      4-1分析日志计算结果-章介绍.mp4  g5 ]& P! R/ D" m
    │  │      4-2技术方案设计-url参数设计.mp4/ G8 Y/ h" Y% r' ^
    │  │      4-3技术方案设计-数据结构.mp4- H5 t6 p/ U- n# }3 @$ @9 `" c
    │  │      4-4分析日志计算结果.mp4
    9 J% ~9 Y6 q" X8 q│  │      4-5计算结果写入数据库.mp4
    8 j9 x; L4 ~! ~│  │      4-6单元测试.mp4
    7 T  @8 l# }* t& D3 @6 g│  │      4-7分析日志计算结果-章总结.mp47 a0 O' `9 _6 k' F# D9 x$ l, y
    │  │      
    # a, c5 ~( P3 _% b2 Q1 U│  └─第5章开发OpenAPI
    $ }7 p" ?1 `9 T│          5-1OpenAPI章介绍.mp4+ C% x, v4 _; m
    │          5-2初始化Koa2环境.mp4
    ' _2 m. {1 I  _│          5-3开发路由.mp4
    : H0 C% m2 n; G* q│          5-4接口测试.mp4
    * F$ C% Y% S2 d+ T│          5-5测试机部署nginx服务.mp48 p5 p9 s8 o' Y! i! G- o
    │          5-6OpenAPI部署到测试机.mp4
    " @6 K+ o+ J$ n9 n│          5-7OpenAPI章总结.mp4
    $ ^- t6 @4 t, Y- s│          , N- |. D) ~! F8 }+ b8 i
    ├─25后台管理:让所有数据都在我们的掌控之中. a+ h8 q. K+ ^2 J
    │  ├─第1章周介绍
    - V7 ]: _1 @2 R" q│  │      1-1周介绍.mp4
    $ Y6 x0 V* N+ R9 v2 F( {│  │      8 n) c+ [7 Z2 L/ K- Y7 Q
    │  ├─第2章技术方案设计
    % \3 S# @' \: F. E│  │      2-1需求分析和技术方案设计-章介绍.mp4
    & M  {+ R: t1 F! ~% `- Q│  │      2-2需求分析.mp4! ]) p: k" g; D9 `' K: z+ G
    │  │      2-3技术方案设计.mp4: M5 Z% _5 l0 D6 P' g& L' Y, \
    │  │      
      ?5 |! p7 Z. E( H! z│  ├─第3章前端开发, i( n# [! o! a- N" h4 I. V
    │  │      3-1前端开发-章介绍.mp4- ^+ {0 u! Z' w; C! d6 l5 A
    │  │      3-2umijs初始化项目环境.mp4  [9 t" r# C. H9 Y1 G2 f
    │  │      3-3封装ajax和host.mp4
    * K. [# S6 ^; ]0 ^  q0 k4 k│  │      3-4登录信息验证.mp4
    , i2 Z0 S7 M* ^) \# r│  │      3-5各个页面的功能开发.mp4
    - _* x1 V: t, l+ J4 J1 O│  │      3-6首页dashboard开发.mp44 T1 ~8 Z" ~' m& B
    │  │      3-7发布到测试机.mp4& M# h7 W+ g- u  b( K/ z7 p0 D
    │  │      3-8前端开发-章总结.mp4
    % L" R! x7 y6 d│  │      / z; ^  m4 k2 w1 r) a( H0 W
    │  └─第4章服务端开发6 Q# S$ i; ?) H) j) z
    │          4-1服务端开发-章开始.mp4+ \: h- x  V4 n
    │          4-2服务端代码结构.mp4) @5 L6 S7 n% e; P* j
    │          4-3按月统计的功能如何实现.mp4
    7 T: s8 D5 \8 X- n0 F6 i│          4-4服务端开发-章总结.mp4
    # C% _- @7 o- o" J+ m9 A' h│          ) ~& j$ t" x. L- z& f3 a
    ├─26发布到阿里云服务器,支持快速回滚
    % U0 j1 v; K( R! _) v4 Z$ Z│  ├─第1章章简介( P. e" W* Q5 R% c" U
    │  │      1-1周介绍.mp4
    - W' `6 `, Q: W- p│  │      
    + B% k, T3 U  P, X│  ├─第2章购买和配置服务器; s4 D# l2 `, ^5 e
    │  │      2-1购买和配置服务器-章介绍.mp4
    " c2 n# w* f) W5 m3 x9 ?│  │      2-2购买服务.mp4
    9 U; P; z. x. w, u& S0 X│  │      2-3配置服务器和数据库.mp4
    : n. }" Z6 E9 t- X# W│  │      2-4购买和配置服务器-章总结.mp4/ M4 D; s! c) m  d
    │  │      0 u# @& W1 T6 m
    │  ├─第3章上线和回滚流程6 x1 @* V, _8 Y$ \2 `
    │  │      3-1上线和回滚-章介绍.mp4  u8 |- T# N+ |& i, [6 c
    │  │      3-2使用gittag和githubactions发布上线.mp4
    ; }' d' j9 A6 U. _* R4 t│  │      3-3一键生成tag.mp44 K, G4 F* F2 v( l9 a
    │  │      3-4使用release-it.mp4
    % d+ a& m4 |" j9 J  n4 W' g. L* M, X│  │      3-5所有项目发布上线.mp43 Y7 j& E9 r" |; m7 h. e% G
    │  │      3-6上线和回滚-章总结.mp4
    3 }( C3 f2 t) G, D6 R& t& T3 q│  │      ; c' |: k$ R( T% m5 m' P
    │  └─第4章域名转发和nginx配置9 u' @. g2 t; n" @
    │         4-1域名转发和nignx配置-章介绍.mp4
    1 u3 c" a8 e0 ?│         4-2域名的购买和配置.mp4$ V7 K) l2 {6 J  T5 k  f
    │         4-3nginx配置.mp41 b% a" _4 z# D, N/ W  \
    │         4-4线上环境的CORS配置.mp4
    1 {1 b3 `9 i) l  w│         4-5线上日志拆分.mp4
    9 i, s  F2 T% {& B* d3 o6 n% y0 y│         
    1 M3 E- e& a2 t6 `* f0 o# E. U├─27运维监控和报警3 _) R( k6 a5 ^! q
    │  ├─第1章周简介7 ?1 Q+ I' {, v: N( |
    │  │      1-1周介绍.mp4
    7 n2 C- r6 P9 x9 S0 \│  │        M: X1 T4 k8 S# D5 B" ^6 ]
    │  ├─第2章异常处理和安全预防$ e) V. Y& F5 x+ V
    │  │      2-1异常处理和安全预防-章介绍.mp4
    ( U& ~! u" d% O( A* _; R1 Q/ I! q: E│  │      2-2统一异常处理.mp4& S+ v& Y% \& |# u8 G% H
    │  │      2-3预防内存泄漏.mp4  Q* w0 X7 t% T) Z* e
    │  │      2-4安全预防.mp4
    ( L+ d/ Y! w+ ~1 q" A. v6 t│  │      2-5预防网络攻击.mp4" c& D0 u/ }1 L1 z
    │  │      2-6关于短信验证码接口.mp4% g' T( X7 n, f9 l2 R2 b. |
    │  │      2-7异常处理和安全预防-章总结.mp4
    ) G# B5 G/ B( q' `! m5 ?│  │      $ p0 |) \$ X5 ~$ h4 G! z5 x
    │  ├─第3章监控和报警
    * o  ^6 B) B: M. s6 k. ^. g│  │      3-1监控和报警-章介绍.mp44 z/ Y1 ~% q; G; D! Z) R
    │  │      3-2心跳检测.mp4* ]/ c5 z; I* u+ C2 _3 p
    │  │      3-3心跳检测是否需要单独拆分出来?.mp40 O/ |' R+ U' W- f+ b/ W
    │  │      3-4报警的范围.mp49 b4 m$ d% ]$ w0 y" z& J5 _
    │  │      3-5邮件报警的实现.mp43 ~9 S7 b% m0 U
    │  │      3-6安装alinode.mp4' a: u4 W* m# ~3 W- H& y7 {# {9 _
    │  │      3-7alinode设置报警.mp4
    5 t: i. C, t1 O8 d+ u│  │      3-8监控和报警-章总结.mp4
    ( u4 v7 ~$ |; {3 |. d5 T) v│  │      5 c* |2 A- W! }8 ]* g
    │  └─第4章周总结
      c  t3 ^6 g& N2 z/ ~& }│          4-1周总结.mp4
    9 O, E& w8 P3 U│         
    % ~" c. i" Q1 F' n+ t2 v├─28脚手架发布模块架构设计和核心流程开发
    1 f. y: U9 @2 g1 J; Y│  ├─第1章周介绍
    0 e8 p! O/ N( B- ^# e7 ]) ?" ~│  │      1-1本周整体内容介绍和学习方法.mp4
    . h, l% q2 G$ ~: _8 G1 s4 z│  │      ; G2 f. e) M8 J. d' b2 v
    │  ├─第2章项目发布流程架构设计+ x! A  k& w( _' R1 W
    │  │      2-1脚手架发布功能和流程讲解.mp42 B5 V* ^1 i# A; y+ v
    │  │      2-2绘制项目发布架构设计图.mp4
    0 T( p. ^4 I! ^6 _( Z4 a- h│  │      
    , Z% v, ^8 E2 ^* B│  ├─第3章imooc-cli脚手架gitflow自动化架构设计
    1 Y7 \/ a( e. v' z1 B│  │      3-1gitflow基础流程讲解.mp4
    ' p8 [8 Y: m0 R+ ?4 v, L0 v│  │      3-4脚手架gitflow执行阶段架构设计.mp4
      ]( V6 e# I1 E' J│  │      # ^- |, X3 w0 s$ w
    │  ├─第4章imooc-cli脚手架云构建+云发布架构设计( t* s  P( X* X* M% x( k
    │  │      4-1云构建+云发布整体流程设计.mp4( o5 I1 p3 I2 T
    │  │      4-2云构建+云发布详细流程设计1.mp4" `: K3 X4 H- o' l% H3 S4 @% o
    │  │      4-3云构建+云发布详细流程设计2.mp4
    0 V; G- d' g- K9 N" R│  │      4-4深入讲解云发布原理.mp4
    5 g& r( j& H. ~│  │      6 G  z0 ^* A9 `6 q
    │  ├─第5章imooc-cli脚手架publish模块开发
    5 t0 p; @% R9 w" K3 I! T│  │      5-1创建publish模块.mp4  q. M3 @" b8 j& v3 {3 r
    │  │      5-2publish基本流程开发.mp4
    # a  ^8 x* [. [& A" r# z7 g│  │      5-3项目发布前预检查流程开发.mp4
    3 L' t- I1 }7 b7 Z/ s  z" z2 z│  │      & Q& m. k2 R( C+ B% b
    │  └─第6章本周加餐:前端路由模式原理和vue-router源码讲解
    ! y& ^) P) ?6 C│          6-10深入解析router-view源码.mp4) @+ e' j3 Q: L7 ?8 y, L
    │          6-1vue-router-next完整运行流程解析.mp4" |. m9 X, M: i  H. j. f1 R
    │          6-5vue3高级特性:vue插件+provide跨组件通信.mp4
    ' h4 @6 d" }7 w, D' S% y: R' P6 ]│          6-6vue-router路由跳转核心源码分析.mp4
    - r1 S$ d" m. a. R│          6-7vue-router路由匹配源码分析.mp4
    $ h- E& B2 l0 ?$ l│          6-8vue3新特性defineComponent讲解1.mp4
    ; {0 n( C8 c% n4 ]) z) a│          6-9vue3新特性defineComponent讲解2.mp4
    # d) n  W" d) g; {0 w8 P/ ~6 Y│          - V/ V# K' s8 f+ u) F) _4 g" [
    ├─29脚手架发布模块git自动化流程开发$ `* Y5 U+ m0 j: C- k) |
    │      1-1本周整体内容介绍和学习方法.mp4
    0 y9 `2 [$ }- f3 _│      2-1GitFlow模块架构设计.mp4
    6 ?- ]6 o+ {4 p+ ^+ K# p│      2-2GitFlow流程回顾.mp4
    - s9 x/ }3 T5 V- q  l│      3-1创建Git类.mp4
    6 Q2 D' s. J5 L* ?, r2 h│      3-2用户主目录检查逻辑开发.mp4
    5 s2 O8 o3 p- b& I! [9 P4 x" T8 |│      3-3选择远程Git仓库逻辑开发.mp4) K( T2 H  Q! H2 l/ U' C: U
    │      3-4创建GitServer类.mp4! x1 B. u# q; h
    │      3-5生成远程仓库Token逻辑开发.mp4' A# s# R" c: N1 Z$ }
    │      3-6GiteeAPI接入+获取用户组织信息功能开发.mp4
    : s% q: B  k- ]+ q( _  T# d│      3-7GithubAPI接入开发.mp4
    5 I& ]7 L" q6 m! n│      3-8远程仓库类型选择逻辑开发.mp40 B6 U/ n4 A3 B2 H/ a
    │      4-1Gitee获取和创建仓库API接入.mp49 h5 D) [/ ^9 S' L
    │      4-2Github获取和创建仓库API接入1.mp40 F' y2 m+ D* _1 w% A/ F9 O7 S
    │      4-3Github&Gitee组织仓库创建API接入1.mp4
    , j" f2 f5 H2 E7 v' G! \, d│      4-4gitignore文件检查.mp4
    . x' s" Z" }: K5 i9 e│      4-5git本地仓库初始化和远程仓库绑定1.mp4
    : o3 f8 J5 X6 Q  u, y8 Y│      4-6git自动化提交功能开发.mp4
    # g' k: Z  X% I. z" n│      5-1自动生成开发分支原理讲解1.mp4
    / j* Y" `" M) x7 S  |$ }/ I│      5-2自动生成开发分支功能开发.mp4* n" u3 I- n/ \5 i3 U
    │      5-3高端操作:自动升级版本号功能开发.mp4; ?$ i: F# P' O' I  y! G) n3 D
    │      5-4GitFlow代码自动提交流程梳理+stash区检查功能开.mp4
    4 C3 {& j5 h2 S) @* D) \│      5-5代码冲突处理+Git代码删除后还原方法讲解.mp4* S4 y* v; t; R& A% m
    │      5-6自动切换开发分支+合并远程分支代码+推送代码功能开发.mp4
    " e4 d% h3 _& E4 D; o& G& N! E- i│      6-1Node最佳实践学习说明.mp4
    8 N" x# N3 P# K7 ~! v/ S│      6-2Node项目架构最佳实践.mp4
    ! z! L* o6 a& v# y6 n2 A0 J│      6-3Node异常处理最佳实践.mp41 W. o; l7 F/ `1 o" r- [
    │      6-4Node编码规范最佳实践.mp4; N% O  i: J7 o" ?" }
    │      6-5Node测试+安全最佳实践.mp4
    , x8 m4 s  l  s; K% I- O│      
      u6 \& R- H* u- c! v├─30脚手架发布模块云构建系统开发: k. i* V* V: n
    │      2-1详细分析为什么需要设计云构建系统.mp4
    % e. x: ~2 _# B; G5 e' e5 L1 }4 S4 p│      2-2云构建系统架构设计.mp48 A. O- e& n6 X" q) z7 Y' H# D8 E; B
    │      3-1WebSocket基本概念及同HTTP协议对比.mp4& Y  x1 F: [- @2 y, |
    │      3-2egg集成WebSocket服务.mp4- s2 b3 z. c- a9 {# i6 _  e# |
    │      3-3WebSocket客户端开发.mp4: t9 W3 V$ Y) Y8 [1 O% ^
    │      3-4WebSocket客户端与服务端交互流程分析.mp4
    3 d2 m! b) ~/ H3 @6 L1 U( A│      4-1redis基本概念+安装方法+基本命令.mp4
    8 r% u, z/ B$ I1 s4 y8 |0 E  I│      4-2阿里云redis服务配置和远程连接方法讲解.mp4. }) ~; P8 J# j$ g3 x+ F% V2 R
    │      4-3egg集成redis方法讲解.mp4. |: X- r; t+ t  {# k0 L- x
    │      5-1CloudBuild类开发.mp4
    - d" C4 ?5 X" X# F│      5-2生成构建命令+构建命令检查开发.mp4
    % ^( ~' O" Q# m│      5-3通过CloudBuild创建WebSocket连接.mp4/ Y% H6 W* D# `4 N1 g7 e3 i
    │      5-4WebSocket超时自动断开连接逻辑开发.mp4
    - v- Q; I  P' [7 r│      5-5WebSocket客户端和服务端通信优化.mp44 L$ M5 r1 x3 D/ P' H; p1 m6 I8 r
    │      5-6云构建任务写入Redis.mp4
    ' X3 E% S9 d. G- i6 @  i1 S! X$ A│      5-7创建云构建任务功能开发.mp4& H! v) O1 `4 a. |4 q: l
    │      6-1云构建任务初始化流程开发.mp4
    ! M! Z$ l  N+ v1 M) Z. m│      6-2云构建任务交互日志开发.mp4
    & i% M9 C; \; E! j  B│      6-3服务端源码下载+切换到开发分支功能开发.mp47 }6 ~; a' Y, X" i, b$ ?
    │      6-4服务端源码依赖安装+命令执行功能封装.mp4
    ( _' \4 j2 K4 y0 k* I- s; ~│      6-5云构建任务执行逻辑开发.mp4
    : Y, D, t# a6 k) R: k; }+ c│      7-1本周总结+作业.mp4
    # W4 i3 b7 H3 W3 u+ W% L│      
    ) ~' Z( k7 u: ~) n7 H$ X├─31脚手架发布模块云发布功能开发
    $ a; K5 w# @* [- T! [( ]7 r/ l4 B│      1-1本周整体内容介绍和学习方法.mp4
    6 ]& x9 ~# N; W6 t: K│      2-1前端发布OSS架构设计.mp4: O* P6 n9 u3 h4 j) ?- }
    │      2-2云发布架构和流程设计.mp4" ]  h1 b! j! T9 f
    │      3-1实现云发布前的预检查逻辑.mp4
    ) t# e* ?! k9 r9 i2 G8 w' |7 K│      3-2静态资源服务器类型选择逻辑开发.mp4* q) b5 r8 v4 n1 P7 U
    │      3-3云发布服务端预检查逻辑实现.mp4
    0 q& ^5 G2 [3 q- N2 y│      3-4创建OSSbucket+OSS实例化开发.mp4
    2 r# q3 g, j) d6 ?5 M1 f- b" j│      3-5云发布核心流程:上传OSS功能开发.mp43 }( d1 H* b5 c
    │      3-6OSS域名绑定+CDN绑定.mp4
    ( u* F- Q3 u. k& k" }" A, H│      4-10自动打tag+合并代码至master分支流程开发.mp40 Q7 o. F, X3 z
    │      4-1获取OSSAPI开发.mp4# p! O3 s& x) R% h2 m
    │      4-2覆盖发布逻辑开发.mp4
    " _+ C1 I: T+ t) n5 y( s│      4-3服务端缓存文件清除功能实现.mp4. E+ r5 L) G2 s: l. ^" a: }
    │      4-4自动提交代码BUG修复.mp4
    8 D! u5 ~, }* B9 D│      4-5history模式发布原理讲解.mp4" e& Z* Q" O7 ~% q, C
    │      4-6history模式远程发布原理讲解.mp4
    ! u0 Y0 O: U: B- p│      4-7脚手架自动上传模板逻辑开发.mp41 W1 r7 O1 @2 F  ^% r& s* C: O
    │      4-8获取OSS文件API开发.mp4
    3 C5 R' H! d% @7 X  O: K3 y│      4-9上传模板功能实现.mp49 m5 k+ {3 R2 \0 h: ]; a9 ^/ J
    │      5-1Node高分库:PDF文件生成工具——PDFKit.mp4
    2 \0 i' L$ P5 s' ^│      5-2NodeExcel处理库讲解.mp4  n( b" N% i$ B1 a
    │      5-3命令行交互库Listr讲解.mp4
    ' c& b7 ~) @! [& S9 }, @│      5-4利用Listr对项目自动创建Tag逻辑进行优化.mp4
    , @6 X  p# {+ Q" x+ Y: D: f! c│      6-1本周总结+作业.mp48 h* L/ G1 G  X5 t" T
    │      7 x! m2 \. j1 o0 b2 ?* X
    ├─32脚手架组件发布功能开发
    : z# |4 r- E/ m& E% v* k│  ├─第1章周介绍
    : n4 b1 h" T2 D  ?- [│  │      1-1本周整体内容介绍和学习方法.mp4
    2 }3 d( p7 e8 R) {│  │      7 ~. ~9 L" w. x; k: p% E6 n
    │  ├─第2章大厂物料体系介绍和前端组件平台架构设计/ F; l  E) s; b0 y: H
    │  │      2-1大厂前端物料体系介绍.mp4
    . M. f. g# V. ^' {& T7 h- C│  │      2-2组件平台架构设计.mp4; F' P! G1 A4 G- M' h/ h
    │  │      
      i' q8 R& V' W8 A! _  B  i│  ├─第3章脚手架组件创建和预览项目开发6 k# W+ w4 m6 z+ |/ Q( u9 a) `2 M0 K
    │  │      3-1新的组件库模板开发.mp49 L" k& @; }3 g
    │  │      3-2组件库预览项目开发.mp4! m. g, i$ o3 J, {
    │  │      3-3组件多预览模式开发.mp4
    $ J) t! K: T9 P3 E2 V# B│  │      3-4将预览功能集成到组件库模板.mp4) v! `" v; L' N2 e- V& m
    │  │      3-5组件初始化时自动生成配置文件.mp4- i/ d' _* P/ B4 g
    │  │      3-6组件库命名优化.mp4
    $ `+ l/ k% q2 U8 a( R5 P' A│  │      4 \) W3 J- ^1 l# o+ X" v0 L
    │  ├─第4章脚手架组件发布流程开发
    0 s- S, @0 A/ j│  │      4-1组件仓库初始化流程优化.mp4; ?9 x2 d: y6 ^: v/ J& p
    │  │      4-2组件上传前预检查流程开发.mp4; u6 c8 q% n+ j7 p1 x0 B" Z
    │  │      4-3组件发布前准备工作开发.mp48 j' b3 q  Q9 z( X% E) x
    │  │      4-4创建RDS组件表+后端MySQL插件集成.mp4! K2 k: P+ v7 q) l, t
    │  │      4-5组件上传数据库准备工作开发.mp46 b5 Q; u# S+ Y) A+ P
    │  │      4-6组件上传restfulapi开发.mp4
      V- ]& T2 _- p' R5 [! g│  │      4-8组件NPM发布逻辑开发.mp46 n. s- @; p1 i8 P" i
    │  │      4-9组件自动生成远程仓库Tag问题解决.mp4
    + j7 z" N" `6 F; A│  │      
    5 E5 [1 S; K% X( j2 t│  └─第5章本周总结+作业
    & u/ V7 E. g+ u! V│          5-1本周总结+作业.mp4
    6 I; B/ d: o9 i: }5 J( Z; s│          * m3 S/ D9 |% Y; P+ }1 [
    ├─33组件平台开发
    $ [* `" M. D/ r% O│  ├─第1章本周导学
    7 \  ]& `& P3 ]│  │      1-1本周整体内容介绍和学习方法.mp4; L! _0 Y/ M0 e3 a8 Y
    │  │      1 V) y8 J+ x  V' r  J0 f
    │  ├─第2章组件平台架构设计和技术选型5 c4 ~/ j2 [& R  X) ]
    │  │      2-1组件平台架构设计.mp4
    ! \. ^  j. _5 T9 m" E( Q$ P6 Q& K  w│  │      2-2组件平台技术选型和框架搭建.mp4
    9 G/ U. R% G' s& ~6 V│  │      
    1 t3 ?& U; |5 M. _+ @3 e│  ├─第3章组件平台基础功能开发2 N1 a0 B  y% ]% f
    │  │      3-1umi项目全局入口文件+国际化开发.mp4
    / }7 @+ ?2 d! U- v% {1 ]│  │      3-2组件平台功能展示+页头页脚开发.mp4+ \! F# z% s+ D( j5 y: V8 A
    │  │      3-3组件平台动态配置API开发.mp4
    $ [9 S/ d& P3 A* {8 n5 b│  │      3-4前端动态配置API接入.mp4' D' [! I! q. @) l
    │  │      : q% Z3 |8 y. b* ~. D! T
    │  ├─第4章组件平台组件列表页面开发3 G3 ^; P8 L9 K
    │  │      4-1组件列表API开发.mp4
    : `3 C/ A- h3 {: t% V6 H$ A6 z; U│  │      4-2测试组件数据创建.mp41 S" A% m3 X$ U+ m& P2 [! O
    │  │      4-3组件列表页面开发.mp4
    + r' E  ?+ Q. }! B: [% T" H- C│  │      4-4组件卡片面板开发.mp4
    ! \4 D1 x9 |- N  a% ]│  │      4-5搜索框组件开发+模糊搜索API开发.mp4$ r$ S. C7 }, m- a& @
    │  │      
    4 d3 T1 M) f4 F& {9 u0 j4 V# f  C( m│  └─第5章组件平台组件详情页面开发4 k( \( ]) a4 _4 o
    │         5-1组件详情获取API开发.mp47 x* f9 U  f% x. l
    │         5-2组件基本信息样式开发.mp4" {1 U+ u8 n! h7 G
    │         5-3组件代码+预览样式开发.mp4
    6 L. x1 }" u1 }' T* A│         5-4组件安装样式和复制命令功能开发.mp4+ b( u' n; f5 F# V1 W
    │         5-5组件多预览文件上传工作.mp4
    6 j1 t5 o: T0 R. a2 b9 l& f│         5-6(本周难点)组件多预览文件上传开发.mp4
    $ J% ?3 E1 S5 x) F! J. B│          ! h3 D. |6 F3 L) [
    ├─34项目单元测试用例设计和开发
    # Y  m. Z3 ], d7 ?. W0 b│  ├─第2章Mocha框架快速入门
    0 [( _' W1 v4 u4 U│  │      1-1本周整体内容介绍和学习方法.mp4
    ' O9 d: C7 @& N7 J│  │      2-1单元测试基本概念介绍.mp4
    8 X( g! q8 O9 q. b* W│  │      2-2mocha基本运行流程讲解(1).mp4  ]2 W9 Q- {8 G4 F( Q7 u' N. e2 R3 j
    │  │      2-2mocha基本运行流程讲解.mp4
    3 F0 y2 I9 {  _# r3 Y! T$ L: f│  │      2-4mocha异步测试方法+nodeevenloop详细讲解.mp4. Z( T5 r6 u% k
    │  │      2-5断言库should.js快速入门.mp47 Y5 w' _' R3 g' m; W9 z( n
    │  │      2-6async函数测试方法+钩子函数介绍.mp4) c3 J) X+ F8 G4 ~% @
    │  │      2-7独家测试和包容性测试介绍.mp4
    6 D! _  v* ~" f3 P2 h4 f│  │      
      X4 b) L; G: [7 B5 f4 k% k│  ├─第3章Package类用例设计和开发6 `) D3 ]! i2 m. _% ^
    │  │      3-1Package对象实例化测试用例设计和开发.mp4, ~4 f1 e: s' `; h
    │  │      3-2Package对象prepare方法测试.mp4+ n1 ?% M- [+ R% N
    │  │      3-3Package对象核心方法测试.mp4' c  x( O. k3 r' g- I
    │  │      1 d6 i& `# A" ?) F
    │  └─第4章Git类用例设计和开发7 _( @( P/ h) E8 B! w, E* ?
    │          4-1Gitee类实例化测试.mp4. |: o9 E+ u3 d$ x
    │          4-2Gitee获取用户和仓库信息API测试.mp4
    9 D+ d9 [9 a/ S4 M. ]│          4-4Git类测试开发.mp4  t9 q3 S: U# T
    │         
    ) @7 h1 z$ T; |& G2 w: s2 W│      
    5 h3 U. d( {' k* p0 [└─代码.zip% a$ o8 I. }7 Z- s9 P, ?& O( [6 V9 Q
    2 g  ]" F0 H$ l

    + h( q1 [8 t0 }. p& f下载地址:align&*(29239 n( V8 c3 l# [& j) o
    游客,如果您要查看本帖隐藏内容请回复
  • TA的每日心情
    郁闷
    10 小时前
  • 签到天数: 133 天

    [LV.7]超级吧粉

    发表于 2023-6-20 06:17:58 | 显示全部楼层
    2023年6月20日06:17:29
  • TA的每日心情

    7 天前
  • 签到天数: 159 天

    [LV.7]超级吧粉

    发表于 2023-6-20 07:11:57 | 显示全部楼层
    6666666666666666666666
  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 1759 天

    [LV.Master]伴吧终老

    发表于 2023-6-20 07:38:40 | 显示全部楼层
    多谢分享
  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 270 天

    [LV.8]狂热吧粉

    发表于 2023-6-20 07:45:00 | 显示全部楼层
    666
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 497 天

    [LV.9]铁杆吧粉

    发表于 2023-6-20 07:47:18 | 显示全部楼层
    666
  • TA的每日心情

    2023-6-5 07:50
  • 签到天数: 415 天

    [LV.9]铁杆吧粉

    发表于 2023-6-20 07:56:45 | 显示全部楼层
    66666
  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 186 天

    [LV.7]超级吧粉

    发表于 2023-6-20 08:31:06 | 显示全部楼层
    666666666666
  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 607 天

    [LV.9]铁杆吧粉

    发表于 2023-6-20 10:08:15 | 显示全部楼层
    前端架构师34周 91G 2021版
  • TA的每日心情

    5 天前
  • 签到天数: 268 天

    [LV.8]狂热吧粉

    发表于 2023-6-20 13:21:38 | 显示全部楼层
    打算
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则