0

我正在探索 Ember.js 演示应用程序之一,我发现除了通常的 VERSION 和 rootElement 之外,还有许多参数被传递给 Ember.Application.create()。该演示使用我理解为 AMD 的 require.js。

Ember.js 在其 v1.0 中是否不会根据需要自行加载 javascript?如果是这样,我不完全理解为什么需要使用 require.js..

其次,如果 require.js 有一个用例,那么将控制器名称和视图名称等参数传递给 Ember.Application.create() 以引导应用程序有什么用。

// Define libraries
require.config({
    paths:{
        jquery:'lib/jquery-1.8.0.min',
        handlebars:'lib/handlebars',
        ember:'lib/ember_1.0pre',
        ember_data:'lib/ember-data5',
        text:'lib/require/text',
        md5:'lib/md5',
        //domready:'lib/require/domReady',
        spin:'lib/spin'
    },

    shim:{
        'ember':{
            deps:[ 'jquery', 'handlebars'],
            exports:'Ember'
        },
        'ember_data':{
            deps:[ 'ember'],
            exports:'DS'
        }
    },

      waitSeconds:15,
        urlArgs:"bust=" + (new Date()).getTime()  //cancel caching for network requests,for development.
});

// Define application
define('application', [
    'routes/app_router',
    'controllers/application_controller',
    'controllers/contacts_controller',
    'controllers/contact_controller',
    'controllers/edit_contact_controller',
    'controllers/login_controller',
    'views/application_view',
    'views/contact_in_list_view',
    'views/contacts_view',
    'views/contact_view',
    'views/edit_contact_view',
    'views/login_view',
    'models/contact',
    'jquery',
    'handlebars',
    'ember',
    'ember_data',
   // 'domready',
    'spin'

], function (Router,
                       ApplicationController,
                       ContactsController,
                        ContactController,
                        EditContactController,
                        LoginController,
                        ApplicationView,
                        Contact_In_List_View,
                        ContactsView,
                        ContactView,
                        EditContactView,
                        LoginView,
                        Contact       )
    {
        return  Ember.Application.create({
            VERSION: '1.0.0',
            rootElement:'#main',
            // Load router
            Router:Router,
            //Load Controllers
            ApplicationController:ApplicationController,
            ContactsController:ContactsController,
            ContactController:ContactController,
            EditContactController:EditContactController,
            LoginController:LoginController,
            //Load associated Views
            ApplicationView:ApplicationView,
            Contact_In_List_View:Contact_In_List_View,
            ContactsView:ContactsView,
            ContactView:ContactView,
            EditContactView:EditContactView,
            LoginView:LoginView,
            //Load Contact Model
            Contact:Contact,
            //Persistence Layer,using default RESTAdapter in ember-data.js.
            store:DS.Store.create({
                revision:5,
                adapter:DS.RESTAdapter.create({
                    bulkCommit:false,
                    serializer:DS.Serializer.create({
                        primaryKey:function (type) {
                        return type.pk;
                        }
                    }),
                    mappings:{
                        contacts:Contact
                    },
                    namespace:'api'    //you should change the first segment according to the  application's  folder path on the server.
                })
            }),
            ready:function () {
            }
        });
    }
);

前 - application_controller.js

define('controllers/application_controller',
    ['ember' ],
    function () {
        return Ember.Controller.extend({
            loggedin:false
        });
    }
);
4

0 回答 0