运行时的容器

100 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情

容器是承载了业务逻辑的,除非了传统的小程序容器之外,还可以在传统浏览器与业务代码之间造一层容器,但是这个容器有个问题,即通常情况下,我们无法完全屏蔽业务代码对底层能力的调用,即无法对业务代码形成完全的约束。

但是我们可以借助于这种容器方案达到以下的效果:

  • 统一页面的浏览体验
  • 设置统一的权限
  • 统一的生命周期管理
  • 统一的数据方案
  • 统一的监控机制
  • 统一的错误处理机制
  • 统一的业务流程

无法完全屏蔽业务代码的比较常见的一个问题是路由如何管控,这个可以通过劫持history对象来实现,既可以实现陆游的权限控制,也可以实现访问权限的控制。

运行时的容器通常承载的是特定的业务部分,因为无法覆盖全部的业务内容。但是容器又是承载业务的基础,那容器如何承载业务呢,

我们可以对容器进行分层:

  1. 核心层,负责ui挂载,数据管理,扩展能力管理:如插件或者中间件等
  2. 扩展层:缓存、水印、用户信息、数据埋点、权限等等,要保证基础能力可以扩展
  3. 业务层:业务层如何加载,这是个问题,业务子应用好说,整个加载进来就可以,那么其它的公共部分呢,其它的公共部分,可以通过逻辑代码来实现,形成一套标准流程。
  4. 业务层扩展,可以通过插件机制,对预设的扩展点进行扩展,如果预设的扩展点不够怎么办?我们不可能保证覆盖所有的内容,只能说是覆盖绝大部份内容,可以先对常规的功能进行一个统计,然后设计出可扩展的功能点。