2013-10-18 27 views
2

当有人导航到我的Meteor应用程序时,我希望主页首先被加载,呈现和显示。然后,一旦完成(用户可以开始点击),我的应用程序的所有页面的所有其他资源和数据库都将在后台加载(缓存)到LocalStorage(尽可能适合),以便所有我的应用的页面,图像等将在导航时立即出现。流星:在后台加载所有页面资源

在Meteor中做这件事的最简单的惯例是什么?有包吗?

其次,如何指出我想在后台加载队列中拥有最高优先级的资源?例如,我如何确保“启动页面”及其图像马上显示?

回答

2

流星应用程序是由设计,单页网站。如果您查看源上部署的应用程序流星,例如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应用程序中使用router package,并注意首页中的所有链接都指向Meteor应用程序中定义的路线。您还可以通过从CDN或Apache/Nginx服务器分离出并加载Meteor图像,其他CSS,外部JavaScript(如图书馆)不直接需要的任何资源,并将这些资源预先加载到您的非Meteor-托管的主页。

终于看看meteor-external-file-loader。它专门用于在Meteor应用程序中实时加载外部JavaScript库,例如仅在您实际显示地图的页面上加载Google地图。我不确定它是否可以用来加载像应用程序一样的核心应用程序的JavaScript,但是如果你的应用程序太大以至于无论如何都在考虑将其分开,那么推测可能有代码的一部分可以分开插入到您自己的自定义JavaScript库中,然后可以使用meteor-external-file-loader从Apache/Nginx服务器动态加载。