复杂的 JavaScript 主题可以拆分成多个文件,以保持良好的组织性。
要使用此功能,只需将文件添加到主题目录中的 /javascripts 文件夹即可。这些文件无法从 Discourse UI 中编辑,因此您必须使用 Theme CLI 或 从 git 源码化主题。
JavaScript 文件与核心/插件中的处理方式完全相同,因此您应遵循相同的文件/文件夹结构。主题文件在核心/插件之后加载,因此如果文件名匹配,主题版本将优先。
例如,您现在可以通过向主题中添加单个文件来实现 https://meta.discourse.org/t/adding-to-plugin-outlets-using-a-theme/32727:
/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>
}
要使用 JS API,请创建一个初始化器:
/javascripts/discourse/api-initializers/init-theme.gjs
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// 您的代码
});
如果您需要一个完全不同的 .js 资源(例如用于 Web Worker),请查看 此主题。
本文档已版本控制 - 请在 github 上建议更改。