이벤트 핸들러
DOM 이벤트에 대한 처리를 하는 함수를 이벤트 핸들러라고 부른다. Riot에서 일반적인 이벤트 핸들러는 다음과 같은 형식으로 처리한다.
“on…”으로 시작하는 DOM Event는 모두 동일한 방법으로 적용할 수 있으며 다음과 같이 표현식(expression)을 사용해 이벤트 핸들러를 동적으로 적용할 수도 있다.
주의할 점은 Riot의 이벤트 핸들러 “e.preventDefault()”을 호출하여 브라우저의 기본 이벤트 전파를 막는것이다. 이것을 허용하려면, 핸들러 함수의 마지막에 true를 리턴하면 된다.
조건문
조건문은 조건에 따라 특정 DOM노드를 보여주거나 숨기는 기능을 제공한다.
- show : 판단값이 true이면 DOM을 보여준다.
- hide : 판단값이 true이면 DOM을 못본다.
- if : 판단값이 true이면 DOM추가, 아니면 제거.
반복문
반복문은 each 속성과 함께 아래와 같이 사용할 수 있다.
컨텍스트(Context)
Riot에서 반복문을 사용할때 몇가지 주의할 점이 있다. 가장 중요한것은 각 each 아이템마다 자식 컨텍스트가 생성된다는 것이다.
each반복문 내부의 this는 새로운 컨텍스트 이다. 즉, items각 요소가 this이자 todo의 자식 컨텍스트로 생성되었으므로, title에는 직접 접근할 수 있지만 todo태그 인스턴스의 함수는 “parent.” 접두사를 붙여서 호출할 수 있다.
반복문내에서의 이벤트 핸들러
위의 remove함수는 이벤트 객체를 통해 각각의 자식 요소들에 접근할 수 있다. event.item를 통해 items의 개별 요소를 참조할 있다.
이벤트핸들러가 실행되고 난 후에는 현재 태그 인스턴스가 this.update()를 이용해 화면을 갱신하게 되고, 이것은 반복문내의 자식 인스턴스들로 모두 갱신한다.
서버사이드 렌더링
서버측에서 npm으로 riot을 설치한 다음 원하는 태그를 require하고 “riot.render(*.tag)”를 호출하기만 하면 된다.
이곳에서 express+swig+riot을 사용한 간단한 Server-Side rendering 예제를 볼 수 있다.