gpt4 book ai didi

javascript - 如何使用 Ace Editor 进行简单的服务器端验证

转载 作者:行者123 更新时间:2023-12-03 11:20:28 25 4
gpt4 key购买 nike

我想用Ace Editor来实现:

  1. 简单的颜色编码语法突出显示
  2. 服务器端验证,然后使用以下方法标记一些有错误的行:

    editor.session.setAnnotations([{行:1,列:0,文本:“消息”,类型:“错误”}]);

我想解析一种新的语言,它是“逐行”解析的,如下所示:

A. GO TO 20
B. TURN LEFT

我已经有一个适用于我的语言的服务器端验证器(Java 库),并且我已经实现了我的 1. 目标

我的疑问是如何整合一切来实现我的第二个目标。 ace 编辑器是否提供类似这样的功能(服务器端验证)?

我在github上看到了这个:https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/javascript_worker.js这看起来像是 JS 的某种外部验证,但我真的不明白 Ace 是否提供了我想要的东西。

如果 ACE 不支持,我该如何实现呢?如果您无法提供完整的示例,我们将不胜感激一些高级“架构”提示...

最佳答案

Ace 没有向服务器发送内容的验证器示例,但它在 webworker 中运行验证器,这有点类似。

解决这个问题的简单方法是向 session 添加更改监听器,并在每次更改时将 session 内容发送到服务器,运行验证器,发送回带有错误位置的 json,并使用 setAnnotations你在问题中表现出的方​​式。

但是每次更改时发送整个文档的速度很慢,因此 ace 仅发送更改,并从中重建文档。

ace 是如何工作的?:
模式有 createWorker创建 WorkerClient 实例的函数, WorkerClient 启动 webWorker 并添加 changeListener到文档。 worker.js使用mirror.js从更改中重建文档,并在超时后调用函数。所有语言特定部分都在该函数中。请参阅json_worker.js如果您觉得难以理解 javascript_worker.js

如果您不想采用幼稚的方法,您可以重用一些 ace webWorker 代码来与服务器同步。对于客户端,您需要将 worker_client.js 中的 postMessage 替换为通过套接字发送,对于服务器,您需要使用 Nodejs 或在 java 中重新实现 mirror.js

但是,在 js 中重新实现语言验证并在 javascript_worker 中使用类似于 jshint 的方式将提供更好的用户体验。您甚至可以使用java to js compiler为此。

关于javascript - 如何使用 Ace Editor 进行简单的服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27141541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com