如何在带有RequireJS的车把中使用预编译模板?

如何在带有RequireJS的车把中使用预编译模板?,requirejs,handlebars.js,client-side-templating,Requirejs,Handlebars.js,Client Side Templating,我想预编译我的把手模板,但我不确定这在开发模式下是如何工作的 有一些后台进程(如运行)来持续监视把手模板文件的更改,这是常见的做法吗 我使用RequireJS拉入模板;e、 g: define(['jquery', 'handlebars', 'text!templates/my_template'], function($, Handlebars, myTemplate) { // ... var data = {"some": "data", "some_more": "data

我想预编译我的把手模板,但我不确定这在开发模式下是如何工作的

有一些后台进程(如运行)来持续监视把手模板文件的更改,这是常见的做法吗

我使用RequireJS拉入模板;e、 g:

define(['jquery', 'handlebars', 'text!templates/my_template'], function($, Handlebars, myTemplate) {

  // ...

  var data = {"some": "data", "some_more": "data"};
  var templateFn = Handlebars.compile(myTemplate);
  $('#target').append(templateFn(data));

  // ...

});
所以我知道一旦模板被预编译,人们就会这样做:

define(['jquery', 'handlebars'], function($, Handlebars) {

  // ...

  var data = {"some": "data", "some_more": "data"};
  var template = Handlebars.templates['my_template'];
  $('#target').append(template(data));

  // ...

});
请注意关于第二个代码段中的以下内容:

  • RequireJS模块不再拉入模板
  • handlebar.compile()不再使用
  • 所以,通常我会运行Guard,以便在模板文件发生文件系统级修改时编译模板吗

    基本上我的问题是,开发人员打算这样做吗

    if (development) {
      compile templates
    }
    else {
      use precompiled templates
    }
    

    我也在使用Rails,所以可能有一些像sass Rails这样的黑魔法。

    你看过Require.js Handlebar插件()或epeli的requirejs hbs()吗?

    这篇关于Require.js和Handlebar的文章可能会有所帮助。

    问了这个问题后,我发现实现这一点的另一种方法可能是通过Grunt Watch。然而,更好的方法是使用Grunt和Browserify,完全跳过RequireJS。然后您将使用NPM软件包……而且RequireJS提供的大多数库似乎也可以作为NPM软件包使用(令人惊讶的是,甚至基于DOM的库,如jQuery、主干、Angular)。然后使用同步require()调用来请求:

    var $ = require('jquery'),
        Backbone = require('backbone'),
        AppRouter = require('./app/routers/app');
    
    // Compile LESS and attach resulting CSS to the HEAD.
    require('./less/app.less');
    
    $(function() {
        new AppRouter();
        Backbone.history.start();
    });
    
    这是非常好的,而且这是可能的,因为应用程序在每次运行时都是完全构建的。将此功能与Grunt Watch相结合,这样每当发生变化时,您的应用程序都会自我重建,您就可以投入业务了

    构建过程甚至需要构建把手模板。要包含模板,只需执行
    require('./templates/my template.hbs')和grunt browserify的构建过程将找到这个require()调用,编译模板,并将编译后的模板包含到构建应用程序js文件中


    比RequireJS好多了

    对!!在我发布这个问题后,一位同事提到了require Handlebar插件,它非常完美!它甚至有i18n支持,这使它更棒。我对它进行了测试,它的工作原理和广告上的一样。它不需要从开发模式到生产模式的代码更改,并且使用r.js进行构建,可以将其连接到构建过程中。模板内联到生成的文件中。在生产中必须更改的只是脚本标记,包括require.js+data main…并且可以由您的资产管理器处理。从最新版本开始,i18n功能已被删除。您好,David。抱歉,OP要求提供车把预编译模板。。。您链接到的文章无助于:(