Luk*_*ggy 7 sql ace-editor typescript angular
介绍:
我有一个 Angular 应用程序,可以使用 ACE 编辑器 ( https://ace.c9.io/ ) 编写自定义 SQL 语句。尽管有模式和主题SQL
,但我想根据我的要求创建自定义模式和自定义主题。
设置:
我遵循了本教程:https://blog.shhdharmen.me/how-to-setup-ace-editor-in-angular
ng new ace-app
(角度13.3.2)npm install ace-builds
(ACE-构建 1.4.14)component.ts
import * as ace from 'ace-builds';
...
public aceEditor: ace.Ace.Editor;
@ViewChild('editor') private editor!: ElementRef<HTMLElement>;
...
ngAfterViewInit(): void {
// I don't understand why we don't set the "basePath" to our installed package
ace.config.set('basePath', 'https://unpkg.com/ace-builds@1.4.12/src-noconflict');
this.aceEditor = ace.edit(this.editor.nativeElement);
if (this.aceEditor) {
this.aceEditor.setOptions({
mode: 'ace/mode/sql',
theme: 'ace/theme/sqlserver',
});
}
Run Code Online (Sandbox Code Playgroud)
component.html
<div #editor></div>
Run Code Online (Sandbox Code Playgroud)
结果:
编辑器正在工作,但现在我需要以某种方式添加自定义模式和主题。
问题和疑问:
basePath
如果我已经安装了该软件包(由于编辑 1 而已过时),将 设为外部 URL 是否正确?编辑1:
我设法摆脱了这行代码:
ace.config.set('basePath', 'https://unpkg.com/ace-builds@1.4.12/src-noconflict');
Run Code Online (Sandbox Code Playgroud)
通过直接导入主题和模式:
import 'ace-builds/src-noconflict/mode-sql';
import 'ace-builds/src-noconflict/theme-sqlserver';
Run Code Online (Sandbox Code Playgroud)
其余代码无需更改。
在查看了几个项目和问题后,我发现为 ACE 编辑器实现自定义主题和模式的最佳方法是将现有主题和模式./node-modules/ace-builds/src-conflict
从./src/assets/ace
.
例子:
复制一个现有模式(以及可选的主题),该模式代表您所需的语法,突出显示最多,在我的例子中是mode-sql.js
. 我将文件复制到./src/assets/ace
并更改了导入component.ts
:
import 'ace-builds/src-noconflict/mode-sql';
import 'ace-builds/src-noconflict/theme-sqlserver';
Run Code Online (Sandbox Code Playgroud)
到:
import '../../../../assets/ace/mode-sql.js';
import '../../../../assets/ace/theme-sqlserver.js';
Run Code Online (Sandbox Code Playgroud)
其他一切都完全按照最初问题中的描述进行保存。从那里您可以开始更改模式和主题的名称,根据您的要求更新规则和样式。
归档时间: |
|
查看次数: |
1963 次 |
最近记录: |