在单个文件中需要js和多个已编译的Handlebar.js模板
RequireJS and multiple compiled Handlebar.js templates in a single file
我是RequireJS的新手。我在Java/Maven应用程序中同时使用RequireJS和Handlebars.js。
我还使用jknack的handlebas-maven插件来编译我的handlebars模板。模板需要进行编译,才能作为跨域解决方案的一部分工作。
插件正在编译我的模板并将它们合并到一个文件中。生成的文件(我们称之为template.js)包含如下内容:
define('a.template', ['handlebars'], function(Handlebars) {
...
var templates = Handlebars.templates = Handlebars.templates || {};
templates['a.template'] = template;
var partials = Handlebars.partials = Handlebars.partials || {};
partials['a.template'] = template;
return template;
}
define('b.template', ['handlebars'], function(Handlebars) {
...
var templates = Handlebars.templates = Handlebars.templates || {};
templates['b.template'] = template;
var partials = Handlebars.partials = Handlebars.partials || {};
partials['b.template'] = template;
return template;
}
经过一点阅读,我相信这些都是命名模板(我知道这不是最佳实践),但插件会这样生成它们,我宁愿不手动编辑生成的文件来删除名称,以防将来模板更改,我的团队中的其他人不得不重新生成它们。
现在,我想从单个文件加载我编译的Handlebar模板,并将它们与RequireJS一起使用。经过一番折腾,我终于找到了一个似乎有效的东西:
require.config({
paths: {
'handlebars': '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min',
'template': 'template'
},
shim: {
'handlebars': {
exports: 'handlebars'
},
'template': {
exports: ['a.template','b.template']
},
'a.template': ['template'],
'b.template': ['template'],
}
});
define(['a.template', 'b.template'],
function (aTemplate, bTemplate) {
...
然而,当我加载页面时,我看到一个错误:
未捕获类型错误:未定义不是函数
我已经追踪到RequireJS中的"getGlobal"函数(我认为这是尝试的拆分)。因此,"template"的exports属性是数组而不是字符串,这似乎是一个问题。
这些模板似乎如我所期望的那样工作。
我不确定我所做的是否是错误的,还有更好的方法从一个文件加载多个编译的模板吗?
或
我是否发现了RequireJS或jknack的maven插件中的错误?
我在没有JavaScript错误的情况下完成了以下操作。
require.config({
paths: {
'handlebars': '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min',
'a.template': 'template',
'b.template': 'template'
},
shim: {
'handlebars': {
exports: 'handlebars'
}
}
});
define(['a.template', 'b.template'],
function (aTemplate, bTemplate) {
...
相关文章:
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- Bootstrap CSS和JS我必须将它们包含在单独的文件中,或者可以编译它们
- 在客户端上编译和渲染复杂的Dust.js模板
- 预编译的JSX React,js不起作用
- Angular JS$编译服务导致$watch内存泄漏
- 从Babel 5.8.35升级到6.0.0将不会编译带有SyntaxError和意外标记的app.js
- 通过运行条件编译防止JS泄露IE浏览器
- 在 Windows 中预编译车把.js模板
- 如何将从GWT编译的JS添加/访问到另一个外部HTML / JS项目中
- 选择以输出大小为优先级的编译到 JS 语言
- 如何让 React Native 在编译发布时将 JS 包放入共享扩展中
- 与为生产站点编译多个 js 文件的相关性
- JS-如果是语句运算符,这是怎么编译的
- 在单个文件中需要js和多个已编译的Handlebar.js模板
- 为NW.js编译的SQLITE-一个用于SQL CRUD的命令
- Grunt将外部JS编译成内联HTML
- Node.js编译我不需要的文件.这是怎么运作的
- 我如何用sweet.js编译多个文件
- CoffeScipt文件与JS编译的区别
- Paper.js编译错误:env: node:没有这样的文件或目录