2016-08-28 3 views
0

HTML 템플릿 (.tpl 파일)을 미리 처리해야하고 (loadTemplates) HeistConfig에 입력해야하는 이유를 이해할 수 있습니다. 이를 통해 Heist는 HTML을보다 효율적인 형식으로 미리 처리 할 수 ​​있습니다.컴파일 된 강도 (하스켈)에서 왜 미리 스플 라이스를 만들어야합니까?

그러나 스플 라이스도 미리 만들어야하며 HeistConfig 안에 넣어야합니다. 이것의 이점은 무엇입니까? 스플 라이스는 런타임에 계산되므로 이점이 없습니다. 이것의 뒤에 생각 과정은 무엇입니까?

스플 라이스가 로드 시간 (런타임 외에도)에서 코드를 실행할 수도 있기 때문일 수 있습니다. 이것이 주요한 설명입니까?

답변

1

접합 함수 (컴파일 및 해석)는 노드에서 작동합니다. 스플 라이스의 유형 서명이 Node -> m [Node] 인 것으로 생각하십시오. 이것은 DOM 수준에서 작동하기 때문에 상대적으로 비용이 많이 드는 작업입니다. 스플 라이스의 결과 노드가 DOM 트리에 다시 삽입되면 전체 트리가 ByteString으로 렌더링되어야합니다. 컴파일 된 강도 뒤에있는 아이디어는 응용 프로그램 초기화시 가능한 한 많은 렌더링 작업을 수행하는 것이 었습니다. 초기화의 결과는 [Chunk]이고 Chunk는 정적 ByteString이거나 동적 인 m ByteString 일 수 있습니다 (실제 유형은 약간 다릅니다). 초기화가 전체 템플릿을 [Node]에서 [Chunk]으로 변환하기 전에 컴파일 된 스플 라이스를 처리해야합니다. 또한 앱 초기화 시간에 전환이 발생하는 런타임 효율성을 극대화합니다.

https://github.com/snapframework/heist/wiki/Compiled-Splice-Formulations

+0

http://snapframework.com/docs/tutorials/compiled-splices 그러나 계산하면 (등, 데이터베이스에서 가져 오는)과 조각으로의 변환이 실행시 수행해야합니다 :

자세한 내용은 다음 링크를 확인 어쨌든 왜 로딩 타임에 스플 라이스를 만들어야합니까? 효율성이 왜 추가 될까요? – haskellHQ

+0

로드 타임에 스플 라이스를 만드는 것이 왜로드 시간에 중요한 일을하는 경우 효율성을 높일 수 있는지 이해할 수 있습니다. 하지만 실행 시간에 모든 작업을 수행하는 스플 라이스는 어떻게됩니까? 이것이 나의 질문의 핵심이다. – haskellHQ

+0

@ haskellHQ 자신이 이미 말한 의견을 다시 읽으십시오. 이러한 방식으로 * 일부 스플 라이스는 최적화 될 수 있지만 런타임에 실행되어야하는 스플 라이스 **는 어떤 경우에도 최적화 될 수 없습니다 **. 최적화 할 수있는 것을 최적화하는 것과 라이브러리 디자이너가 무엇을 선택해야합니까? – Bakuriu