gpt4 book ai didi

javascript - 开发 Gnome Shell 和扩展时应该使用 ES6 还是 Lang 类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:50 30 4
gpt4 key购买 nike

我正在开发一个简单的 gnome shell 扩展,在 gnome shell repo 的 HACKING.md 中,它说我们应该使用 new Lang.Class() 语言初始化类的框架。

但是,当我查看官方的 gnome-shell 扩展 repo 示例时,每个扩展都使用 es6 类语法而不是 new Lang.Class()

所以,我的问题是:我应该为 shell 扩展使用 es6 类语法并使用 new Lang.Class() 框架来为 gnome-shell 本身做贡献吗?另外,我在哪里可以获得有关 gnome-shell 是什么架构以及我可以使用的完整 api 的更多信息?我搜索谷歌,所有信息似乎都已损坏或过时,这让像我这样天真的人感到非常失望。

谢谢。

最佳答案

https://gitlab.gnome.org/GNOME/gnome-shell/issues/530#note_308621

以下是 gnome-shell 开发者的回答:

So, my question is: Should i use es6 class syntax for shell extensions and use the new Lang.Class() framework for contributing to gnome-shell itself?

目前:是的。

gjs 中对 ES6 类的支持还比较新,这就是为什么你仍然发现很多使用以前使用的 Lang.Class 框架的原因。在 gnome-shell 的情况下,还有一个额外的扩展形式的复杂性:

const Lang = imports.lang;

const Foo = new Lang.Class({
Name: 'Foo'
});

// this works
class Bar extends Foo {}

class Baz {}

// this doesn't
var Quz = new Lang.Class({
Name: 'Quz',
Extends: Baz
});

计划当然是移植 gnome-shell 以使用 ES6 类,但它会破坏所有仍然使用 Lang.Class 继承自 gnome-shell 中定义的类的扩展。所以这不是我们应该逐渐潜入的东西,而是一个明确的开关,有足够的余地让扩展开发人员在必要时调整他们的代码(我希望在 3.32 周期的早期选择一个本地分支,所以敲木头)。

所以长话短说:

新的应用程序或扩展应该明确使用 ES 6 类,我会建议现有类的开发人员认真考虑移植。

更笼统地说:使用问题跟踪器作为支持论坛是非常低效的,因为当问题关闭时,任何答案都会变得模糊不清,所以除了最初的“报告者”之外,可能没有人从中受益。这导致开发人员时间的使用非常糟糕(没有花在解决实际问题上)。

关于javascript - 开发 Gnome Shell 和扩展时应该使用 ES6 还是 Lang 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52176326/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com