discurse theme develop

(Kylin Feng) #1

discourse如何进行本地开发,主要是主题的改变,在定制里面页面跳转的时候js就不执行了,所以无法实现功能,求主题开发的方式。

(Erick Guan) #2

首先这是一个 Ember.js Application。我没法写详细,就简单回答一下。每一个页面的跳转都是从 Router 开始 -> Model -> Views -> Controller -> Components。默认是单向传递的。
除此之外,有一些性能需要的部分是用 vdom 渲染的。比如主题页面和头部渲染的过程。

有两种办法去找执行点:

  1. Discourse API plugin-api.js.es6: https://meta.discourse.org/t/a-new-versioned-api-for-client-side-plugins/40051 比如 onPageChange 是可以使用的。
  2. 还有的话你可以强行去找对应的组件然后打开它。
const PageTracker = require('discourse/lib/page-tracker').default;
PageTracker.current().on('change', function (url) {
    // You may not need the timeout depending on exactly what you are doing.
    setTimeout(function () {
        updatePageContentHere();
    }, 100);
});
1赞