문제

나는 이것을 읽었다 Meteor 템플릿 도우미가 여러 번 실행됩니다. 그리고 어떤 컬렉션도 포함하지 않고 이를 재현하려고 했습니다.

그래서 나는 다음과 같은 도우미를 얻었습니다.

Template.myTemplate.helpers({
    test: function(){
        console.log("Fired");
        return {
            name : "Foo"
        };
    }
});

템플릿은 다음과 같습니다.

<template name="myTemplate">
    {{test.name}}{{test.name}}
</template>

콘솔에서는 "Fired"가 한 번만 표시될 것으로 예상했지만 도우미는 실제로 두 번 호출됩니까?그러면 내 도우미가 컬렉션에 액세스하고 거기에서 데이터를 가져오는 경우 {{helper.key}}를 사용할 때마다 쿼리를 수행합니까?이것이 어떻게 작동해야 합니까?

도움이 되었습니까?

해결책

예, 맞습니다. 템플릿 시스템은 템플릿에서 사용할 때마다 도우미를 호출합니다.

당신이 묻는 것은 컬렉션이 계속해서 호출되기 때문에 이것이 컬렉션에 효율적인지 여부입니다.

그렇기 때문에 유성은 .find() 일종의 캐시인 커서를 반환합니다.다음으로 뭔가를 찾으려고 하면 이것을 볼 수 있습니다. .find(), 개체를 얻을 수 있지만 실제로는 데이터를 얻을 수 없습니다.커서는 필요할 때만 데이터를 가져오므로 보기만큼 비효율적이지는 않습니다.

첨부 .fetch() 실제로 데이터를 가져오고 이 캐시를 사용하지 않으므로 효율성이 떨어지며 종종 캐시로 사용하지 않는 것이 좋습니다. return 도우미의 가치.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top