Ogni volta che crei o installi un tema o un componente, Discourse gli assegna un ID. Se visiti la pagina di quel componente, dovresti vedere quell’ID nell’URL (il numero alla fine).

Quando quel componente viene aggiunto al tuo tema, il suo ordine di esecuzione sembra basarsi sul suo ID, a un livello molto basilare (facendo un console.log senza alcun deferimento). Quindi, il 233 verrà eseguito prima del 234 e così via.
Questo funziona per la maggior parte dei casi perché le modifiche successive vengono solitamente aggiunte in nuovi componenti, quindi funziona semplicemente.
A lungo termine, potremmo far sì che l’ordine rispetti quello dell’elenco dei componenti che hai aggiunto al tema.
ma al momento non è previsto in nessuna roadmap.
Ciò di cui hai realmente bisogno è l’ordine degli inizializzatori. Non credo che tu possa farlo a meno che non sposti il tuo codice nel nuovo modo di creare il JavaScript del tema. Questo metodo ti consente di assegnare un nome e un ordine di esecuzione all’inizializzatore. Ad esempio, supponiamo di avere questo file
/javascripts/discourse/initializers/initialize-for-foo.js
e che appaia così:
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "foo",
initialize() {
withPluginApi("0.8.7", api => {
console.log("foo")
});
}
}
e che abbia un altro inizializzatore che appare così:
/javascripts/discourse/initializers/initialize-for-bar.js
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "bar",
initialize() {
withPluginApi("0.8.7", api => {
console.log("bar")
});
}
}
Se voglio assicurarmi che bar venga eseguito dopo foo, posso aggiungere un argomento after: ad esso, il che garantirà che venga eseguito dopo il nome dell’inizializzatore che passo lì. Quindi, per far sì che bar venga eseguito dopo foo, farei questo in
/javascripts/discourse/initializers/initialize-for-bar.js
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "bar",
+ after: "foo",
initialize() {
withPluginApi("0.8.7", api => {
console.log("bar");
});
}
};