content-for 'head' Ember-cli

Posted

技术标签:

【中文标题】content-for \'head\' Ember-cli【英文标题】:content-for 'head' Ember-clicontent-for 'head' Ember-cli 【发布时间】:2014-11-30 08:48:00 【问题描述】:

过去 1 个月我一直在使用 Yeoman ember generator,现在,我想试试 ember-cli。

我运行生成器并启动应用程序,一切正常。

ember new my-new-app
ember server

但我想知道如何

content-for 'head'

在 app/index.html 中有效吗?

当查看来自http://www.ember-cli.com/#tutorials 的其他示例时,他们都没有使用这个特殊的助手?是因为他们使用的是旧版本的 ember-cli 吗?他们为什么不使用这个 content-for 助手?

我很确定 ember.js 默认没有这个 content-for 助手,所以我猜 ember-cli 是在某个地方写的?它在哪里,有什么用?

另外,当我检查 my-new-app 页面的元素时,'Welcome to Ember.js' 的 div 标签出现在 body 标签而不是 head 标签?这怎么可能? 心碎

(在 app/index.html 中,content-for 'head' 放在 head 标签内)

【问题讨论】:

【参考方案1】:

最近基于this discussion添加到ember-cli。

这里是来自commit的相关代码:

EmberApp.prototype.contentFor = function(config, match, type) 
  var content = [];

  if (type === 'head') 
    content.push(calculateBaseTag(config));

    content.push('<meta name="' + config.modulePrefix + '/config/environment" ' +
                 'content="' + escape(JSON.stringify(config)) + '">');
  

  content = this.project.addons.reduce(function(content, addon) 
    if (addon.contentFor) 
      return content.concat(addon.contentFor(type, config));
    

    return content;
  , content);

  return content.join('\n');
;

【讨论】:

更多上下文见npmjs.org/package/ember-cli-inline-content【参考方案2】:

来自Ember CLI guide:

app/index.html

app/index.html 文件为您的应用程序奠定了基础。 这是基本 DOM 结构布局的地方,title 属性 已设置并且样式表/javascript 包含已完成。此外 这,app/index.html 包括多个钩子 - content-for 'head'content-for 'body' - 可以被插件使用 将内容注入应用程序的headbody。这些钩子 需要保留以使您的应用程序正常运行, 但除非您直接使用 特定的插件。

我实际上是在寻找 Welcome to Ember.js 的来源(显然在 app\templates\application.hbs 中),但首先偶然发现了 content-for 助手。

【讨论】:

以上是关于content-for 'head' Ember-cli的主要内容,如果未能解决你的问题,请参考以下文章

Ember 2,使用诸如 ember-truth-helpers 之类的插件进行表演,而不仅仅是 Ember 默认方式

没有 Ember 数据的 Ember

模拟使用 ember-cli-storybook 中的 ember-ajax 发布和获取数据的 ember 服务的最佳方法是啥?

为啥 ember 计算属性只在 ember 检查器中执行一次?

Ember-Model 入门:Ember.Adapter 子类必须实现 findAll

我怎么知道,哪个 ember 插件版本与 ember-cli 或节点版本兼容