Dividir tema Javascript em múltiplos arquivos

Temas complexos em JavaScript podem ser divididos em vários arquivos, para manter as coisas bem organizadas.

Para usar essa funcionalidade, basta adicionar arquivos à pasta /javascripts no diretório do seu tema. Esses arquivos não podem ser editados na interface do Discourse, portanto, você deve usar o Theme CLI ou fazer o source do tema via git.

Arquivos JavaScript são tratados exatamente da mesma forma que em core/plugins, então você deve seguir a mesma estrutura de arquivo/pasta. Os arquivos de tema são carregados após core/plugins, então, se os nomes dos arquivos coincidirem, a versão do tema terá precedência.


Como exemplo, você pode agora realizar o que é descrito em Using Plugin Outlet Connectors from a Theme or Plugin adicionando um único arquivo ao seu tema:

/javascripts/my-theme/connectors/discovery-list-container-top/add-header-message.gjs

import Component from "@glimmer/component"; import { service } from
"@ember/service"; export default class HeaderMessage extends Component {
@service currentUser;

	<template>
  Welcome
  {{this.currentUser.username}}
	</template>
}

Para usar a API JS, crie um inicializador:

/javascripts/discourse/api-initializers/init-theme.gjs

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
  // Seu código aqui
});

Se você precisar de um ativo .js totalmente diferente (por exemplo, para um web worker), consulte este tópico.


Este documento tem controle de versão - sugira alterações no github.

27 curtidas