Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 了解如何使用requirejs和text js在主干应用程序中加载html模板_Javascript_Backbone.js_Requirejs - Fatal编程技术网

Javascript 了解如何使用requirejs和text js在主干应用程序中加载html模板

Javascript 了解如何使用requirejs和text js在主干应用程序中加载html模板,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我正在学习主干js,试图做一个小项目 在of te页面中,我从cloudflare CDN加载require.js和text.js <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.min.js">//</script> <script type="text/javascript" src="//cdnjs.cloudflare

我正在学习主干js,试图做一个小项目

在of te页面中,我从cloudflare CDN加载require.js和text.js

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.min.js">//</script>

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/require-text/2.0.10/text.js">//</script>
问题:

  • 将text.js插件添加到页面时,出现以下错误:

    不匹配的匿名define()模块:函数(模块){'use strict'

  • 所以我不能同时加载require.js和text.js,即使在没有其他脚本的空白页面上,也会出现上述错误

  • 在我使requirejs与文本js一起工作之后,如何为该视图加载html模板
  • 现在,我知道如何在index.html页面内联编写模板

    我是这样做的:

    var Boxes = Backbone.View.extend({
    
        el : '.content',
    
        render : function () {
    
            var that = this; // This backbone view
    
            var template = _.template($('#user-list-template').html(), {});
    
            that.$el.html(template);
        }
    });
    

    谢谢!

    当您使用require.js时,您在页面中只使用一个脚本标记。其他所有内容都由require.js加载

    要使用插件,您需要在
    require.config

    require.config({
        paths: {
            text: "path/to/text"
        }
    });
    
    然后在您的模块中,您只需将其称为:

    define([
        "text!path/to/tpl"
    ], function( tplString ) {
    
    });
    
    但是请注意,如果您正在管理模板,最好是加载预编译的模板。文本插件只返回字符串,这对优化不太好,并会迫使您重复模板编译逻辑。您应该使用模板加载插件,对于下划线/lodash微模板,我建议您使用此插件:

    如果您想要一个使用Require.js和Backbone的应用程序示例,您应该真正检查一下Backbone样板文件:


    主干模板是使用主干开发的最佳实践快速设置项目的好方法。此外,它广泛使用AMD,因此,如果您是第一次使用它,您将有一个工作设置。

    在HTML文件中,您只需要加载如下所示的requrejs

    配置requirejs

    之后,您可以使用“define()/require()”加载模板,如

    define(['text!../../templates/app/content.about.html'],...);
    

    参见此处了解

    我很惊讶require.js文档中没有明确说明此类信息。似乎无法从CDN加载文本插件。遇到了完全相同的问题,不幸的是文本插件必须相对于主脚本托管在本地。您的答案令人困惑。您是否建议是否有使用模板时应该使用的插件文本?文本插件是模板插件的一项要求,但使用模板插件通常“更好”,因为它可以缓存已编译的模板以供重用,而不是每次从字符串重新编译。
    <script type="text/javascript" data-main="js/main" src="js/libs/require-2.1.2.min.js"></script>
    
    require.config({ ... });
    
    define(['text!../../templates/app/content.about.html'],...);