我正在使用 Meteor 1.5、FlowRouter 和 Blaze。
我一直在开发一个需要离线支持的应用程序,不幸的是,它还有几个(大)应用程序区域,这些区域只对一小部分用户可用,以避免大多数用户不会使用内容来膨胀初始 JS 下载需要,我在FlowRouter.route({action})
级别使用动态导入。
对于离线模式(除了处理数据等),我使用服务工作者来缓存 JS、CSS 和 HTML。不幸的是,因为动态导入在 websocket 上工作,所以无法在加载它们时缓存它们。
幸运的是,用户必须通知服务器他们打算离线工作(因此可以下载相关的数据和文件、视频等),这提供了在客户端离线之前加载这些动态导入的机会。
我有哪些缓存动态导入的选项?到目前为止我所考虑的:
编写一个简单的包,其中包含静态加载的所有动态导入,并
{lazy: true}
在package.js
.- 需要大量的重组
- 这
lazy: true
意味着该包实际上不能通过 URL 获得,它似乎只能作为动态导入本身使用。
编写一个服务器端“提取器”,它将包名称作为参数并从文件系统提供内容
- 我不知道客户端包是如何存储在服务器上的,也不知道服务器是否可以访问这些文件。
使用browserify(或类似的东西)手动生成一个静态js包,
/public
当客户端声明他们打算离线时可以下载该包- 它非常手动,并且很容易错过对动态导入的更改。
以前有没有人尝试过,我知道流星并没有正式支持服务人员,但据我所知,除了动态导入之外,它与他们相处得很好