如何在Angular 6+ CLI中使用Handlebars.js?

6
我想要创建一个基本客户信函,可以使用纯文本格式或 HTML 格式,并且客户可以在 TextArea 或 HTML 编辑器中进行进一步编辑。我考虑使用 Handlebars.js 渲染一个带有 Mustache 标签的 HTML 模板,同时传入一个包含各种业务信息的 JSON 对象。
我已经完成了以下工作:
import * as Handlebars from 'handlebars';

...
            const template = Handlebars.compile(this.exampleHtmlTemplate);
            this.note = template({ title: 'My title', body: 'My body' });

当使用Angular CLI进行编译时,我遇到了以下错误:
chunk {vendor} vendor.js, vendor.js.map (vendor) 7.84 MB [initial] [rendered]

WARNING in ./node_modules/handlebars/lib/index.js 22:38-56
require.extensions is not supported by webpack. Use a loader instead.

WARNING in ./node_modules/handlebars/lib/index.js 23:2-20
require.extensions is not supported by webpack. Use a loader instead.

WARNING in ./node_modules/handlebars/lib/index.js 24:2-20
require.extensions is not supported by webpack. Use a loader instead.

ERROR in ./node_modules/handlebars/lib/index.js
Module not found: Error: Can't resolve 'fs' in 'C:\...\NGSource\node_modules\handlebars\lib'

我正在使用Angular 7.2.6和Angular CLI 7.3.3。如何让Handlebars.js与Angular2+配合使用?或者,是否可以使用一些低级别的Angular API将Mustache模板和JSON数据渲染/编译成标准的HTML/文本字符串?

1个回答

3

您可以尝试使用不同的导入方式:

import * as Handlebars from 'handlebars/dist/cjs/handlebars';

1
工作得非常出色,但我缺少类型。 - CMS
这个导入一年前是有效的,我正在寻找现在可行的解决方案。 - Michal Kliment
https://dev59.com/OWcMtIcB2Jgan1znBMiz#69193751 - Michal Kliment

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接