CustomTag CFScript "뉘앙스"

1792 단어 cfmlcoldfusion
몇 년 동안 프로덕션에서 사용한 일부 CustomTags가 여전히 있으며, 이제 더 많은 cfscript를 작성하고 있으므로 StackOverflow에서 배운 다음 구문을 사용하여 일부를 계속 사용할 것이라고 생각했습니다.

CFML tag-based approach:
<cf_customTagName param1=param1Value>

CFScript approach:
cf_customTagName(param1=param1Value);

나는 즉시 cfscript 메소드가 태그를 두 번 실행하고 있음을 발견했습니다. CFML 태그 기반 구문을 사용하여 태그 기반 버전을 두 번 실행하려면 시작 및 종료 태그를 명시적으로 사용한 다음 thisTag.executionMode 또는 start 값으로 end 을 확인해야 합니다.

<cf_customTagName param1=param1Value>
    <!--- this runs the tag twice w/different executionModes --->
</cf_customTagName>

"뉘앙스"(CFM 기반 사용자 정의 태그는 항상 cfscript를 통해 두 번 두 번 실행됨)는 "Script support for custom tags "에 대해 설명하는 유일한 Adobe 설명서에 문서화되어 있지 않습니다. (참고: 이 동작이 Lucee CFML에서도 동일한지 확실하지 않습니다.)

이에 대한 해결책은 CFM 파일이 CustomTag로 실행되고 있는지(즉, thisTag.executionMode이 존재하고 start인 경우) 확인하고 종료하는 것입니다.

<cfif isDefined("thisTag.executionMode") and thisTag.executionMode is "start">
    <cfexit>
</cfif>

이 방법으로 명시적으로 수행하지 않으면 customtag의 기능이 무의식적으로 두 번 수행되어 데이터 문제가 발생하거나 성능에 부정적인 영향을 미칠 위험이 있습니다.

이것을 재현하고 테스트하기 위해 설정한 파일은 다음과 같습니다.

https://gist.github.com/JamoCA/2d48f9eb88ceb7f8bcb93fc3ab718ffa


좋은 웹페이지 즐겨찾기