摩纳哥编辑器工作不正常:样式没有很好地呈现
Monaco Editor not working well: The styles are not being well presented
我在 javascript 普通网络组件中使用 Monaco editor:
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
class CodeEditor extends HTMLElement {
constructor() {
super();
this.css = (...)
this.html = (...)
}
connectedCallback() {
this.attachShadow({
mode: 'open'
});
const root = this.getRootElement();
this.shadowRoot.append(this.getStyles(), root);
this.editor = monaco.editor.create(root, {
value: this.getExampleCode(),
language: 'javascript',
theme: 'vs-dark',
});
}
getRootElement() { return (...) //creates a template dom element and returns it}
getStyles() {return (...)}
getExampleCode() {return (...)}
}
window.customElements.define('code-editor', CodeEditor);
并在我的 HTML 中这样使用:
<div id="code-editor" class="code-editor">
<code-editor></code-editor>
</div>
结果是这样的:
我发现 here that the Monaco editor 不支持在阴影 dom 元素内使用。
为了解决这个问题,我重写了我的代码以便不使用这个 this.attachShadow({ mode: 'open' });
配置,现在可以完美地工作了。
我相信将来我们可以在阴影 dom 元素上使用它(找到更多信息 here)。
我在 javascript 普通网络组件中使用 Monaco editor:
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
class CodeEditor extends HTMLElement {
constructor() {
super();
this.css = (...)
this.html = (...)
}
connectedCallback() {
this.attachShadow({
mode: 'open'
});
const root = this.getRootElement();
this.shadowRoot.append(this.getStyles(), root);
this.editor = monaco.editor.create(root, {
value: this.getExampleCode(),
language: 'javascript',
theme: 'vs-dark',
});
}
getRootElement() { return (...) //creates a template dom element and returns it}
getStyles() {return (...)}
getExampleCode() {return (...)}
}
window.customElements.define('code-editor', CodeEditor);
并在我的 HTML 中这样使用:
<div id="code-editor" class="code-editor">
<code-editor></code-editor>
</div>
结果是这样的:
我发现 here that the Monaco editor 不支持在阴影 dom 元素内使用。
为了解决这个问题,我重写了我的代码以便不使用这个 this.attachShadow({ mode: 'open' });
配置,现在可以完美地工作了。
我相信将来我们可以在阴影 dom 元素上使用它(找到更多信息 here)。