CKEDitor5와 함께 놀고 있었고 사용자 정의 데이터 프로세서를 만들려고했습니다. toData
변환에서 모델을 사용하고 싶습니다. 그러나이 메서드는 view/DocumentFragment
개체와 함께 호출됩니다. 그래서 내 질문에 내가 그걸 model/DocumentFragment
개체 (또는 데이터 프로세서에서 모델에 액세스하는 방법)로 변환 할 수 있습니다.CKEditor5 사용자 정의 데이터 프로세서의 모델 사용
업데이트 (이 코멘트에 맞지 않을 수) : 나를 더 정확히 내가 뭘하려고하는지 설명 해보자 (또는 이미 지금까지 한) 좀 더 상세하게한다. 내가 모델 자체에 액세스하는 방법을 알아 냈지만, 당신이 지적한 것처럼 나쁜 해결책처럼 보였다.
기본적으로 편집기 데이터를 BBCode로 변환하기 위해 DataProcessor
을 만들고 싶습니다. 충분히 합리적이라고 생각합니다.
한편, toView
방법은 간단합니다. BBCode에서 HTML 로의 변환이 이미 구현 된 것으로 간주 될 수 있습니다 (필자의 경우). 그리고 HTML에서는 (Markdown 프로세서에서 사용하는 것과 동일한 프로세스로) 편집기 데이터를로드하는 것이 쉽지 않은 것처럼 보입니다.
한편, 뷰가 아닌 모델 데이터에서 BBCode로 변환하는 것이 더 쉬워 보입니다. 주로 view/DocumentFragment
개체와 나머지보기 트리가 DOM 또는 HTML의 또 다른 표현이기 때문입니다. 굵은 글씨가 <b>
인지 <strong>
인지는 신경 쓰지 않고 단지 text
노드에 bold
속성이 있는지 여부 만 알고 싶습니다.
모델을 사용하여 HTML에서 사용 된 표현보다는 의미론을 사용하기를 바랍니다. 기본적으로 모든 HTML 태그를 BBCode와 동등한 것으로 매핑하는 것은 약간 무의미한 것처럼 보입니다 (CKE5가 일관된 HTML 태그를 제공하더라도 잘 수행 할지라도). 그래서 내 관점에서 볼 때 모델을 사용하는 것이 더 합리적입니다. 의미 론적 표현에서 "데이터 형식"으로 변환하는 것은 "데이터 형식"(보기 트리, DOM, HTML, 모스 부호)으로 변환 한 후 "표현 맵"을 만드는 것보다 쉽습니다.
RTE 또는 WYSIWYG 편집기를 사용하지 못하게 한 이유는 HTML에서 BBCode로 변환하는 데 어려움이있었습니다. 이제 CKE5는 HTML 형식뿐 아니라 편집기에 표시된 HTML과도 독립적이므로 모델로 변환하기 쉽습니다 (이 뷰 트리에 대해서는 정확히 HTML 형식이므로 말할 수 없습니다. 편집자 - 최소한 콘텐츠 제작물이 만들어내는 것은 아니지만 여전히 충분하지는 않습니다.)
또한 : 그가 (어딘가에 문서 단위) 마크 다운 기능을 가지뿐만 아니라 무엇을했다대로 난 그냥의 DataProcessor
을 설정하는 Plugin
했다. 그게 나쁜 생각이야?
답장을 보내 주셔서 다시 한번 감사드립니다.
귀하의 의견을 봅니다. 나는 BBCode 출력이 뷰 -> DOM -> 원하는 출력 변환의 경우에 해당한다고 생각한다. 에디터를 확장 할 때 당신이 설명한 접근 방식에는 단점이 있다는 점에 유의하십시오. DOM 또는 뷰의 요소 집합은 매우 안정적이므로 한 번만 작업하십시오. OTOH 모델은 유연하며 모든 개발자는 뷰/DOM에서 복잡한 구조로 변환 될 수있는 요소를 찾아 낼 수 있습니다. 포함시킬 모든 새로운 플러그인에 대해 model-> BBCode 변환을 작성해야합니다. –
또한 변환 모델은 까다 롭고이를 위해 여러 가지 도구가 있음에 유의하십시오. 예를 들어, 모델의 텍스트는 "평면"이므로 태그를 직접 분리해야합니다. 제가 말하고자하는 것은 모델을 다른 형식으로 변환하여 다른 사람들이 이미했던 모든 작업을 더 많이 또는 덜 할 수 있다는 것입니다. –
마지막으로 데이터 프로세서를 설정하기 위해 플러그인을 사용하는 것이 좋습니다. –