저는 YUI3에서 클라이언트 측 테스트를 만들고 테스트중인 페이지의 핸들 막대 템플릿을 컴파일해야합니다.단위 테스트 용 핸들 막대 템플릿
우리는 렌더링 엔진으로 hbs가 설정된 노드 응용 프로그램을 실행 중이므로 요청이 서버에 도착하면 라우터는 res.render()를 호출하고 views 디렉토리의 .hbs 파일을 직접 호출하여 응답합니다 .
테스트에서 내가 핸들 바 템플릿을 인스턴스화하고 DOM에 할당해야하지만 테스트는 자바 스크립트이므로 파일 스트림 기능에 액세스 할 수 없으며 handlebars.compile()은 경로를 사용하지 않습니다. 논증.
기본적으로이 같은 뭔가를 원하지만 어디 Handlebars.compile() 메소드가 연속적으로 참조 된 템플릿 파일을 컴파일합니다
var body = A.one(document.body);
var container = A.Node.create('<div id="test-container"></div>');
var domTemplate = Handlebars.compile('../../../../views/campaign/set-campaign-properties.hbs');
var dom = A.Node.create(domTemplate);
container.append(dom);
body.append(container);
감사의 응답 JE,하지만 내 문제는 내가는 HBS 파일에서 핸들 템플릿을 컴파일 할 필요가있다. 'source'의 템플릿을 다른 디렉토리의 파일에서 템플릿으로 대체하는 방법은 무엇입니까? –
서버 대 클라이언트 때문에 약간 문제가 있습니다. 서버에서로드하는 방법은 파일을 문자열로 읽고 여기에서했던 방법과 비슷하게로드하는 것입니다. 클라이언트 측에서는 ajax를 통해 파일을로드합니다. 몇 가지 도서관이 있습니다. 저는 CommonJS 패턴을 사용하는 webpack을 사용하여 서버와 클라이언트 모두에서 객체를로드하는 것을 처리했습니다. 좀 더 완전한 데모를 추가하겠습니다. – JustEngland
감사합니다. 원래 질문을 되돌아 보면, 나는 유스 케이스에 대해 명확하지 않다는 것을 알았다. 프로덕션 중에 Express 엔진 render() 메소드에서 호출 한 .hbs 템플릿 내에 핸들 막대 템플릿이 있습니다. 여기에 필자의 필요성은 시야에 대한 테스트를 작성하는 것과 관련이있다. 이렇게하려면 뷰와 컨트롤러를 인스턴스화해야합니다. 문제는 DOM에 여러 개의 후크가 있기 때문에 컨트롤러에서 오류가 발생하고 테스트 중에 핸들 막대 템플릿 파일을 호출하고 렌더링 할 수 없어 DOM을 인스턴스화 할 수 없다는 것입니다. 그게 더 명확한가요? –