2013-10-26 4 views
0

컴파일 된 스플 라이스에서 머리를 쓰려고합니다. 선험적 도움으로 나는 유용한 결과를 컴파일하고 렌더링 할 수 있습니다. 나는 그것이 어떻게 작동하는지 완전히 이해하지 못한다.스냅 : 컴파일 된 스플 라이스로 데이터베이스 액세스

해석 모드에서 알고리즘은 간단합니다. 루트를 구성하고, 매핑 된 URL이 주어지면 핸들러 함수를 호출하고, DB에서 데이터를 가져오고, 끌어온 데이터에서 스플 라이스를 구성하고 바인드하고, heist에 삽입하고 적절한 템플릿을 호출합니다.

모두 컴파일 모드에서 위아래입니다. 나는 URL을 cRender에 직접 매핑하고 핸들러를 호출하지 않는다. 따라서 모든 스플 라이스 생성 및 데이터 처리 함수는로드시 호출됩니다.

그래서 내 질문은 데이터베이스가 호출됩니다? 로드시에도 이런 일이 발생합니까? 그것은 내가 이해하지 못하는 일련의 사건 일뿐입니다.

스플 라이스 구성이 특정 템플리트 렌더링과 독립적이므로 스플 라이스 바인딩 태그가 전체 애플리케이션에서 고유하다는 것을 의미합니까 ?? 그들은 글로벌 변수와 같은가요?

감사합니다.

답변

3

예, 당신은 꽤 정확합니다. 나는 그들이 글로벌 변수와 같다고 말하지 않을 것이다. 그들은 글로벌 상수 나 글로벌 API와 더 비슷합니다. 필자는 웹 디자이너가 동적 데이터와 상호 작용하는 데 사용할 수있는 API로 컴파일 된 스플 라이스를 봅니다.

컴파일 된 스플 라이스를 사용하면 런타임에 데이터로 가득 찬 구멍을 마크 업에 삽입 할 수 있습니다. 로드 할 때 실행중인 모나드는 HeistT n IO입니다. 그러나 실행시 실행중인 모나드는 RuntimeSplice n입니다. 따라서 컴파일 된 Heist API를 살펴보면 데이터베이스 함수와 같은 런타임 코드가 어디에 있어야하는지 쉽게 알 수 있습니다 : RuntimeSplice n 모나드.

+0

의미가 있습니다. 런타임 대로드 타임은 꽤 분명합니다. 그러나 큰 응용 프로그램에서는 꽤 많은 고유 한 전역 상수가 필요할 것입니다. 그래서 우리는 "admin_category_users_id"와 같은 이상한 긴 스플 라이스 태그로 끝날 수도 있습니다. 그렇죠? –

+0

예. 나는 그것이 불가피한 복잡성이라고 생각한다. – mightybyte

+0

@mightybyte 그러나 이들 태그 중 많은 부분은'withLocalSplices'와 관련 함수를 사용하여 최상위 스플 라이스에 링크 된 서브 프라 플에 바인딩됩니다. 그들은 진정으로 글로벌이 아니겠습니까? 아마도 다른 스플 라이스를 감싸고 네임 스페이스를 대신하는 "더미 최상위 스플 라이스 (dummy top-level splices)"를 사용할 수도 있습니다 ... 그러면 성능이 저하 될까요? – danidiaz