我正在使用Meteor 1.5,FlowRouter和Blaze。
我一直在开发一个需要离线支持的应用程序,不幸的是它还有几个(大)应用程序区域,只有一小部分用户可用,以避免膨胀最初的JS下载内容大多数用户都不需要,我在FlowRouter.route({action})
级别使用动态导入。
对于离线模式(除了处理数据等)我还使用服务工作者来缓存JS,CSS和HTML。不幸的是,因为动态导入在websocket上工作,所以在加载它们时不可能对它们进行缓存。
幸运的是,用户必须通知服务器他们离线工作的意图(因此可以下载相关的数据和文件,视频等),这样就有机会在客户端离线之前加载这些动态导入。 / p>
我有哪些缓存动态导入的选项?到目前为止我所考虑的事情:
编写一个包含静态加载的所有动态导入的简单包,并在{lazy: true}
中定义package.js
。
lazy: true
表示该套餐实际上并非通过网址提供,它似乎只能作为动态导入使用。写一个服务器端" fetcher"将包名称作为参数并提供文件系统中的内容
使用browserify(或类似的东西)手动生成/public
中的静态js包,当客户端表明他们意图离线时可以下载
之前有没有人试过这个,我知道meteor并没有正式支持服务工作者,但据我所知,除了动态导入外,它对他们起到了很好的作用