require.js有什么替代方法可以实现模块的引用?

3

初次接触require.js。我有以下内容:

define([
    'jquery',
    'underscore',
    'backbone',
    'views/sidebar',
    'views/dashboard',
    'views/users',
    'views/venues',
    'views/payments'
], function($, _, Backbone, SidebarView, DashboardView, UsersView, VenuesView, PaymentsView) {

    var Router = Backbone.Router.extend({
        routes: {
            '/dashboard': 'showDashboard',
            '/users': 'showUsers',
            '/venues': 'showVenues',
            '/payments': 'showPayments'
        }
    });

    var initialize = function() {
        var router = new Router();
        Backbone.history.start();
    }

    return {
        initialize: initialize
    };
});

我在想是否有另一种写法,以避免出现这么长的行:

function($, _, Backbone, SidebarView, DashboardView, UsersView, VenuesView, PaymentsView) 

2
@sabotero 那有什么关系呢?哈哈 - 0xSina
3个回答

3
你可以使用AMD语法糖:
define(function(require) {

  var $ = require('jquery')
    , _ = require('underscore')
    , Backbone = require('backbone')

    // etc...

我个人更喜欢这种写法,因为它更接近CommonJS语法,但是有一些浏览器的限制(需要Function.prototype.toString),所以在生产之前一定要使用r.js进行打包。

文档中有更多示例:http://requirejs.org/docs/whyamd.html#sugar


0

minimerge是一个纯Java工具,只有几KB大小,速度超快。我在我的HTML5 Web项目中使用它。 它还可以处理带有依赖关系的CSS和任何基于文本的文件 ;-)


0

或者您可以尝试更通用和自然的解决方案(不仅限于JS)http://sourceforge.net/projects/minimerge

它支持完整的依赖项堆栈,多个源树,并且纯粹基于Java(您也可以将其用于内容过滤)。

特别是您最终会得到:

//:include com/package/Class.js

//任何代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接