木偶.js需要.js模板路径错误

Marionette.js Require.js Template Path Error

本文关键字:js 路径 错误 需要 木偶      更新时间:2023-09-26

>我的 tpl 有以下目录结构:

-src
    -assets
        -js
            -lib
                [files]
            -src
                -templates
                    -common
                        builder_regions.tpl

我的要求配置是:

require.config({
    baseUrl:'src/assets/js',
    paths: {
        backbone:               'lib/backbone',
        jquery:                 'lib/jquery.min',
        'jquery-ui':            'lib/jquery-ui-1.10.4.custom.min',
        underscore:             'lib/underscore.min',
        modernizr:              'lib/modernizr.min',
        'magnific-popup':       'lib/magnific-popup.min',
        text:                   'src/assets/jslib/text',
        marionette:             'lib/backbone.marionette.min',
        tpl:                    'lib/underscore-tpl'
    },
    shim: {
        jquery: {
            exports:            '$'
        },
        underscore: {
            exports:            '_'
        },
        backbone: {
            deps:               [ 'jquery', 'underscore' ],
            exports:            'Backbone'
        },
        marionette: {
            deps:               [ 'jquery', 'underscore', 'backbone' ],
            exports:            'Marionette'
        },
        'jquery-ui': {
            deps:               [ 'jquery' ],
            exports:            '$ui'
        },
        'magnific-popup': {
            deps:               [ 'jquery' ],
            exports:            'magnificPopup'
        },
        tpl:                    [ 'text' ]
    }
});

我的需求模块设置为:

define([ 'tpl!src/templates/common/builder_regions.tpl', function( Marionette, layoutTpl ) {
    console.log( 'did not throw' );
});

当我访问该模块时,出现以下错误:

GET http://localhost:3000/src/assets/js/src/tpl.js 404 (Not Found)

为什么当我在require.config中提供路径时,文件tpl.js被引用?谢谢!

如果你的underscore-tpl.js是这个,那么你不需要它的shim配置,因为它会自己调用define。如果对不需要填充程序的内容使用 shim 配置,则 RequireJS 的行为可能会很奇怪。

另一件事与您在此处报告的问题无关,但可能会给您带来麻烦:jQuery 至少从 1.9 版本开始就不需要shim。因此,如果您使用的版本为>= 1.9,则应删除 jqueryshim

试试这个:

 define(['marionette', 'tpl!src/templates/common/builder_regions.tpl'], function( Marionette, layoutTpl ) {
        console.log( 'did not throw' );
    });