【问题标题】:How to use mirror worker for ace editor with ace-builds如何在 ace-builds 中使用镜像工作者进行 ace 编辑器
【发布时间】:2017-02-26 06:10:12
【问题描述】:

我正在使用ace-builds 使用 webpack 构建我的 ace 编辑器应用程序。

我需要使用自定义工作者进行语法验证。 wiki页面here建议扩展一个名为mirror的worker,通过关注获得。

var Mirror = require("ace/worker/mirror").Mirror;

但是 ace-builds 似乎没有提供这个工人。如何使用 ace-builds 创建自定义 worker 进行语法验证?

非常感谢有关如何使用自定义语法验证工作程序(对于自定义编程语言)构建 ace 编辑器应用程序的任何其他建议。 (我不能使用应该与 require.js 一起使用的 ace 库,因为它使用 webpack 不知道的require.toUrl。请参阅github issue

【问题讨论】:

    标签: ace-editor


    【解决方案1】:

    ace-builds 存储库仅提供已构建的 worker,并且在单独的文件中没有 ace/worker/mirror 的来源。

    您可以使用 json worker 来引导您的自定义,因为它只包含 200 行额外代码 https://github.com/ajaxorg/ace-builds/blob/master/src/worker-json.js#L1409-L1699

    将该文件重命名为 "<mymode>_worker.js" 并在末尾添加工作人员定义。

    define("ace/mode/<mymode>_worker",["require","exports","module"], function(require, exports, module) {
    "use strict";
    
    var oop = require("../lib/oop");
    var Mirror = require("../worker/mirror").Mirror;
    
    ...
    
    });
    

    【讨论】:

    • 但这也取决于镜像工作者。 github.com/ajaxorg/ace-builds/blob/master/src/… 所以只有这 200 行是行不通的,不是吗?我现在正在做的是从任何工作人员文件中复制镜像工作人员的定义并需要该文件。 github.com/ajaxorg/ace-builds/blob/master/src/… 然后定义了mirror worker。但我想避免将其他人的代码直接放在我的仓库中:)
    • 它包含镜像的定义,以及它的所有依赖项github.com/ajaxorg/ace-builds/blob/v1.2.6/src/…,除了该文件中突出显示的 200 行之外的所有内容都需要为 ace 创建 webWorker。所以我建议在你的 webpack 配置中为 worker 包含完整的 worker-json.js 文件
    • 啊。所以如果我需要worker-json文件,我可以避免需要ace.js文件吗?我会试一试。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多