**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [Ember初探--Core Concept](#ember%E5%88%9D%E6%8E%A2--core-concept) - [core concept](#core-concept) - [initial app](#initial-app) - [router & route handler](#router--route-handler) - [model & template](#model--template) - [component](#component) - [ember command line](#ember-command-line) ## [Ember](http://emberjs.com/)初探--Core Concept > 自称是:A framework for creating ambitious web applications,为效率而生, > 默认使用[`Handlebars`](http://handlebarsjs.com/)模板引擎 依赖: - node - npm - bower -- 依赖管理工具 - wtachman(optional) - phantomjs(optional) ```bash # install $ npm install -g ember-cli ``` ### [core concept](https://guides.emberjs.com/v2.7.0/getting-started/core-concepts/) 一张图看明白ember架构:  #### initial app ```bash # 新建应用 $ ember new app-name ``` 会自动帮你加入bower/npm module依赖,建立`bower.json`和`package.json`,init git并配置`.gitignore`,增加`jshint`、`watchman`甚至是`.travis.yml` 生成文件结构: ```bash |--app (models, components, routes, templates, styles...) |--bower_components (ember-cli dependency) |--config (environment.js) |--dist (build output) |--node_modules (node dependency) |--public (assets such as images/fonts) |--tests (Automated tests) |--tmp (Ember CLI temporary files) |--vendor (third-party front-end dependencies) bower.json ember-cli-build.js package.json README.md testem.js ``` #### router & route handler `app/router.js`文件根据不同路由,选择`app/routes/`里的不同文件(`route handler`)。每个`route handler`文件的基本构成: ```javascript // app/routes/XXX.js import Ember from 'ember'; export default Ember.Route.extend({ }); ``` 例如,我们设置的路由为`/example`,那么在访问这个路径的时候,ember会在`app/router.js`查找`examlpe`是否注册: ```javascript Router.map(function() { this.route('example'); }); ``` 接着,去`app/routes/`文件夹下寻找对应的`route handler`。我们可以在`route handler`文件里通过modal查询并返回数据: ```javascript // app/routes/example.js import Ember from 'ember'; // hard code export default Ember.Route.extend({ model() { return ['this is example1', 'this is example2', 'this is example3']; } }); ``` #### model & template 如果要使用model进行数据库查询,则需要创建model文件并定义数据结构: ```bash $ ember g model example # create app/models/example.js # create tests/unit/models/example-test.js ``` ```javascript // app/models/example.js import DS from 'ember-data'; export default DS.Model.extend({ // define your data // for example, examples: DS.attr() }); ``` ```javascript // app/routes/example.js import Ember from 'ember'; export default Ember.Route.extend({ model() { // 它会发送一个GET请求到/examples // 具体方式之后再说 return this.get('store').findAll('example'); } }); ``` 之后,route在`app/templates/`里寻找并渲染对应的模板: ```html