VS Studio 코드 에디터에서 치환 코드가 작동하지 않음

로컬호스트의 hbs 폴더에서 코드를 가져와 다른 hbs 폴더에 넣으면 동작하지 않습니다. 텍스트가 삽입되고 해당 페이지에 표시되긴 하지만, 기능이 전혀 없습니다. 페이지를 새로고침하면 모든 것이 초기화되는데, 이는 단순히 문자열이기 때문입니다.

도움을 주실 수 있을까요?

예를 들어 interface.hbs의 모든 내용을 account.hbs에 삽입하여 기능이 동작하게 하려면 어떻게 해야 하나요?

이 질문에 대한 답변은 많은 사람들에게 도움이 될 것 같습니다.

답변 주셔서 감사합니다

사실은 그보다 훨씬 더 복잡합니다. 이것은 에디터와는 무관하며, VS Code는 훌륭한 선택입니다.

Discourse는 MVC 기반의 싱글 페이지 앱으로, 프론트엔드에는 EmberJS를 사용하며 Routes, Models, Controllers, Templates를 활용합니다.

보통 Templates만 변경해서는 충분하지 않습니다.

EmberJS에 대해 조금 읽어보는 것이 정말로 도움이 될 것입니다.

예를 들어, 기능이 작동하지 않는 이유 중 하나는 Controllers가 서로 다르기 때문입니다.

이 앱의 자바스크립트 부분과 관련된 모든 Controllers는 다음과 같습니다:

https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/controllers/preferences

여기서 약간의 복잡함은 때때로 Components도 Controllers와 마찬가지로 액션에 반응한다는 점입니다.

그 위에 각 Routes에 어떤 Model이 제시되는지도 고려해야 할 수 있습니다.

preferences 접두사를 가진 preferences Routes는 여기 있습니다:

https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/routes

더 복잡하게는, Ember가 보는 데이터는 거의 항상 백엔드에서 원래 전달되므로, 백엔드의 Rails Routes, Controllers(그리고 종종 Models) 및 Serializers의 영향을 받습니다. https://guides.rubyonrails.org/ 를 참고하세요.

코어(핵심 부분)를 수정하려는 건가요? (거의 확실하게 그렇게 하지 않는 것이 좋습니다) 아니면 플러그인을 개발 중인가요? 아직 확인하지 않았다면 초보자를 위한 디스커스 플러그인 만들기 1부: 기본 플러그인 만들기를 살펴보세요.

네, 다른 곳으로 몇 가지 함수를 이동해야 해서요.

플러그인에서 “함수를 다른 곳에서 가져오는” 것이 가능합니다. Discourse를 포크하면, 한 달 이상 사용하려고 할 때 후회하게 될 것입니다. 저는 플러그인으로 discourse를 설치하고 관리할 수 있도록 해주는 대시보드를 개발했습니다.

discourse에 플러그인을 업로드했고, plugins/notebook-main/assets/javascripts/discourse/controllers/notebook.js.es6 파일을 필요한 인터페이스 파일로 교체했습니다. hbs 템플릿에도 동일한 작업을 수행했습니다.

이론적으로는 모든 것이 작동하지만, 변경 사항을 저장하지 못합니다.

Uncaught Error: Property set failed: object in path "model.user_option" could not be found.
    Ember 3
    save notebook:194
    _join backburner.js:995
    join backburner.js:760
    Ember 4
    _triggerAction d-button.js:137
    click d-button.js:106
    Ember 2
    _run backburner.js:1013
    _join backburner.js:989
    join backburner.js:760
    Ember 6
    jQuery 8
    initialize click-interceptor.js:15
    initialize app.js:47
    runInstanceInitializers Ember
    each dag-map.js:231
    walk dag-map.js:145
    each dag-map.js:75
    topsort dag-map.js:83
    Ember 4
    invoke backburner.js:338
    flush backburner.js:229
    flush backburner.js:426
    _end backburner.js:960
    end backburner.js:710
    _run backburner.js:1015
    _join backburner.js:989
    join backburner.js:760
    Ember 2
    jQuery 12