2011-01-22 6 views
1

내가 관리하는 웹 사이트에는 페이지 데이터가 포함 된 JSON 파일이 있습니다. 그런 다음이 JSON을 사용하여 페이지를 만듭니다.html 생성으로 파이썬과 자바 스크립트

데이터는 대략 비슷하게 보입니다 (훨씬 더 복잡한 경우 제외).

[ 
    {"title": "Hello world", "content": "World, hello to you!"}, 
    {"title": "Hello world Part II", "content": "The sequel to hello world."}, 
    ... 
] 

이 데이터는 HTML로 구문 분석됩니다. 이제 여기에 문제가 있습니다. 우리는 두 가지 버전의 HTML이 필요합니다.

하나는 고정 될 필요 World, hello to you!file-1.htmlHello World의 제목과 내용으로 포맷 될 file-0.html의 형식으로 출력한다 (타이틀 = Hello World Part II 콘텐츠 = The sequel to hello world).

두 번째는 필요한 경우 AJAX를 통해 JSON을 가져오고 JSON의 모든 내용에 대한 콘텐츠/제목이있는 서브 페이지를 포함하는 각 페이지의 컨테이너를 만드는 JavaScript가 포함 된 일반 페이지 file-all.html이어야합니다.

지금 우리는 Python을 사용하여 file-0.html 정적 페이지의 HTML을 생성 한 다음 AJAX 페이지의 JavaScript를 생성합니다. 이것이 작동하는 동안, 꽤 작은 프로젝트를 위해 많은 코드 중복이 있음을 의미합니다. <h1> 제목이 래핑 된 클래스를 변경하려고 할 때마다 약간 다른 구문으로 두 위치를 변경해야합니다.

페이지를 생성하는 모든 코드 (또는 가능한 한 많은 언어)가 하나의 언어로 표시 될 수 있도록이 문제를 해결하는 좋은 방법이 있습니까? 대역폭은 문제이므로 가능한 경우 AJAX를 통해 HTML을 전송하지 않으려 고합니다.

답변

1

당신은 좋은 두 가지 옵션이 있습니다 :

  • 는 콧수염과 같은 템플릿 언어로 페이지 생성 로직을 쓰기 (http://mustache.github.com/). 그런 다음이 템플릿을 Python (서버 측)과 Javascript (클라이언트 용)로 컴파일 할 수 있습니다. 두 버전 모두에서 소비되는 데이터는 동일하며 하나의 템플리트 정의 만 유지하면됩니다.

  • 모든 것을 자바 스크립트로 작성하고 JS를 서버에서 실행하십시오. 적어도 두 가지 좋은 서버 측 JS 엔진, V8과 Apache Rhino가 있습니다.

0

서버를 사용하여 페이지를 렌더링하고 AJAX 응답으로 캡처 할 수 있습니다. 이렇게하면 코드가 중복되는 것을 피할 수 있지만 클라이언트가 직접 처리하지 않고 각 페이지를 렌더링하도록 서버에 쿼리해야하기 때문에 효율성이 떨어질 수 있습니다 (문제는 그리 중요하지 않음). 너무 많은 대역폭을 차지해서는 안되며, 단지 HTML이기 때문에 (모든 종류의 장소에서 템플릿을 던지지 않는 한). 물론이 접근 방식은 동적 웹 사이트를 사용하는 경우에만 작동합니다.

또는 JavaScript로 렌더링 논리를 모두 구현하고 PyV8과 같은 것을 사용하여 Python 내에서 실행할 수 있습니다. 나는 이것의 효율성 (그리고 온건함)에 의문을 제기한다.

관련 문제