2013-10-18 29 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服務器動態加載。