Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在开发Gnome外壳和扩展时,我应该使用ES6或Lang类吗?_Javascript_Linux_Gnome Shell_Gnome Shell Extensions_Gjs - Fatal编程技术网

Javascript 在开发Gnome外壳和扩展时,我应该使用ES6或Lang类吗?

Javascript 在开发Gnome外壳和扩展时,我应该使用ES6或Lang类吗?,javascript,linux,gnome-shell,gnome-shell-extensions,gjs,Javascript,Linux,Gnome Shell,Gnome Shell Extensions,Gjs,我正在开发一个简单的gnome shell扩展,在gnome shell repo的HACKING.md中,它说我们应该使用new Lang.Class()语言框架来初始化一个类 但是,当我查看官方gnome外壳扩展repo示例时,每个扩展都使用es6类语法,而不是new Lang.class() 因此,我的问题是:我是否应该使用es6类语法进行shell扩展,并使用new Lang.class()框架来帮助gnome shell本身?另外,我在哪里可以获得关于gnome外壳是什么体系结构以及我

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

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

因此,我的问题是:我是否应该使用es6类语法进行shell扩展,并使用
new Lang.class()
框架来帮助gnome shell本身?另外,我在哪里可以获得关于gnome外壳是什么体系结构以及我可以使用的完整api的更多信息?我在谷歌上搜索,所有的信息看起来都是破烂或过时的,这对像我这样天真的人来说是非常失望的

谢谢。

以下是gnome外壳开发人员的答案:

所以,我的问题是:我应该为shell扩展使用es6类语法,并为gnome shell本身使用新的Lang.class()框架吗

现在:是的

gjs中对ES6类的支持仍然相对较新,这就是为什么您仍然发现以前使用过的Lang.Class框架有很多用途。在gnome外壳的例子中,扩展的形式还有一个额外的复杂性:

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外壳移植到ES6类,但它将打破所有仍然使用Lang.Class继承gnome外壳中定义的类的扩展。因此,这不是我们应该逐渐潜入的东西,而是一个明确的切换,有足够的余地让扩展开发人员在必要时调整他们的代码(我希望在3.32周期的早期找到一个本地分支,所以请继续)

So TL;博士:

新的应用程序或扩展应该明确地使用ES 6类,并且我建议对现有的开发人员认真考虑移植。 更笼统地说:使用问题跟踪者作为支持论坛是非常无效的,因为当问题结束时,任何答案都会变得模糊不清,因此除了最初的“记者”之外,可能没有人从中受益。这使得开发人员的时间利用率很低(没有花在解决实际问题上)。

从gnome 3.32开始,您必须使用新的ES6方式。