发行列车已经启动! Asciidoctor.js 的1.5.0版本已经发布,并且现在可以在http://bower.io[Bower]和https://www.npmjs.org[npm]中获得。这次发布是向着使Asciidoctor.js在JavaScript生态系统中广泛可用的重要一步。
Asciidoctor 在 JavaScript 中。 它曾是一个梦想。 然后它成为了一个原型。 现在,它是真实的交易。
Important
|
当升级到Asciidoctor 1.5.0时,请参阅http://asciidoctor.org/docs/migration/[迁移指南]了解有关如何迁移您内容的详细信息。 |
版本亮点
Asciidoctor.js是Asciidoctor。
如在 Asciidoctor 1.5.0的发布说明中提及的,我们努力使Asciidoctor.js(JavaScript)和Asciidoctor核心(Ruby)保持一致。这意味着你可以期待Asciidoctor.js能像原版一样解析和转换文档。连包含内容的功能也能正常工作!
Warning
|
实现某些功能,比如包含操作,需要特别考虑,因为JavaScript和Ruby是不同的环境,甚至在不同的JavaScript环境之间也有关键的差异! 例如,在Ruby中读取包含文件仅仅是使用普通的Ruby IO API的问题。在浏览器环境中,我们必须使用`XMLHttpRequest`(即Ajax)作为IO API。如果Asciidoctor.js运行在Node.js上,我们必须使用Node IO API, |
请放心,我们正在继续努力,以消除任何差异,并将Asciidoctor核心的所有出色功能带到JavaScript上。
继续阅读,学习如何获取Asciidoctor.js!
使用Asciidoctor.js比以往任何时候都简单。
如果你是一个前端或后端的JavaScript开发者,你只需一个命令就能获取最新版本的Asciidoctor.js。
Bower 包
$ bower install asciidoctor.js --save
Tip
|
可选的 --save 标志会自动将包添加到项目的依赖项中。
|
一旦安装了该软件包,你就可以在HTML页面中添加以下的 script
标签:
<script src="bower_components/asciidoctor.js/dist/asciidoctor-all.min.js"></script>
asciidoctor-all.min.js` 是一个`压缩`版,并且包括了 Asciidoctor 核心,扩展 API 和 Opal。
这是一个简单的例子,展示了如何利用`doctype: 'inline'`选项和`showtitle`属性,将AsciiDoc转换为HTML5。
var asciidoc = "http://asciidoctor.org[*Asciidoctor*] " +
"running on https://opalrb.com[_Opal_] " +
"brings AsciiDoc to the browser!";
var options = Opal.hash2(['doctype', 'attributes'], {doctype: 'inline', attributes: ['showtitle']});
var html = Opal.Asciidoctor.$convert(asciidoc, options);
console.log(html);
请查阅https://github.com/asciidoctor/asciidoctor.js#front-end-development[前端开发指南]以了解更多关于Bower包的信息。
NPM包
$ npm install asciidoctor.js --save
Tip
|
可选的 --save 标志会自动将包添加到项目的依赖项中。
|
一旦包安装好后,首先要做的是使用 require
加载 asciidoctor.js
模块,然后你就可以开始使用API了:
var asciidoctor = require('asciidoctor.js')(); // (1)
var opal = asciidoctor.Opal; // (2)
var processor = null;
var useExtensions = true;
if (useExtensions) {
processor = asciidoctor.Asciidoctor(true); // (3)
}
else {
processor = asciidoctor.Asciidoctor(); // (4)
}
var content = "http://asciidoctor.org[*Asciidoctor*] " +
"running on https://opalrb.com[_Opal_] " +
"brings AsciiDoc to Node.js!";
var options = opal.hash2(
['doctype', 'attributes'],
{doctype: 'inline', attributes: ['showtitle']});
var html = processor.$convert(content, options); // (5)
console.log(html); // (6)
-
加载Asciidoctor.js库
-
检索并给顶级Opal命名空间创建别名
-
启用扩展的 Asciidoctor 实例化
-
不带扩展实例化Asciidoctor
-
使用Asciidoctor.js将AsciiDoc内容转换为HTML5
-
将HTML5输出打印到控制台
将文件保存为`sample.js`并使用`node`命令运行它:
$ node sample.js
你应该在终端中看到以下输出:
<a href="http://asciidoctor.org"><strong>Asciidoctor</strong></a> running on <a href="https://opalrb.com"><em>Opal</em></a> brings AsciiDoc to Node.js!</p>
Important
|
要在Asciidoctor.js中取得成功,理解如何在JavaScript环境中处理Ruby对象是很重要的。我们建议你浏览https://opalrb.com[Opal文档]以学习方法名是如何映射的以及它所期望的数据类型。 |
查看https://github.com/asciidoctor/asciidoctor.js#back-end-development[后端开发指南]以了解更多关于npm包的信息。
Asciidoctor.js在Node上变得越来越火了。
Node.js 是最热门的 JavaScript 发生地,而 npm 是管理和分发这种热度的包管理器。我们希望 Asciidoctor.js 成为这个生态系统的一部分。开始构建工具,我们也需要它存在于那里。这就是为什么我们迈出了打包 Asciidoctor.js 作为 npm 包的第一步…事实上,是好几个!Asciidoctor 现在有了一个新的游乐园!
这里是已经发布的npm包:
- asciidoctor.js
-
Asciidoctor.js的主要npm包
- grunt-asciidoctor
-
一个用于在你的http://gruntjs.com[Grunt]项目中处理AsciiDoc源文件的npm包。
社区已经开始如此使用这些包:
- asciidoc-preview (Atom 编辑器)
-
一个用于Atom的插件,可以在你输入时即时显示文档预览!
- asciidoc-preview (Brackets Editor)
-
一个用于Brackets的扩展,它能在你打字时显示文档的预览!
- grunt-asciidoctor-assemble
-
一个为http://gruntjs.com[Grunt]创建的静态网站生成器,由https://github.com/tedbergeron[@tedbergeron]开发
当然仍然存在挑战,但我们将会解决它们。前往https://github.com/asciidoctor/asciidoctor.js[Asciidoctor.js 项目]来参与吧。
我们来玩这个新游戏吧!
Asciidoctor.js 在 JVM 上
你没有看错。浏览器并不是唯一支持JavaScript的环境。(我们说的不是那些从浏览器中逃出来的JavaScript引擎,比如Node.js。)我们讨论的是最多用途的多语言运行时环境,JVM(Java虚拟机)。
Alex Soto 正在致力于将 Asciidoctor.js 集成进 AsciidoctorJ,这样您就可以在 JVM 上使用 Nashorn、http://dynjs.org[dynjs] 以及其他在其上运行的 JavaScript 引擎。https://github.com/rahmanusta/AsciidocFX[AsciidocFX 项目]已经在 Nashorn 上使用 Asciidoctor.js,所以这不仅仅是一个想法!
要确保Asciidoctor.js在JVM上顺畅运行,仍然有几个挑战需要解决,比如要实现包含功能的工作。请前往https://github.com/asciidoctor/asciidoctorj[AsciidoctorJ项目]参与并帮助实现这一目标!
致谢
Asciidoctor.js 与 Asciidoctor 核心的对齐是一项重大努力。它需要很多人的输入,他们真的团结起来迎接这个挑战。
我们特别感谢https://github.com/opal/opal/graphs/contributors[Opal开发者],特别是Adam Beynon、meh和Elia Schito,他们让Asciidoctor.js成为现实。他们对我们的努力做出了积极响应,对Opal进行了更改和修复,并普遍提供了让我们持续前进的反馈。
我们还要感谢Anthonny Quérouil,他为Asciidoctor.js制作了一个Grunt构建,用以编译、聚合和压缩,同时帮助将成品发布到Bower和npm上。
感谢所有测试了Asciidoctor.js的人,无论是直接测试还是通过使用工具。你们的参与帮助Asciidoctor.js成为了真正的实用工具!
如果您有任何问题或反馈,我们鼓励您参与https://discuss.asciidoctor.org[讨论列表]。我们在那里与您相见!