2010-12-05 3 views

답변

2

기본적으로 이것은 CouchApp과 함께 CouchDB를 사용할 때만 유용합니다.

show 기능에서 데이터를 쉽게 분리 할 수 ​​있습니다.
일반적으로 CouchDB는 Mozilla의 SpiderMonkey JavaScript 엔진을 사용하여 뷰를 렌더링하므로 CommonJS 구현을 사용할 수 없습니다.

기본적으로 CouchApp를 사용하면 HTML을 렌더링하는 데 필요한 JavaScript의 "표시"기능 (DB에 저장 됨)을 사용할 수 있습니다.

그래서 Node.js의 관점에서 볼 때 매크로를 사용하는 것이 실제로 의미가 없습니다. 또한 Node.js에서 사용 가능한 CouchDB 모듈 두 개를 빠르게 살펴 보았습니다. 매크로에 대한 지원을 찾을 수 없었습니다. 추가로 이것이 CouchApp의 특정 기능임을 나타냅니다.

+2

나는이 모든 것을 알아 내려고 노력하고 있습니다. 쇼 기능에서 어떻게 html 템플릿을 참조 할 수 있습니까? require()를 사용할 수 있습니까? – Costa

+1

kan.so에서 간소 도구를 검토하십시오. Common JS 기반의 대체 방법을 사용할 수 있습니다. –

+0

@Costa : 아마도 당신을 위해 너무 늦었 겠지만, 여기 내 대답을 참조하십시오. –

6

이것은 CommonJS 모듈을 CouchDB에 도입하기 전의 기능입니다. 이 매크로는 이제 꽤 쓸모가 없습니다.

+0

그렇다면 왜 그들이 CouchDB의 확실한 가이드 – ajsie

+0

에 여전히 존재하는지 궁금합니다. 사람들이 여전히 구버전을 실행하고있을 수 있기 때문에? – Husky

+2

흠 ... require()를 사용하여 html 템플릿을 어떻게 포함시킬 수 있습니까? – Costa

0

현재 둘 모두 여전히 사용 중입니다. require을 사용하는 것이 더 깨끗해 보이지만 런타임에 종속성이 평가되므로 디버그하기가 더 어렵습니다. 매크로를 사용하여 코드를 찾아보기 전에 코드를 찾아 보겠습니다.

1

CouchDB의 신참으로 유용한 몇 가지 관련 항목을 추가하기 만하면됩니다.

처음에는 require() 기능에 디자인 문서 첨부 파일을 포함 할 수없는 것 같습니다. 즉, 클라이언트와 서버에 동일한 스크립트를 포함시키려는 경우 예상대로 첨부 파일에 넣을 수 없습니다.

var js = require('somewhere/foo') 

이하지 않는 :

var js = require('_attachments/foo') 

오류는 (내가 사용 설계 문서는 자바 스크립트를 포함하는 특성 somewhere.foo이있는 경우 다음 확인을 작동하지만입니다

, CouchDB v1.6) :

{"error":"invalid_require_path", 
"reason":"Must require a JavaScript string, not: object"} 

이 때문에 나는 내 스크립트 i n 디자인 문서는 첨부 파일이 아닌 속성으로 사용됩니다. 이는 서버에 require()을 통해 액세스 할 수 있고 클라이언트에서도 (show 기능을 통해) 액세스 할 수 있음을 의미합니다.

두 번째로는 자바 스크립트 만 가능하므로 디자인 문서 속성으로 업로드 된 HTML 템플릿을 포함 할 수 없습니다.

couchapp에서 지원하는 !code!json 지시문은 여기에서별로 도움이되지 않습니다. (나는 그들이 일을하는 데 많은 성공을 거두지 못했다고 말할 것도없고 ...)

템플릿에 유용한 트릭은 쇼 및 뷰에서 직접 디자인 문서 속성에 액세스 할 수 있다는 것입니다 (this). 따라서 설계 문서 속성 templates.edit을 주어,이 작품 : 친절에

var template = this.templates.edit; 

이 관계, 또한 당신이 속성으로 내장 한 자바 스크립트를 제공하는 쇼 기능을 제공하기 위해 사용될 수있다. 이 설계 문서의 shows.myscript 특성에 말 :

function(doc, req) { 
    return this.js.myscript; 
} 

는 그 다음 URL http://localhost:5984/<database>/_design/<id>/_show/myscript 당신이 당신의 HTML에서 참조 할 수 있습니다 의미 클라이언트에 서비스를 제공합니다. 또한 show 함수를 사용하여 원하는 경우이 방법으로 포함 된 여러 스크립트를 하나의 패키지로 결합하고 최소화 할 수 있습니다.