如何在Meteor中集成Metronics前端模板

时间:2014-06-18 07:21:07

标签: html meteor meteor-blaze

我是Meteor的新手。我从Metronics前端模板中获得了一小段代码:

<!DOCTYPE html>
<!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]-->
<!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]-->
<!--[if !IE]><!-->
<html lang="en" class="no-js">
<!--<![endif]-->

我知道Meteor会自行插入一些HTML代码并禁止手动执行。有人可以指导我如何在模板中插入上述代码。

2 个答案:

答案 0 :(得分:0)

更新

检查Inject-Initial包,它允许您在发送之前修改HTML。

HACKY方式:

Meteor不支持自定义文档类型或HTML注释。

但是,如果您可以将 WebApp 包替换为包含已更新的样板文件的分叉版本,并使用html注释,那么这应该可行,但它会被破解

WebApp包

boilerplate.html

<html {{htmlAttributes}}>
  <head>
    ...
  </head>
<body>
  {{{body}}}
</body>
</html>

来源:https://github.com/meteor/meteor/blob/devel/packages/webapp/boilerplate.html

webapp_server.js (第490行至第497行):

    var boilerplateData = _.extend({htmlAttributes: htmlAttributes},
                                   boilerplateBaseData);
    var boilerplateInstance = boilerplateTemplate.extend({
      data: boilerplateData
    });
    var boilerplateHtmlJs = boilerplateInstance.render();
    boilerplateByAttributes[attributeKey] = "<!DOCTYPE html>\n" +
          HTML.toHTML(boilerplateHtmlJs, boilerplateInstance);

来源:https://github.com/meteor/meteor/blob/devel/packages/webapp/webapp_server.js

答案 1 :(得分:0)

将以下内容添加到&lt; head&gt;在流星中:

<head>
    <!--[if IE 8]> <meta name="ie-8"> <![endif]-->
    <!--[if IE 9]> <meta name="ie-9"> <![endif]-->
    <!--[if IE]> <meta name="is-ie"> <![endif]-->
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width, initial-scale=1" name="viewport"/>
    <meta content="" name="MyApp"/>
    <meta content="" name="MyCompany"/>
    <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all" rel="stylesheet" type="text/css"/>
</head>

您可以创建新的html文件或将上述内容添加到现有模板中。

接下来,将以下内容添加到模板帮助程序coffee / js文件中:

Template.hello.rendered = ->
  $('html').attr 'lang', 'en'
  if $('meta[name=\'ie-8\']').length
    $('html').attr 'class', 'ie8'
    $('head').append '<meta content="" name="ie8"/>'
  if $('meta[name=\'ie-9\']').length
    $('html').attr 'class', 'ie9'
    $('head').append '<meta content="" name="ie9"/>'
  if $('meta[name=\'is-ie\']').length
    $('head').append '<meta content="" name="is-ie"/>'
  else
    $('head').append '<meta content="" name="not-ie"/>'
  return

在渲染模板后,这将搜索meta:name并做出相应的反应。您可以向html添加属性,或将内容添加到头部。

根据流星文件:

http://docs.meteor.com/#/full/structuringyourapp

  

Meteor应用程序中的HTML文件与服务器端框架的处理方式略有不同。 Meteor会扫描目录中的所有HTML文件,以获取三个顶级元素:&lt; head&gt;,&lt; body&gt;和&lt; template&gt;。头部和主体部分分别连接成一个头部和主体,在初始页面加载时传送给客户端。

以上结果将是:

<head>
    <link rel="stylesheet" type="text/css" class="__meteor-css__" href="/6176b8b829c9df965e358642efa91f9fb2d91b51.css">
    <script type="text/javascript">__meteor_runtime_config__ = {"meteorRelease":"METEOR@1.0.3.1","ROOT_URL":"http://localhost:3000/","ROOT_URL_PATH_PREFIX":"","appId":"reg9gp1tr7xjw1ia7u0e","autoupdateVersion":"a00b33a70d60e865c9f096b9c3e8a9f5386ed45c","autoupdateVersionRefreshable":"79d3c80e832e7e5b97b84f80da47f9571b97f8a7","autoupdateVersionCordova":"none"};</script>
    <script type="text/javascript" src="/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18"></script>
    ...
    <title>Meteor App</title>
    <!--[if IE 8]> <meta name="ie-8"> <![endif]-->
    <!--[if IE 9]> <meta name="ie-9"> <![endif]-->
    <!--[if IE]> <meta name="is-ie"> <![endif]-->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width, initial-scale=1" name="viewport">
    <meta content="" name="Agent Online">
    <meta content="" name="Online Travel Services AG">
    <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&amp;subset=all" rel="stylesheet" type="text/css">
    <meta content="" name="not-ie">
</head>