2

以下のセットアップは、requirejs を使用してバックボーンを正常に動作させる唯一の方法です。よりクリーンな方法はありますか? 毎回バックボーンへのパス全体を指定する必要はありませんか?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html lang="en">
<head>
<title></title>
<link href='<c:url value="/resources/css/bootstrap.min.css"/>'
    rel="stylesheet" type="text/css" />
    <script data-main="resources/js/main.js" src="resources/js/lib/require.js"></script>

</head>
<body>
    <ul class="nav">
    <li ><a href="#home">Home</a></li>
    <li><a href="#rentals">Rentals</a>
    <li><a href="#films">Films</a></li>
</ul>
</body>
</html>

main.js

require.config({
    baseUrl : '/sakila/resources/js',
    paths : {
        jquery : 'lib/jquery-1.8.3.min',
        underscore : 'lib/underscore-min',
        jqueryui : 'lib/jquery-ui-1.9.2.custom.min'
    },
    shim : {
        '/sakila/resources/js/lib/backbone-min.js' : {
            deps : [ 'underscore', 'jquery' ],
            exports : 'Backbone'
        }
    }
});
require([ 'router' ], function(Router) {
    Router.initialize();
});

router.js

define(['underscore','jquery','/sakila/resources/js/lib/backbone-min.js'],function(_,$,Backbone){
    var AppRouter = Backbone.Router.extend({
        routes : {
            'home' : 'home',
            'films' : 'films',
            'rentals' : 'rentals',
            '*actions' : 'home', // default action
            '':'home'
        },
        home:function(){
            console.log('Routed to home');
        },
        films:function(){
            console.log('Routed to films');
        },
        rentals:function(){
            console.log('Routed to rentals');
        },

    });
    initialize = function() {
        var app_router = new AppRouter();
        Backbone.history.start();
        console.log('history started');
    };
    return {initialize:initialize};

});
4

2 に答える 2

3

requirejs 構成のパスに Backbone のエイリアスを作成し、そのエイリアスをシムで使用できます。baseUrlまた、バックボーンは設定のオプションを尊重するため、バックボーンのフル パスを指定する必要はありません。

require.config({
    baseUrl : '/sakila/resources/js',
    paths : {
        jquery : 'lib/jquery-1.8.3.min',
        underscore : 'lib/underscore-min',
        jqueryui : 'lib/jquery-ui-1.9.2.custom.min',
        backbone : 'lib/backbone-min'
    },
    shim : {
        backbone : {
            deps : [ 'underscore', 'jquery' ],
            exports : 'Backbone'
        }
    }
});

そして、それを他の場所できれいに使用します。

define(['underscore','jquery','backbone'],function(_,$,Backbone){

})
于 2013-01-05T03:45:57.827 に答える
2

次の投稿では、Backbone.js で Require.js を使用する方法について説明します。Backbone.js を Require.js と統合する 2 つの異なる方法について説明します。これには、シムと AMD 準拠の backbone.js が含まれます。

個人的には、Backbone.js と undescore.js の AMD 準拠バージョンを使用したいと考えています。これにより、構成が少しきれいになり、モジュールが並行してロードされます。次のブログ投稿では、このオプションについて説明しています。

Backbone.js の再学習 – Require.js と AMD

于 2013-01-11T17:35:26.260 に答える