2011-01-24 3 views
5

향후 프로젝트에 Markdown을 포함시킬 계획입니다. 과거에는 미리 패키지화 된 서버 측 Markdown 구문 분석기를 사용하고 HTML 출력을 다시 위생 처리 (불필요한 단계?)하고 클라이언트에게 전달했습니다.Markdown 구문 분석을 클라이언트 측에 위임 할 때의 단점은 무엇입니까?

뷰 렌더링의이 부분을 클라이언트로 오프 로딩하는 데 관심이 있습니다. 이전에는 레일스 애플리케이션에서 큰 성공을 거둔 클라이언트 측 Javascript Markdown 파서를 사용했습니다. 본문 객체를 위임 받아 클래스 markdown-parseme 등의 DOM 삽입을 감시 한 다음 구문 분석하고 원본 텍스트를 결과로 바꿉니다.

그러나 내가 야생에서 생산하는 사이트를 고려하고있는 것은 이번이 처음입니다. 클라이언트가 Markdown 렌더링을 처리 할 때 발생하는 문제 및 보안 문제는 무엇입니까? 이러한 문제를 고려한 특정 라이브러리가 있습니까?

EDIT : 마음에 샘은 "Javascript가없는 사람들은 무엇인가?"라는 분명한 염려가 있습니다. Javascript가 활성화되지 않은 브라우저를 감지하고 클라이언트가 JS가없는 것으로 플래그를 지정할 수있는 메커니즘을 구현하고 구문 분석을 서버 측으로 이동시키는 것은 Google의 기능에 완벽하게 해당합니다. 호환성에 대한 일반적인 문제를 넘어서 Markdown 구문 분석을 클라이언트에 맡기는 데 심각한 문제가 있는지 조사하고 싶습니다. 출력 캐싱없이 알맞은 크기의 페이지를 렌더링하는 것은 응답 시간에 무시할 수없는 양을 추가하고 서버로드를 통해 사용자의 95 %에 해당하는 서버에서 작업을 옮길 수 있다면 좋을 것입니다 .

+0

왜 클라이언트로 이동 했습니까? 그냥 AJAX 호출을 저장하려면? – sdleihssirhc

+0

명백한 문제는 JavaScript를 사용하도록 설정해야한다는 것입니다. –

+1

많은 웹 애플리케이션의 경우 자바 스크립트가 없다는 것은 처음에는 애플리케이션을 사용하지 않는다는 의미입니다. 그렇지 않으면 전혀 다른 애플리케이션을 사용하고있는 것입니다. – Pointy

답변

1

클라이언트가 Markdown 구문을 구문 분석 할 수 있다는 가정은 (일부 사람과 검색 엔진의 경우) 올바르지 않을 수 있습니다. 이 그룹에 서버 파싱 된 버전을 제공하면 코드가 복제됩니다. 서버는 일반적으로 XSS 등을 방지하기위한보다 강력한 도구를 제공합니다 (서버가하는 것처럼 사용자 콘텐츠의 HTML을 안전하게 생성하기 때문입니다).

0

markdown-js 아직 완료되지 않았지만 HTML 변환의 다른 단계보다는 AST를 사용하는 markdown의 하위 집합에 대한 JavaScript 라이브러리입니다. 처음부터 정상적인 HTML을 생성해야합니다. 나는이 접근법이 적절히 실행된다면 클라이언트 측에서 렌더링을 효과적으로 할 수 있다고 생각한다.

의도적으로 포함 된 HTML을 지원하지 않습니다.

3

요즘 대부분의 사람들은 자바 스크립트를 사용하므로 문제가되지 않습니다. showdown 라이브러리는 클라이언트 측 렌더링에 적합합니다.

관련 문제