寻找像 HTML::Mason(或 Mason)这样的模板引擎,所以什么将源组件“编译”成 perl 代码,而不是 perl-code 将“编译”组件成 JavaScript 代码并在使用 Javascript::V8 运行/执行它们之后perl 模块。
动机:寻找安全模板语言的解决方案,什么可以在不影响服务器安全的情况下编辑用户。JavaScript 是功能齐全的语言,因此使用它可能比一些“迷你语言”(如 TT 或类似语言)更好/更快。对我来说最好的是 Mason 的扩展(重写),用于编译成 Joose/JavaScript 而不是 Moose/Perl。;)
是的,想要使用 Javascript::V8 从 perl 执行此操作,因为这种方式可以通过 Javascript::V8 $context->bind_function 以非常安全的方式获得所有 perl 的功能。
问题:
- 有人知道类似的东西吗?(在 CPAN 中一无所获)...
编辑:在梅森你可以写例如
% #perl version
% my(@list) = qw(Jane John Doe);
<ul>
% foreach my $item (@list) {
<li><% uc($item) %></li>
% }
</ul>
如果有可能在 JS 中编写上述内容,那就太好了,例如:
% //javascript version
% var list = ["Jane", "John", "Doe"];
<ul>
% for(var i in list) {
<li><% perl_uc($list[i]) %></li>
<!-- the "perl_uc" is the real perl uc() what is binded
with Javascript::V8::bind_function(perl_uc => sub { return uc(@_) }
-->
% }
</ul>
上述源代码应“编译”成 JavaScript (Joose),并使用 Javascript::V8 执行。(就像在 Mason 中一样——源代码被编译成 perl/Moose 对象并用 perl 执行)......
如您所见,它for(var i in list)
是用纯 JS 编写的,而不是用“迷你语言”编写的……</p>