Poszukuję silnika szablonów takich jak HTML :: Mason (lub Mason), więc co "kompiluje" komponenty źródłowe w kodzie perl, ale zamiast perl-code skompiluje komponenty do kodu JavaScript i po uruchomieniu/uruchomieniu ich z modułem perlera Javascript :: V8.Perl: JavaScript :: Szablony V8 - od perl
Motywacja: Szukasz rozwiązania dla bezpiecznego języku szablonu, co może edytować użytkowników bez narażania bezpieczeństwa serwera. JavaScript jest w pełni funkcjonalnym językiem, więc używanie go jest prawdopodobnie lepsze/szybsze niż niektóre "języki mini", takie jak TT lub podobne. Najlepsze dla mnie byłoby rozszerzenie (przepisanie) Mason'a na kompilację Joose/JavaScript zamiast Moose/Perl. ;)
A tak, zrób to z Perl z Javascript :: V8, ponieważ w ten sposób możliwe jest posiadanie całej mocy perla dostępnej przez JavaScript :: V8 $ context-> bind_function w bardzo bezpieczny sposób.
Pytania:
- ktoś wie coś podobnego? (Znaleziono nic w CPAN) ...
EDIT: w Mason można napisać na przykład
% #perl version
% my(@list) = qw(Jane John Doe);
<ul>
% foreach my $item (@list) {
<li><% uc($item) %></li>
% }
</ul>
byłoby miło mieć możliwość napisać powyżej w JS, jak:
% //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>
Powyższe źródło powinno zostać "skompilowane" do JavaScript (Joose) i wykonane przy pomocy Javascript :: V8. (Podobnie jak w Mason - źródło jest kompilowany do Perl/obiektu Moose i wykonany z Perl) ...
Jak widać, for(var i in list)
jest napisany w czystym JS, a nie w „mini-język” ...
Mówiłeś " JavaScript jest w pełni funkcjonalnym językiem, więc używanie go jest prawdopodobnie lepsze/szybsze niż niektóre "min i języki "". Naprawdę myślisz, że język mini, taki jak TT (który jest podzbiorem Perla i jest skompilowany do Perla, co oznacza, że skompilowane szablony są tylko podprogramami) będzie wolniejszy niż przekształcenie twojego szablonu w JavaScript, wywołanie innego zupełnie innego tłumacza, wysyłanie dane do tego tłumacza, uruchamiając go, a następnie zbierając dane z tego tłumacza? Brzmi to wolno jak melasa. Chociaż myślę, że to zgrabny projekt, nie sądzę, że to wszystko jest tak praktyczne. – mpeters
Err, dlaczego nie pozwolić na TT? Myślę, że możesz być pod wpływem jakiegoś nieporozumienia. TT jest zaprojektowany do separacji MVC, a nie jak Embperl, Mason czy tym podobne. – ysth
, o ile nie masz włączonego EVAL_PERL, jaki jest możliwy problem z bezpieczeństwem? Jestem oszołomiony. – ysth