当有人导航到我的 Meteor 应用程序时,我希望首先加载、渲染和显示主页。然后一旦完成(用户可以开始四处点击),我的应用程序所有页面的所有其他资源和数据库都会在后台加载(缓存)到 LocalStorage(尽可能多),这样所有我的应用程序的页面、图像等将在导航到时立即出现。
在 Meteor 中执行此操作的简单约定是什么?有包吗?
其次,如何在后台加载队列中指明我希望哪些资源具有最高优先级?例如,如何确保“启动页面”及其图像立即显示?
Meteor 应用程序在设计上是单页网站。如果您在已部署的 Meteor 应用程序上查看源代码,例如http://docs.meteor.com,则<head>
始终看起来像这样:
<link rel="stylesheet" href="/5a6084946b1bc47e30e45c05bdecb13536a2dc64.css">
<script type="text/javascript">
__meteor_runtime_config__ = {"meteorRelease":"galaxy-follower-5","ROOT_URL":
"http://docs.meteor.com","ROOT_URL_PATH_PREFIX":"","serverId":
"964b34dc-ffbb-b860-a313-9eedca254d83","DDP_DEFAULT_CONNECTION_URL":
"ddp+sockjs://ddp--****-docs.meteor.com/sockjs"};
</script>
<script type="text/javascript" src="/3353c2b059d42f3fe42e0d5eba87882b955d7cbe.js">
</script>
该 .css 文件是您应用程序的所有CSS,连接到一个文件中;那个 .js 文件是你应用的所有JavaScript,包括你所有的模板,连接到一个文件中。这就是 Meteor 的设计方式,如果不深入研究 Meteor 的源代码并重写一些主要块,就无法改变它。
我对您的唯一建议是让您的主页由其他东西提供服务,例如 Apache 或 Nginx 服务器,它们确实只提供您所追求的最低限度的服务;并获取上述 .css 和 .js 文件并预加载它们。在 Meteor 应用程序中使用路由器包,并注意主页中的所有链接都指向 Meteor 应用程序中定义的路由。您还可以通过从 CDN 或 Apache/Nginx 服务器分离并加载 Meteor 不直接需要的任何资源(图像、附加 CSS、外部 JavaScript 类库)并让您的非 Meteor- 预加载来加快速度。托管主页。
最后看一下meteor-external-file-loader。它设计用于在 Meteor 应用程序中动态加载外部 JavaScript 库,例如仅在您实际显示地图的页面上加载 Google 地图。我不确定它是否可用于加载作为模板之类的应用程序核心的 JavaScript,但如果您的应用程序太大以至于您正在考虑将其拆分,那么大概有部分代码可以分开到像你自己的自定义 JavaScript 库这样的包中,然后可以使用 meteor-external-file-loader 从你的 Apache/Nginx 服务器动态加载。