You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何理解Javascript Epub阅读器Foliate源码中的imports风格模块导入语法

GJS imports导入语法说明

是什么

这是GNOME生态专用的JavaScript运行时GJS的特有模块导入语法,早于ES模块规范实现,通过全局挂载的imports对象加载所有模块,你看到的这段代码属于Linux桌面EPUB阅读器Foliate的源码,该项目就是基于GJS开发的。

适用场景

  • 仅可在GJS运行时环境下使用,所有GNOME桌面应用、Shell扩展、GJS脚本都会用到该语法
  • 支持导入两类资源:GObject生态的系统公共库,以及项目内自定义的JS模块

具体使用方式

导入系统公共库

所有支持GObject内省的系统库都会被挂载到imports.gi命名空间下,直接解构即可获取对应的库实例:

// 导入GTK图形界面库、Gio IO操作库
const { Gtk, Gio } = imports.gi

GJS自带的原生工具库也直接挂载在imports下,比如国际化工具:

// 导入gettext的复数翻译方法
const ngettext = imports.gettext.ngettext

导入项目自定义模块

GJS会自动把项目根目录下的JS文件、子目录按路径结构挂载到imports对象上,无需声明相对路径和文件后缀:
你给出的代码里的自定义模块导入规则如下:

  • imports.utils对应项目根目录下的utils.js文件
  • imports.epubView对应项目根目录下的epubView.js文件
  • imports.contents对应项目根目录下的contents.js文件
    如果是嵌套目录下的文件,按层级写路径即可,比如imports.lib.xxx对应项目根目录lib文件夹下的xxx.js文件。

补充说明

目前GJS已经支持标准ES6模块的import/export语法,这套imports写法属于历史兼容方案,现存的GJS生态项目中仍然被大量使用。

内容的提问来源于stack exchange,提问作者pinche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:39:05