EmberCLI:即将出现在您身边的 Discourse!

我们计划将 Discourse 的资源管道迁移至 EmberCLI。EmberCLI 是开发 Ember 应用的标准方式,而 Discourse 当前的做法长期以来让那些具有 Ember.js 背景的新人感到困惑。

背景

Discourse 已经存在了很长时间,其诞生早于 EmberCLI。事实上,在当时,使用类似 Rails 资源管道的方式被视为最佳实践。多年来,我们在 Ember 应用上不断叠加更多功能,包括 JavaScript 模块、Babel.js 和源码映射,但我们认为 Rails 资源管道已被推至极限。一些新功能(如 async/await)很难集成到当前系统中。

在 Discourse 的下一个主要版本(2.5)中,我们计划迁移到 EmberCLI。这将需要相当长的时间,因此我们将尽力确保前后端应用的两个版本同时可用。勇于尝试的用户可以提前启用 EmberCLI,而其他用户则可以继续使用当前版本,直到我们确认系统稳定为止。

路线图

  1. 将现有模式迁移到 EmberCLI 模式:我们已在 2.4 版本中初步尝试了部分迁移。基本目标是将我们的 JavaScript 代码逐步调整为与 Ember-CLI 期望的格式高度一致。这包括:

    • 从统一路径导入所有内容
    • 为原始 Handlebars 和 Ember Handlebars 使用不同的文件扩展名
    • 消除计算属性相关的弃用警告
    • 将自定义的 Location 模块替换为 Ember 的 Location 模块
  2. 通过 EmberCLI 启动 Discourse:这可能会在修复第(1)步中的问题后引入新挑战,因此需要重复上述方法。

  3. 集成主题组件和插件:我们需要进行一些调研,以确保现有扩展能够尽可能无缝地集成到 Discourse 中。

  4. 识别任何性能(或其他)瓶颈:新系统应至少与当前系统一样快,甚至更快。

  5. 制定切换时间表:时间安排需足够宽松,以便用户有充足时间进行功能测试并提供反馈。

优势

完成迁移后,许多当前存在故障或难以实现的功能(如源码映射和 async/await)将能够正常工作。

此外,对于仅希望专注于 Discourse 前端部分的开发者,我们或许可以设置一种环境,使他们只需将 EmberCLI 指向类似 try.discourse.org 的服务器,即可在前端应用上进行开发,而无需运行完整的 Ruby/Rails 服务器以及 Redis/Postgres 数据库。

这将是一个庞大的项目,但最终我们的应用将因此变得更加出色!

38 个赞

谢谢 Robin!当然,这一重点对我们来说非常重要。

如果您需要我们测试任何分支,请随时告知。

附:我完全能想象这次迁移需要多少工作量,因此非常感谢您的付出。

13 个赞

你们是否也计划最终让 Discourse 插件成为 Rails 插件?那将非常棒!:smiley: Rails 本身为插件提供了许多生成器。此外,Discourse 是最大的开源 Rails 应用,因此或许将双方的努力结合起来会很有好处。

这是一个不同且更为复杂的请求,不应与此工作相关联。

7 个赞

我们将开始合并一些重大的模板代码检查变更。这些变更大多应能“直接生效”,但预计会出现一些回归问题。我们将尽力快速修复这些问题,因此请报告任何异常情况,例如用户界面元素未按预期更新。

7 个赞

今天我合并了一个大型提交,将 app/assets/javascripts/discourse 文件夹中的所有 .js.es6 文件重命名为 .js。这是为了符合 Ember CLI 标准的文件命名方式迈出的重要一步。

接下来将支持 .js 文件的转译,并弃用 .es6 扩展名。

13 个赞

@eviltrout

我刚刚发现了这个。这项工作进展如何?:slight_smile:

2 个赞

很好。@eviltrout 几天前刚刚合并了这个提交:

这是朝着这一目标迈出的巨大里程碑。

10 个赞

太棒了,对此非常期待。@angus @merefield 也会很喜欢的。:heart:

7 个赞

是的,你现在就可以在开发模式下运行 Ember CLI!等它用起来更顺手一些后,我很快会发布更多内容。

11 个赞

很期待!:slight_smile:

4 个赞