尋找像HTML :: Mason(或Mason)這樣的模板引擎,所以將源代碼組件「編譯」成Perl代碼,而不是Perl代碼將「編譯」組件轉換成JavaScript代碼,然後在Javascript/V8 perl模塊中運行/執行它們。Perl:JavaScript :: V8模板 - 來自perl
動機:尋找解決方案安全模板語言,什麼可以編輯的用戶不影響服務器安全。 JavaScript是全功能語言,因此使用它可能比TT或類似的一些「迷你語言」更好/更快。對我來說最好的是將Mason的擴展(重寫)編譯成Joose/JavaScript而不是Moose/Perl。 ;)
是的,想要從Perl :: Javascript中做到這一點,因爲這種方式有可能通過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執行。 (如在梅森 - 源被編譯成的Perl /穆斯對象,並用Perl執行)...
正如你所看到的,for(var i in list)
是用純JS,而不是在「小語言」 ...
你說「 Javascript是全功能語言,因此使用它可能比某些'min'更好/更快我的語言'「。你真的認爲像TT這樣的迷你語言(它是Perl的一個子集,被編譯成Perl,這意味着編譯模板只是子例程)比將模板轉換成Javascript更慢,調用另一個完全不同的解釋器,發送數據給解釋器,運行它,然後從解釋器中收集數據?這聽起來像糖漿一樣慢。 雖然我認爲這是一個整潔的項目,但我認爲這並不實際。 – mpeters
錯誤,爲什麼不允許使用TT?我想你可能會受到一些誤會。 TT是爲MVC分離而設計的,不像Embperl或Mason等。 – ysth
只要您沒有啓用EVAL_PERL,您看到了什麼可能的安全問題?我很困惑。 – ysth