0

我是流星的新手。我有以下来自 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 代码,禁止手动操作。有人可以指导我如何在我的模板中插入上述代码。

4

2 回答 2

0

更新

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

HACKY方式:

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

但是,如果您可以将WebApp包替换为包含更新的带有 html 注释的boilerplate.html的分叉版本,那么这应该可以工作,但它会被破解。

网络应用程序包

样板.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

于 2014-06-18T09:46:21.320 回答
0

将以下内容添加到流星中的 <head> 中:

<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 文件或将以上内容添加到现有模板中。

接下来将以下内容添加到您的模板助手咖啡/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 文件以查找三个顶级元素:<head>、<body> 和 <template>。头部和身体部分分别连接成一个单独的头部和身体,在初始页面加载时传输给客户端。

上述结果将是:

<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>
于 2015-02-03T10:47:00.627 回答