运行时环境

默认情况下,Asciidoctor.js 会通过鸭子类型(Duck typing)自动检测运行时环境。

配置运行时环境

以下部分涵盖了一个高级话题。对于大多数使用场景,您不需要显式配置运行时环境。

在您被提醒之后,您可以在实例化 Asciidoctor.js 时使用 运行时 配置对象来显式定义运行时环境:

const asciidoctor = require('asciidoctor')({
  runtime: {
    platform: 'browser',
    engine: 'v8',
    framework: 'webextensions'
  }
})

以下是支持的配置值:

  • runtime.platform

    • node: Node.js

    • java: Java (GraalVM)

    • standalone: Standalone (spidermonkey)

    • browser: 浏览器(Chrome, Firefox, Opera, Edge 等)

  • runtime.engine

    • v8

    • graalvm

  • runtime.framework

    • electron

    • webworker

    • spidermonkey

    • phantomjs

I/O 模块

I/O 模块提供了文件读取的实现。

默认情况下,Asciidoctor.js 会根据运行时环境来确定 I/O 模块。要显式定义 I/O 模块,您可以在实例化 Asciidoctor.js 时指定 runtime.ioModule 属性:

const asciidoctor = require('asciidoctor')({
  runtime: {
    ioModule: 'xmlhttprequest'
  }
})

ioModule 可以是以下之一:

  • node: 实现将使用 fs 模块。

  • xmlhttprequest: 实现将使用 XMLHttpRequest 对象。

  • graalvm: 实现将使用一个名为 IncludeResolver 的绑定类:

    context.getPolyglotBindings().putMember("IncludeResolver", new IncludeResolver());
  • spidermonkey: 实现将使用 read 函数。

  • phantomjs: 实现将使用 fs.read 函数。

获取运行时环境

一旦实例化了 Asciidoctor.js,您可以使用 getRuntime 函数来获取运行时环境:

const asciidoctor = require('asciidoctor')()
console.log(asciidoctor.getRuntime())
// { ioModule: 'node', platform: 'node', engine: 'v8', framework: '' }

这对于确保运行时环境已正确确定非常有用。