生命周期
Garfish
应用的生命周期可以归结为:加载、渲染、销毁 三个阶段,因此 Garfish
应用的生命周期也是围绕着这三个阶段而展开的。应用的加载主要是通过 Garfish.loadApp,通过 loadApp
API 会自动创建应用的实例,可以通过应用实例上的 mount
和 show
方法对应用进行渲染,通过 unmount
和 hide
方法对应用进行销毁,用户在实际使用的过程中通过 Garfish.run会发现当路由发生变化时符合加载条件的应用会自动加载渲染,实际上是 Garfish Router Plugin
通过监听路由变化来触发 loadApp
和 mount
自动完成应用的加载、渲染、销毁。
mount
app.mount 做了哪些事情
- 创建
app
容器并添加到文档流上 - 编译子应用的代码
- 拿到子应用的
provider
- 调用
app.options.beforeMount
钩子 - 调用
provider.render
- 将
app.display
和app.mounted
设置为true
- 将
app
set 到Garfish.activeApps
中 - 调用
app.options.afterMount
钩子 - 如果渲染失败,
app.mount
会返回false
,否则渲染成功会返回true
,你可以根据返回值做对应的处理。
unmount
app.unmount 做了哪些事件
- 调用
app.options.beforeUnmount
钩子 - 调用
provider.destroy
- 清除编译的副作用
- 将
app
的容器从文档流上移除 - 将
app.display
和app.mounted
设置为false
- 在
Garfish.activeApps
中移除当前的app
实例 - 调用
app.options.afterUnmount
钩子 - 同上,可以根据返回值来判断是否卸载成功。
show
app.show 做了哪些事件
- 将
app
的容器添加到文档流上 - 调用
provider.render
- 将
app.display
设置为true
- 同上,可以根据返回值来判断是否渲染成功。
hide
app.hide 做了哪些事件
- 调用
provider.destroy
- 将
app
的容器从文档流上移除 - 将
app.display
设置为false
- 同上,可以根据返回值来判断是否隐藏成功。