将主题 Javascript 分成多个文件

复杂的 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 上建议更改。

27 个赞