5.1 Components — Introduction
1. HTML被设计的时候,浏览器是一个简单的文件浏览器。开发构建大的Web应用程序需要更多的东西。
2. 不是试图取代HTML,然而,Ember.js拥抱它,然后增加了许多新功能使得构建web应用程序现代化。
3. 目前,您仅限于创建由W3C所提供的标签,W3C正工作在自定义元素规范,这是一个好主意。
4. Ember的组件实现与Web组件规范尽可能的接近。一旦自定义元素在浏览器中广泛可用,你应该可以容易把你的Ember组件迁移到W3C标准并且使它们被其他框架使用。
5. 这对我们如此重要,我们正密切关注标准机构,以确保我们组件的实现匹配Web平台的技术路线。
6.为了强调组件的强大,这里有一个小例子,把一个博客帖子编成一个可重用的blog-post自定义元素,使你可以在应用程序中一遍又一遍的使用。
exapmle:
app/templates/index.hbs
{{#each model as |post|}}
{{#blog-post title=post.title}}
{{post.body}}
{{/blog-post}}
{{/each}}
app/templates/components/blog-post.hbs
<article class="blog-post"> <h1>{{title}}</h1> <p>{{yield}}</p> <p>Edit title: {{input type="text" value=title}}</p> </article>
app/routes/index.js
var posts = [{ title: "Rails is omakase", body: "There are lots of à la carte software environments in this world." }, { title: "Broken Promises", body: "James Coglan wrote a lengthy article about Promises in node.js." }]; export default Ember.Route.extend({ model() { return posts; } });
app/components/blog-post.js
export default Ember.Component.extend({ });