2011-02-26 3 views
11

최종 사용자가 특정 "변수"에 액세스하여 템플릿에 포함시킬 수있는 웹 페이지 용 HTML 템플릿을 편집 할 수있게하려는 서비스를 만들고 있습니다.레일 최종 사용자 템플릿 엔진 : 액체 대 콧수염 대 다른 사람?

나는이 액체가이 목적으로 설계되었고, 안전하고 (적어도 상대적으로), 대량 생산에 사용된다는 것을 알고있다. 그러나 나는 언어가 콧수염 같은 것에 비해 최종 사용자에게는 상당히 복잡한 것으로 생각한다.

콧수염 소리가 좋지만 보안에 대한 우려가 있습니다 ... 최종 사용자 템플릿에 사용 된 적이 있습니까?

는 기본적으로 I는 I 승 사용할 수있는 템플릿 엔진/최종 사용자 레일을 찾고 :

  1. 안전 - 적어도에 ... 사용자가 코드의 실행을 허용하지 않습니다 서버. 사용자는 클라이언트 측 자바 스크립트를 삽입 할 수 있습니다.
  2. 강력한 - 최종 사용자가 제공된 "변수"를 사용하여 # 1 컨텍스트 내에서 상상할 수있는 거의 모든 웹 페이지를 만들 수 있습니다.
  3. 단순 - 최종 사용자가 구문을 명확하게 적용하기가 쉽습니다.
  4. 자바 스크립트 및 다른 언어로 템플릿 구문을 렌더링 할 수있는 기능이있는 경우 보너스 포인트가 표시됩니다.

액체가 1 : & 2를 충족 하나, 3-4는 충족시키지 않는다. 콧수염은 2-4를 충족 시키지만, # 1에 대해서는 확신 할 수 없으며 협상이 불가능합니다.

통찰력, 경험 또는 의견을 주시면 감사하겠습니다.

답변

3

콧수염은 보간법에 대해 환상적이며 자바 스크립트 평가를 위해 서버 측 취약점을 사용하는 경우 서버 측 취약점에 노출되는 것을 상상할 수 없습니다. 가장 간단하고 강력한 옵션입니다. 프로그래머가 아닌 사람들도 이해할 수 있을지는 모르겠지만 Liquid보다 더 간단하다고 확신합니다.

또 다른 옵션은 BBcode 나 TinyMCE와 같은 리치 텍스트 편집 라이브러리와 같은 간단한 사용자 마크 업 세트를 사용하는 것입니다. 이들은 기능면에서 많이 감소되었지만 평균적인 사람들에게는 사용하기가 더 쉽습니다.

+1

두 가지 이유로 서버 측에서 렌더링이 실제로 필요합니다. 1. Google 및 기타 검색 로봇은 이미 확장 된 "변수"가있는 렌더링 된 페이지를 인덱싱 할 수 있어야합니다. 2. JS가 활성화 된 지금은 응용 프로그램의 요구 사항을 만들고 싶지 않아요 – marcusmateus

+0

5min ?? @Winfield # 1을 명확히해야합니다. 템플릿의 이스케이프되지 않은 문자열에 대해서는 걱정하지 않습니다. 템플릿에서 JS를 허용하므로 다른 포럼에서 문제가 제기되었습니다. 는하지만, 난 정말 렌더링이 두 가지 이유로 서버 측에서 일이 필요합니다 : 이미 확장은 "변수"승/ 1. 구글과 다른 검색 로봇이 완전히 렌더링 된 페이지 인덱스 할 수 있어야합니다 2 JS를 사용하도록 설정하는 것이 꽤 일반적이지만 지금은 응용 프로그램의 요구 사항으로 만들고 싶지 않습니다. BBcode/TinyMCE가 더 간단하다는 점에 동의하지만,이 도구를 사용하면 실제로 앱의 성능이 떨어집니다 (# 2) – marcusmateus

+0

당신이 당신의 견해에 드러내는 방법들에주의를 기울이는 한, 나는 머스탱이 안전하고 당신의 요구에 잘 맞을 것이라고 생각한다. 구문은 끔찍한 것이 아닙니다. 템플릿 엔진이 실행되는 한 쉽게 얻을 수 있습니다. 예를 들어 [데모] (http://mustache.github.com/#demo)를 확인하십시오. –

관련 문제