javascript - Backbone.js & require.js : how do I transform my models, View 和集合到 require.js 模块?

标签 javascript backbone.js requirejs

我正在使用 backbone.js 开发一个 javascript 应用程序,也就是说,为了便于开发,我以这种方式构建我的文件

app
 |
 + views
 |    L movieRow.js
 |    L movieDetail.js
 |
 + models
 |    L movie.js
 |    L tvshow.js
 |
 + collections
 |    L movies.js
 |    L tvshows.js
 |
 + templates
 |    L movieList.tpl
 |    L movieDetail.tpl
 |    L applicationUI.tpl
 |
 L application.js

现在,有很多 javascript 文件要服务器提供给用户,我看到一些关于 labjs 或 require.js 的讨论,并决定用它来测试。但我不知道如何将我所有的主干模型或 View 重写到这些 require.js 模块中。

在正确方向上的任何帮助都会很好。

最佳答案

理解 require 的关键(至少在我的小脑袋里)是记住你从函数返回的内容将对引入(或需要)这个模块的其他模块可用。所以在下面的代码中,我需要 jquery 和 backbone(jquery 是由“require-jquery”处理的特例)。当这 2 个可用时,它将调用我的函数,该函数将返回我创建的 View 构造函数。

define([    
    'jquery'
    'libraries/backbone'
], function ($) {
        var MovieRow = Backbone.View.extend({
            render: function () {

                return this;
            }
        });

        return MovieRow;
});

然后你可能会在你的页面上写这样的东西。请注意,jquery 是数组中的第一个必需项。这对应于我函数中的第一个参数。 View 是第二个,模型是第三个。然后我可以使用上面“定义”代码的返回值,它是构造函数。

require({
    baseUrl: '/'
},[
    'jquery',
    'app/views/movieRow',
    'app/models/movie',
    'libraries/backbone'
], 
function ($, MovieRowView, Movie) {
    var view = new MovieRowView({model : new Movie());
    $('body').append(view.render().el);        
});

希望这对您有所帮助...我们一直喜欢 Backbone 和 Require :)

关于javascript - Backbone.js & require.js : how do I transform my models, View 和集合到 require.js 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353151/

相关文章:

javascript - 我有一个在线工具可以将 HTML 转换为字符串吗?

javascript - 最不干涉的 AJAX 构建器/图形开发环境

javascript - 为什么 undefined var 没有添加到 window 对象 JavaScript 中?

javascript - 需要在 javascript 中导出 TypeScript 类

requirejs - 使用 TypeScript 和 AMD 模块时 "use strict"去了哪里

javascript - Ajax 调用被跳过

javascript - 如何在 Angular 中使用相同的 ng-model 从多个输入字段中检索文本

backbone.js - 我的 Backbone 默认值应该是一个对象还是一个函数?

json - 在主干中组织模型和集合

javascript - 如何使用下划线数据(以前的 underscore.query)