Meteor:向app.html添加元素

时间:2013-11-24 17:28:45

标签: javascript meteor preloader

流星应用程序中app.html的源代码如下所示:

<!DOCTYPE html>
    <html>
    <head>
      <link rel="stylesheet" href="/846a8d9499cc559cd36226c07803f069a9b314a4.css">
      <script type="text/javascript" src="/bd418141a43a911de5fcb0fc9eef1599abd72874.js"></script>
    <title>application title</title>
    </head>
    <body>
    </body>
    </html>

这很简单。 (你可以在头部添加元数据。)

但是,如果我想为应用添加加载器怎么办?

我使用了一些库,我的主要js可能会重量超过一个月。我在加载时无法显示任何图像。

更简单的方法是编写几行经典内联html。但是当我在html中写一些内容时,它会包含在我的模板中。

您如何更改app.html?

1 个答案:

答案 0 :(得分:0)

简短的回答:你做不到。据我所知,Meteor将始终发送一个空的<body>标签并通过模板填写。

如果您有如此多的代码以使连接的JavaScript非常繁重,您可以将其中的部分内容分开。有关如何操作的一些技巧,请参阅this question。我个人尝试从CDN加载我正在使用的“开箱即用”的库,比如Bootstrap(不幸的是不是jQuery的选项)。要从CDN加载,只需在其中一个HTML文件中包含<head>块,并链接到正常的CDN托管库文件,并将它们从项目中删除。另一种选择是使用jQuery的$.getScript()仅在需要的页面上按需加载特定脚本。

但是,这只是你的连接的JavaScript文件的负载,它仍然没有真正回答你的问题,即立即将一些HTML发送到客户端。要完成我唯一知道的方法是在Meteor前面安装一些其他Web服务器。例如,有一个Apache或Nginx服务器在端口80上侦听,它发送一个包含初始内容的简单HTML文件,并且还加载两个Meteor生成的连接的.js和.css文件。 Meteor会在加载时替换<body>的内容,或者你需要编写一些JavaScript才能将其“切换”到Meteor,以便Meteor可以开始在那里渲染模板。不幸的是,我怀疑切换会非常顺利。或者,如果您的初始页面更像是一个启动页面,例如一个简单的登录表单,它本身可以由Apache / Nginx提供服务,然后在提交时用户移动到Meteor-served世界。当用户填写表格时,连接的.css文件(如果不是.css和.js文件,或者.css文件和任何CDN服务或非连接的.js文件)可以在后台下载并且得到缓存。说实话虽然我不确定它是否值得所有这些努力,但它增加了很多复杂性,可能只是非常轻微的速度提升(即便如此,仅在主页的初始加载时)。