JavaScript如何实现模板字符串延迟绑定?是否有相关类库?
实现延迟绑定的模板字符串方案
首先,原生JavaScript不需要额外库就能实现延迟绑定——把模板写成函数,每次调用时再传入变量即可,这样模板的求值会延迟到函数调用时刻:
// 定义模板函数,接收参数i const template = (i) => `this is line ${i}`; for (let i = 1; i < 5; i++) { console.log(template(i)); }
这段代码会输出你期望的结果。如果是一组模板,直接把多个模板函数存在数组/对象里,按需调用就行。
如果需要更复杂的模板功能(比如条件判断、循环、模板复用),可以用这些成熟的库:
lodash.template:轻量的模板工具,支持嵌入表达式、自定义分隔符,预编译后返回渲染函数,传入数据即可生成结果:
const template = _.template('this is line <%= i %>'); for (let i = 1; i < 5; i++) { console.log(template({ i })); }Handlebars:功能丰富的模板引擎,支持模板继承、助手函数,适合复杂场景。预编译模板后得到渲染函数,传入数据渲染:
const template = Handlebars.compile('this is line {{i}}'); for (let i = 1; i < 5; i++) { console.log(template({ i })); }EJS:语法贴近原生模板字符串的嵌入式引擎,支持直接在模板里写JS逻辑,同样是预编译为函数延迟渲染。
内容的提问来源于stack exchange,提问作者Joymaker
相关产品推荐
相关产品推荐

