Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EmberJS+;带有新EmberJS路由器的RequireJS入门套件_Javascript_Html_Ember.js_Requirejs_Starter Kits - Fatal编程技术网

Javascript EmberJS+;带有新EmberJS路由器的RequireJS入门套件

Javascript EmberJS+;带有新EmberJS路由器的RequireJS入门套件,javascript,html,ember.js,requirejs,starter-kits,Javascript,Html,Ember.js,Requirejs,Starter Kits,首先,我是EmberJS和RequireJS的初学者,所以请记住,我可能会对一些概念有点迷茫 问题就在这里。我正在尝试使用RequireJS作为依赖项管理器开始使用EmberJS。我已经找到了一些入门工具包,但它们都使用了EmberJS的旧路由器,所以它永远不会与更新的包一起工作。(它使用旧语法定义路由) 我当前的应用程序层次结构是 My index.html包含 我不应该说它失败了,更重要的是它没有使用正确的格式来声明路由。 虽然标准解决方案是使用诸如ember app kit或embe

首先,我是EmberJS和RequireJS的初学者,所以请记住,我可能会对一些概念有点迷茫

问题就在这里。我正在尝试使用RequireJS作为依赖项管理器开始使用EmberJS。我已经找到了一些入门工具包,但它们都使用了EmberJS的旧路由器,所以它永远不会与更新的包一起工作。(它使用旧语法定义路由)

我当前的应用程序层次结构是

My index.html包含

我不应该说它失败了,更重要的是它没有使用正确的格式来声明路由。


虽然标准解决方案是使用诸如ember app kit或ember cli之类的工具,它们使用自定义解析程序来消除对全局命名空间(如app)的需求,但也可以让ember在不使用自定义解析程序的情况下使用RequireJS。您只需传递全局名称空间

首先,创建一个app.js:

define([
    "ember"
], function(Ember) {
    var App = Ember.Application.create();
    App.deferReadiness();

    return App;
});
然后像这样定义路由器:

define([
    "ember",
    "app"
], function(Ember, App) {

    App.Router.map(function () {
        this.route('someRoute');
        // ...
    });

    return App.Router;
});
define([
    "ember",
    "app"
], function(Ember, App) {

    App.SomeRoute = Ember.Route.extend({
        // ...
    });

    return App.SomeRoute;
});
您的文件如下所示:

define([
    "ember",
    "app"
], function(Ember, App) {

    App.Router.map(function () {
        this.route('someRoute');
        // ...
    });

    return App.Router;
});
define([
    "ember",
    "app"
], function(Ember, App) {

    App.SomeRoute = Ember.Route.extend({
        // ...
    });

    return App.SomeRoute;
});
然后在main.js中:

(function(root){
    require(["config"], function(config){
        requirejs.config(config);
        require([
            "app",
            "models/someModel",
            "models/store",
            "adapters/someAdapter",
            "controllers/someController",
            "views/someView",
            "router",
            "routes/someRoute",
            // ...
        ], function(App) {
            App.advanceReadiness();
        });
    });
})(this);

谢谢你编辑这个问题。你认为RequireJS是问题的一个原因吗?在我看来,这个问题纯粹是一个Ember问题。问题是EmberJS需要我这样定义我的路由:App.Router.map(function(){this.route('test');});App.TestRoute=Ember.Route.extend({//Some code})在哪里可以放置这些代码行?假设我使用这样的东西:如果您的目标是拥有异步模块定义,那么标准解决方案是使用ember app kit或ember cli。它们使用ES6语法而不是requirejs语法,但大多数人发现这更容易。该密钥是一个自定义解析器,可替换内置的Ember解析器。
define([
    "ember",
    "app"
], function(Ember, App) {

    App.SomeRoute = Ember.Route.extend({
        // ...
    });

    return App.SomeRoute;
});
(function(root){
    require(["config"], function(config){
        requirejs.config(config);
        require([
            "app",
            "models/someModel",
            "models/store",
            "adapters/someAdapter",
            "controllers/someController",
            "views/someView",
            "router",
            "routes/someRoute",
            // ...
        ], function(App) {
            App.advanceReadiness();
        });
    });
})(this);