Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
6. Spider Monkey
• FireFox 에 사용되는 JavaScript Engine
• Math, Array 같은 것은 있다.
• Document, Event 같은 것은 없다.
7. 구조
Real World
Perl World
JavaScript::SpiderMonkey::eval(“JavaScript CODE”)
JavaScript World
shell sub print() BIND Print()
JavaScript
CODE
“PerlObject” MAKE PerlObject
sub get_hello_string() BIND .GetHelloString()
8. #1. 바인딩할 함수의 정의
#!/usr/bin/perl
use JavaScript::SpiderMonkey;
# perl 로 함수 구현.
sub hello_perl # hello perl 을 리턴하는 함수
{
return 'Hello Perl';
}
sub _print # 쉘에 글자 출력하는 함수. JS의 유일한 외부통로가 될것임
{
print @_;
}
9. #2. JS객체 생성 및 바인딩
my $js = JavaScript::SpiderMonkey->new();
$js->init();
# JavaScript 환경에 PerlObject 를 생성한다.
my $obj = $js->object_by_path( "PerlObject“ );
# PerlObject에 hello_perl 함수를 HelloPerl()로 바인딩한다.
$js->function_set( "HelloPerl" , &hello_perl , $obj);
# inline 으로 Print 함수를 선언한다.
$js->function_set( "Print" , &_print );
10. #3. 자바스크립트 eval
# 자바스크립트 작성
$JS = <<END_OF_JS;
// here is JavaScript world
var hello = PerlObject.HelloPerl(); // perl 의 scalar 를 그대로 받는다.
hello = hello + " in JavaScript world!!n"; // scalar 를 가공하고
Print(hello); // 외부세계로 보낸다.
END_OF_JS
# 자바스크립트로 제어 시작
$js->eval( $JS );
12. Mini-Lang 으로써의 가능성
• JavaScript 는 진입장벽이 높지 않다.
• JavaScript 는 삼각함수, 정규표현식등을 사용
할 수 있는 풍부한 Core를 가지고 있다.
• 외부와 단절되어 안전하다.
• 그래서
핵심코어와 비지니스로직을 분리하여, 항상
내가 나설 필요가 없다.