{"version":1,"pages":[{"id":"-LquCmWLFxcFxoApht2E","title":"README","pathname":"/tdd-frontend","siteSpaceId":"sitesp_KOATE","description":""},{"id":"-LquNO7bBs1IsBnB1mBq","title":"总-课程目标","pathname":"/tdd-frontend/01-goal","siteSpaceId":"sitesp_KOATE","description":""},{"id":"-LquNO7cwlAFjBYVlGMs","title":"总-课程安排","pathname":"/tdd-frontend/02-course","siteSpaceId":"sitesp_KOATE","description":""},{"id":"-M0CGY8KN-tUu1H3IhEp","title":"第一题：FizzBuzz 数字游戏","pathname":"/tdd-frontend/coding/00-project-fizzbuzz","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"}]},{"id":"-M1kEMpKS7RjNvqwKKWL","title":"什么是 FizzBuzz？","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/01-what-is-fizzbuzz","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpLAy0nxkt013Li","title":"任务 0：练功前的热身","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/02-warm-up-before-tdd","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpMQj0G5C-yZHSi","title":"FizzBuzz 项目剖析","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/03-project-analysis","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpNNURw9R6CEOtz","title":"任务 1：TDD 初体验","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/04-initial-practise-tdd-cycle","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpOCNL-A9AZa-lK","title":"任务 2：先利其器","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/05-improve-your-toolkit","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpP2-LRzxrVlSzQ","title":"任务 3：再撸一遍","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/06-practice-fizzbuzz-again","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpQdUrOG9N5kXzp","title":"FizzBuzz 项目总结","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/07-project-summary","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpR13NTt40hrz-N","title":"附录 1：Jest 测试基础及要点","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/08-appendix-jest-testing-basic","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-M1kEMpSfRjnnV8q1y8S","title":"附录 2：Testing Library 组件测试基础","pathname":"/tdd-frontend/coding/00-project-fizzbuzz/09-appendix-testing-library-basic","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第一题：FizzBuzz 数字游戏"}]},{"id":"-LuBZYptNGC1YmtoZzlF","title":"第二题：MarsRover 火星车","pathname":"/tdd-frontend/coding/01-marsrover","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"}]},{"id":"-Lr4m9eXvwpuZOA9bhI6","title":"任务 1：Tasking 任务分解","pathname":"/tdd-frontend/coding/01-marsrover/02-tasking","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-LuBZYpyhS2BGamDsCVP","title":"火星车实战","pathname":"/tdd-frontend/coding/01-marsrover/06-what-is-marsrover","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-LuBZYpzdd4QEebzIyLb","title":"火星车 Tasking 任务分解","pathname":"/tdd-frontend/coding/01-marsrover/07-marsrover-tasking","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-LuBZYq-LYzG9rQUVgTF","title":"任务 2：MarsRover 实战演练","pathname":"/tdd-frontend/coding/01-marsrover/08-marsrover-kickoff","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-LsHc4aST3UFXEHIgDc2","title":"MarsRover Coding 演示","pathname":"/tdd-frontend/coding/01-marsrover/09-marsrover-showcase","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-Lv9yl-dyKl8f7iJqli8","title":"任务 3：MarsRover 练习","pathname":"/tdd-frontend/coding/01-marsrover/10-practice-marsrover-again","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-LuBZYq2etsFMLVygoSA","title":"MarsRover 项目总结","pathname":"/tdd-frontend/coding/01-marsrover/11-summary","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第二题：MarsRover 火星车"}]},{"id":"-M0DoaKNjHwub9X74p2w","title":"第三题：CommentBox 留言板","pathname":"/tdd-frontend/coding/00-project-commentbox","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"}]},{"id":"-M4J8zQL4We6cSKAjwqa","title":"CommentBox 项目剖析","pathname":"/tdd-frontend/coding/00-project-commentbox/01-project-analysis","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第三题：CommentBox 留言板"}]},{"id":"-M1kEMpfYRQgq8wqwD0q","title":"任务 1：Cypress E2E 测试","pathname":"/tdd-frontend/coding/00-project-commentbox/02-simplify-e2e-testing-by-cypress","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第三题：CommentBox 留言板"}]},{"id":"-M1kEMpgW7LL0fUxBbN8","title":"任务 2：测试驱动组件单元接口","pathname":"/tdd-frontend/coding/00-project-commentbox/03-test-driven-component-interaction-and-props","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第三题：CommentBox 留言板"}]},{"id":"-M1kEMphwZiAxExvaITd","title":"任务 3：组件级别的快速反馈","pathname":"/tdd-frontend/coding/00-project-commentbox/04-quick-feedback-of-components-from-stroybook","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第三题：CommentBox 留言板"}]},{"id":"-M1kEMpieK3Koc85Kji5","title":"任务 4：由外到内的前端 TDD","pathname":"/tdd-frontend/coding/00-project-commentbox/05-outside-in-global-tdd-cycle","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第三题：CommentBox 留言板"}]},{"id":"-M1kEMpjABDtBK_ItPFe","title":"CommentBox 项目总结","pathname":"/tdd-frontend/coding/00-project-commentbox/06-project-summary","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第三题：CommentBox 留言板"}]},{"id":"-M0hXb_eXQG6x4YJTjlu","title":"第四题：Bookshelf 魔法书架","pathname":"/tdd-frontend/coding/00-project-bookshelf","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"}]},{"id":"-M4J8zQSGFH0sdpq5lok","title":"Bookshelf 项目剖析","pathname":"/tdd-frontend/coding/00-project-bookshelf/01-project-analysis","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5gGxUU8VU1V6-o","title":"任务 1：练习 API 契约测试","pathname":"/tdd-frontend/coding/00-project-bookshelf/02-api-contract-practice-and-mock","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5hr3VwUwEJ6v0R","title":"任务 2：组件化与数据流管理","pathname":"/tdd-frontend/coding/00-project-bookshelf/03-components-with-data-flow","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5ibWY8vX91pmiS","title":"任务 3：Redux 数据流测试","pathname":"/tdd-frontend/coding/00-project-bookshelf/04-testing-redux-data-flow","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5jk66C2On9f4fi","title":"任务 4：简化 Redux 项目结构","pathname":"/tdd-frontend/coding/00-project-bookshelf/05-simplify-redux-structure","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4Ksvhp0pABvuKCPxcG","title":"Bookshelf 项目总结","pathname":"/tdd-frontend/coding/00-project-bookshelf/09-project-summary","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5kCSe1njIF-cVk","title":"附录 1：什么才是真正的 RESTful 架构？","pathname":"/tdd-frontend/coding/00-project-bookshelf/06-appendix-what-is-really-rest","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5l2PVNsj_z5LJV","title":"附录 2：【译】Redux 和 命令模式","pathname":"/tdd-frontend/coding/00-project-bookshelf/07-appendix-redux-and-the-command-pattern","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4KQn5mIAN4QwTCjjOo","title":"附录 3：【译】什么是 Flux 架构？（兼谈 DDD 和 CQRS）","pathname":"/tdd-frontend/coding/00-project-bookshelf/08-appendix-what-the-flux-on-flux-ddd-and-cqrs","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第四题：Bookshelf 魔法书架"}]},{"id":"-M4gcoAv-jmJhWu_gRUu","title":"第五题：ShoppingCart 购物车","pathname":"/tdd-frontend/coding/01-project-shoppingcart","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"}]},{"id":"-M4gcoAwJPeIfBpZYK36","title":"ShoppingCart 项目剖析","pathname":"/tdd-frontend/coding/01-project-shoppingcart/02-project-analysis","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]},{"id":"-M4KzRM58NAH4uYZ43SF","title":"React 哲学：Thinking in React","pathname":"/tdd-frontend/coding/01-project-shoppingcart/03-thinking-in-react","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]},{"id":"-M4lC-9RwvJNNAPMtrpP","title":"任务 1：任务分解 - 驱动组件树拆分","pathname":"/tdd-frontend/coding/01-project-shoppingcart/04-outside-in-tasking-components-tree","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]},{"id":"-M4lC-9S429pxsnBXpVe","title":"任务 2：综合应用 - 驱动组件接口设计","pathname":"/tdd-frontend/coding/01-project-shoppingcart/05-unit-test-driven-component-development","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]},{"id":"-M4lC-9Td8ZxcyZbUnWW","title":"任务 3：综合应用 - 驱动数据流管理","pathname":"/tdd-frontend/coding/01-project-shoppingcart/06-driven-components-interact-with-state-store","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]},{"id":"-M4lC-9U3UO2ev_3e7qH","title":"任务 4：综合应用 - 驱动组件样式开发","pathname":"/tdd-frontend/coding/01-project-shoppingcart/07-driven-components-styling-development","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]},{"id":"-M4KzRMAWtMwuwLLp3yA","title":"ShoppingCart 项目总结","pathname":"/tdd-frontend/coding/01-project-shoppingcart/08-shoppingcart-summary","siteSpaceId":"sitesp_KOATE","description":"","breadcrumbs":[{"label":"Coding"},{"label":"第五题：ShoppingCart 购物车"}]}]}