【问题标题】:How to use C libraries to create GNOME app in JavaScript如何使用 C 库在 JavaScript 中创建 GNOME 应用程序
【发布时间】:2014-04-25 21:37:28
【问题描述】:

我是 GNOME 桌面应用程序开发的初学者,所以我想尽可能多地了解它。我已经阅读了为 JavaScript 编写的 developer.gnome.org 上的各种教程。我知道通过 GObject Introspection 我可以访问 JavaScript 中的 C 库。

由于在桌面应用程序中使用 JavaScript 是新事物,因此存在的文档并不多。我想知道是否有任何方法可以知道我可以使用哪些函数和哪些参数来访问某些库。

例如,我可以通过以下方式在 JavaScript 中使用 GTK 创建一个按钮:

this.mybutton = new GTK.Button({some code here});

我怎样才能知道我可以使用的功能的名称?有什么办法可以让我看到为 C 编写的文档来找出 JavaScript 函数的名称?

对于我看到的一些库,this documentation 是为 JavaScript 编写的。任何帮助将不胜感激,以了解有关 GNOME 应用程序开发的更多信息。

【问题讨论】:

  • 我的第一反应是,如果你懂 javascript,你几乎懂 C,所以就使用 C。对于下一个试图帮助的人,这里有一个 JS 中的 hello world 的链接表明 gnome 应用程序的 javascript 是可能的:developer.gnome.org/gnome-devel-demos/3.7/helloWorld.js.html.en
  • @TomCerul 是的,我知道 C,但我想学习在 javascript 中创建应用程序,并想知道如何在 javascript 中使用 C 库。我如何知道我可以使用的函数名称和参数?

标签: javascript desktop-application gnome gjs


【解决方案1】:

我同意你的看法:该主题的文档很少。
大多数时候,我会尝试从其他开发人员那里找到已经编写好的代码,然后将其更改为我想要的。
http://developer.gnome.org 上的 C 文档非常完整,大多数情况下您可以使用几乎相同的方法。
我建议你看看这个网站:http://www.roojs.org/seed/gir-1.2-gtk-3.0/seed/
还有这个:http://zetcode.com/gui/javascriptgtktutorial/
祝你的 JavaScript 开发顺利!!!

【讨论】:

    【解决方案2】:

    Gnome GJS 文档有新主机:

    您仍然可以通过搜索 GIR 文件来获取映射到该 C 库函数的 Javascript 函数。每个库都应该有一个包含 introspection 信息的 XML 文件。

    以我之前提出的一个问题为例。

    grep -rn gdk_keymap_get_default /usr/share/gir-1.0/

    /usr/share/gir-1.0/Gdk-2.0.gir:16781:                c:identifier="gdk_keymap_get_default"
    /usr/share/gir-1.0/Gdk-3.0.gir:15776:      <function name="get_default" c:identifier="gdk_keymap_get_default">
    

    vim /usr/share/gir-1.0/Gdk-3.0.gir +15776

        <class name="Keymap"
               c:symbol-prefix="keymap"
               c:type="GdkKeymap"
               parent="GObject.Object"
               glib:type-name="GdkKeymap"
               glib:get-type="gdk_keymap_get_type">
          <doc xml:space="preserve">A #GdkKeymap defines the translation from keyboard state
    (including a hardware key, a modifier mask, and active keyboard group)
    to a keyval. This translation has two phases. The first phase is
    to determine the effective keyboard group and level for the keyboard
    state; the second phase is to look up the keycode/group/level triplet
    in the keymap and see what keyval it corresponds to.</doc>
          <function name="get_default" c:identifier="gdk_keymap_get_default">
            <doc xml:space="preserve">Returns the #GdkKeymap attached to the default display.</doc>
            <return-value transfer-ownership="none">
              <doc xml:space="preserve">the #GdkKeymap attached to the default display.</doc>
              <type name="Keymap" c:type="GdkKeymap*"/>
            </return-value>
          </function>
    

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2010-10-04
      • 2014-08-23
      相关资源
      最近更新 更多