velocity icon indicating copy to clipboard operation
velocity copied to clipboard

解析并调用一个 非全局的 macro

Open speedornothing opened this issue 8 years ago • 4 comments

问题描述: 有两个模版文件 a.vm 和 b.vm, 前者定义了一个 macro ,后者通过 parse 指令解析前者并调用其定义的 macro


在 java 版中这样做是可以的,node 版会报 macro 未定义的错误

speedornothing avatar Sep 25 '16 05:09 speedornothing

详细说明一下,

macro-x.vm ( 定义一个 macro )

#macro(macroX)
<div>
  macroX content ...
</div>
#end

test.vm ( 测试模板, 解析 macro-x.vm 然后调用 macroX )

#parse("macro-x.vm")
#macroX()

test.js ( 测试代码 )

'use strict'

var path = require('path')

var Engine = require('velocity').Engine
var engine = new Engine({
  root: __dirname,
  template: path.resolve(__dirname, 'test.vm')
})
var result = engine.render({})
console.log(result)

报错信息: Error: Call undefined macro.

speedornothing avatar Sep 25 '16 06:09 speedornothing

@fool2fish 这位女侠看样子最近挺忙额 ...

speedornothing avatar Sep 27 '16 05:09 speedornothing

怎么解决的?

wuwb avatar Apr 24 '17 10:04 wuwb

@aiwb 没有解决,直接把宏放在全局用了,最后直接放弃 velocity 了 ..

speedornothing avatar Apr 29 '17 10:04 speedornothing