私は Node.js フレームワークを構築しており、ColdFusion の<cfoutput>
スタイルのハッシュ修飾変数が大好きです。
私は同じ効果を達成する方法を考え出そうとしています。例えば:
<h1>
#this.pageTitle#
</h1>
<div>
#this.content()#
</div>
私は Node.js フレームワークを構築しており、ColdFusion の<cfoutput>
スタイルのハッシュ修飾変数が大好きです。
私は同じ効果を達成する方法を考え出そうとしています。例えば:
<h1>
#this.pageTitle#
</h1>
<div>
#this.content()#
</div>
上記の主な質問に残したコメントから。
/**
* Load the Virtual Machine
*/
var vm = require('vm');
/**
* Template Data
*/
var template = "<h1>#this.content#</h1><div>#this.sitename()#</div>";
/**
* Process method
*/
function compile(source)
{
var __ = "this.__compiled = '";
/**
* Replace all template tags
*/
__ += source.replace(/\#(.*?)\#/g, "' +$1+ '");
return __ + "';";
}
/**
* Create the context / scope, this can be anything from 'this', 'process' to 'require('fs')'
*/
var context = {
content : "Robert Pitt",
sitename : function(){
return "http://robertpitt.me";
}
};
/**
* Compile the code within the sandbox
*/
var compiled = vm.runInNewContext(compile(template), context);
/**
* Use compiled source:
* value: <h1>Robert Pitt</h1><div>http://robertpitt.me</div>
*/
console.log(compiled);
CoffeeScriptには文字列補間があります:
author = "Wittgenstein"
quote = "A picture is a fact. -- #{ author }"
sentence = "#{ 22 / 7 } is a decent approximation of π"