4

テキストプラグインを使用して、最適化されたRequireJSセットアップがあります。モジュールに追加されている「.js」ファイル名に遭遇しているようです。私はFirefox17でこれを見ています。

このエントリを読みましたが、すべてのファイルが同じドメインにあると確信しています。 requirejsが!textプラグインでロードされた.jstテンプレートファイルに「.js」を追加しようとするのはなぜですか?

私のファイルはにあります

  • dev-img4.x.com/m/j/mains/main-article.js
  • dev-img4.x.com/m/j/views/logged_out.js
  • dev-img4.x.com/m/j/views/templates/logged_out.html

テキストプラグインはdev-img4.x.com/m/j/views/templates/logged_out.html.jsを検索しようとしますが、これはすべての依存関係が同じドメインにあるように見えるため、私には意味がありません。 。テキストプラグインがクロスドメインの問題があるとどのように判断するかわかりません。

main-article.js

    require.config({
        baseUrl: 'dev.x.com/m/j',
        paths: {
            'jquery': 'dev.x.com/m/j/lib/jquery',
            'backbone': 'dev.x.com/m/j/lib/backbone',
            'underscore': 'dev.x.com/m/j/lib/underscore',
            'text': 'dev.x.com/m/j/lib/text'
        },
        shim: {
            'underscore': {
                exports: '_'
            },
            'backbone': {
                deps: ['jquery', 'underscore'],
                exports: 'Backbone'
            }
        },
        urlArgs: 'buildlife=1',
        waitSeconds: 15
    });

    require(['jquery', 'modules/site', 'underscore', 'backbone', 'views/logged_out'], function($, site, _, Backbone, loggedOutView) {
            //This function will be called when all the dependencies
            //listed above are loaded. Note that this function could
            //be called before the page is loaded.
            //This callback is optional.

            var loggedOutBar = new loggedOutView();

            /* Initialize code */
            $(document).ready(function() {
                /* sitewide code */
                site.init();

                $('.rslogo').after(loggedOutBar.render());
            });
        }
    );

Logged_out.js

    define(['module', 'jquery', 'underscore', 'backbone', 'text!views/templates/logged_out.html'], function(module, $, _, Backbone, loggedOutTemplate) {
        /* Create a view of the logged out bar */

        var loggedOutView = Backbone.View.extend({
            className: 'loginbar',
            initialize: function() {

            },
            template: _.template(loggedOutTemplate),
            render: function() {

                this.$el.html(this.template);

                return this; /* Allow method chaining after render */
            }
        });

        return loggedOutView;
    });

logged_out.html

 <a href="#" class="signin">Sign In</a> | <a href="#" class="signup">Sign Up</a>
4

1 に答える 1

4

相対URLを使用してください。必要なのは

baseUrl: '/j/'

次に、構成内のすべてのjsファイルについて、baseUrlから再開する必要があります。

jquery: lib/jquery

これにより、dev.xのサブドメインでrequireを使用した場合に発生する可能性のあるクロスドメインの問題を防ぐことができます。

また、www.dev.x(dev.xのサブドメイン)にアクセスしている場合は、「。js」が追加されている問題が発生している可能性があります。この問題は、この以前の投稿でユーザー「liorix」によって発見されました:https ://stackoverflow.com/a/10618426/404097

これが問題である場合、baseUrlを相対化すると、問題が解決します。

于 2013-02-23T00:38:17.367 に答える