Skip to content

Latest commit

 

History

History
28 lines (21 loc) · 1.58 KB

milestone.md

File metadata and controls

28 lines (21 loc) · 1.58 KB

Milestone

v-on

本来Go-vue-ssr的重心是模板, 不处理Js部分.

但也应该提供一个方案来让Js和模板结合.

对这段逻辑的期望:

  • 只是Demo: 没有虚拟节点之后所有的v-on实现都是不有优雅的, 所以我只能提供一个可行 而不是最完美的方案, 同时也不打算将它纳入Go-vue-ssr项目.
  • 代码量少: 方便大家理解与更新.

预想:

  • 因为不是完整的组件化, 所以所有的js变量就不能存放在每个组件中, 而是会被存放在一起, 这也就表示不能有重复的变量/方法名.
  • 如何将全局方法和一个节点一一对应? 当使用v-on:的时候, 会在dom上生成一个唯一eventId, 在js中使用eventId就能确认dom与方法的关联.
  • 在方法中不能使用this, 所有的依赖变量都应该只从入参而来.
  • 如果将入参放在dom上可能会比较丑, 所有可以和自定义指令v-set/v-get类似, 将所有函数的入参收集起来统一放在一段js代码中.

实际上这部分功能完全可以通过自定义指令来实现, 我并不太想将此功能添加到go-vue-ssr中.

异步组件

异步组件允许在组件或者节点中发起异步请求, 并且异步任务可以设置并发数.

实现方式:

  • 使用链表来遍历组件(节点)树, 而不是使用生成递归代码的方式来渲染组件. 因为递归代码不支持被中断(异步).
  • 引入类似React Suspense组件来标记子组件是异步的.
  • 异步可以嵌套, 但注意并发数量限制可能会导致死锁
  • 异步不光支持异步请求, 而是将整个子组件都异步渲染.