- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力寻找一个仅从 CDN 运行的最小可运行示例,而不是主要使用本地服务器的现有树内示例。
最佳答案
谷歌搜索后,我发现 https://jsfiddle.net/developit/bwgkr6uq/它只适用于 unpkg.com,所以我主要是将它改编为 cdnjs,这是一个单独的 HTML 文件:
索引.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Monaco editor</title>
<link rel="stylesheet" data-name="vs/editor/editor.main" href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/editor/editor.main.min.css">
</head>
<body>
<div id="container" style="height:400px;border:1px solid black;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs/loader.min.js"></script>
<script>
// require is provided by loader.min.js.
require.config({ paths: { 'vs': 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs' }});
require(["vs/editor/editor.main"], () => {
monaco.editor.create(document.getElementById('container'), {
value: `function x() {
console.log("Hello world!");
}`,
language: 'javascript',
theme: 'vs-dark',
});
});
</script>
</body>
</html>
直播:
http://cirosantilli.com/web-cheat/monaco-editor.html
window.MonacoEnvironment
一些看起来很古怪的东西,但现在没有它似乎可以工作。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Monaco editor no loader</title>
<link rel="stylesheet" data-name="vs/editor/editor.main" href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs/editor/editor.main.min.css">
</head>
<body>
<div id="container" style="height:400px;border:1px solid black;"></div>
<script>var require = { paths: { 'vs': 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs' } }</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs/loader.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs/editor/editor.main.nls.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs/editor/editor.main.js"></script>
<script>
monaco.editor.create(document.getElementById('container'), {
value: `function x() {
console.log("Hello world!");
}`,
language: 'javascript',
theme: 'vs-dark',
});
</script>
</body>
</html>
直播:
http://cirosantilli.com/web-cheat/monaco-editor-no-loader.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Monaco editor no loader TODO</title>
<link rel="stylesheet" data-name="vs/editor/editor.main" href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/editor/editor.main.min.css">
</head>
<body>
<div id="container" style="height:400px;border:1px solid black;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/editor/editor.main.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/editor/editor.main.nls.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/language/typescript/tsMode.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/basic-languages/javascript/javascript.js"></script>
<script>
let editor = monaco.editor.create(document.getElementById('container'), {
value: `function x() {
console.log("Hello world!");
}`,
language: 'javascript',
theme: 'vs-dark',
});
</script>
</body>
</html>
但这失败了,因为所有 .js 文件都依赖于全局
define(
函数存在,它是在加载器中定义的。
file://
运行时出现 JavaScript 错误“EditorSimpleWorker.loadForeignModule 的意外使用”。 :
https://github.com/microsoft/monaco-editor-webpack-plugin/issues/157所以大概加载器仍然用于动态资源。构建和查看:
npm install
npm run build
python3 -m http.server
然后访问 http://localhost:8080
{
"name": "monaco-editor-webpack-plugin-demo",
"version": "1.0.0",
"private": true,
"dependencies": {
"css-loader": "5.2.4",
"file-loader": "^6.2.0",
"monaco-editor": "0.26.1",
"monaco-editor-webpack-plugin": "4.1.1",
"style-loader": "2.0.0",
"webpack": "5.36.1",
"webpack-cli": "4.6.0"
},
"scripts": {
"build": "webpack",
"start": "webpack serve --open --config webpack.config.js"
}
}
索引.js
import * as monaco from 'monaco-editor'
// or import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
// if shipping only a subset of the features & languages is desired
monaco.editor.create(document.getElementById('container'), {
value: `function x() {
console.log("Hello world!");
}`,
language: 'javascript',
theme: 'vs-dark',
});
索引.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Monaco editor webpack plugin</title>
</head>
<body>
<div id="container" style="height:400px;border:1px solid black;"></div>
<script src="dist/index.js"></script>
</body>
</html>
这个例子也可以从他们的上游测试中提取出来:
https://github.com/microsoft/monaco-editor-webpack-plugin/tree/2459e4a023f9026ae5796a6e92f584c5d38e583e/test该测试使用
package.json
然而,从包本身,你必须提取一些
devDependencies
从他们变成你自己
package.json
,因为它们不是真正的
devDependencies
.完整运行:
git clone https://github.com/microsoft/monaco-editor-webpack-plugin
cd monaco-editor-webpack-plugin
npm install
npm run prepublishOnly
npm test
chromium test/dist/index.html
一个
mode: 'production'
构建速度非常慢,在我的联想 P51 上大约需要 50 秒。
'development'
快很多,只有5s,所以问题想必是所有 Assets 的优化问题。
new MonacoWebpackPlugin({
languages: ['javascript', 'typescript'],
})
可能会节省几秒钟,不是很明显。如文档中所述,typescript
使用 javascript
时是强制性的.languages: [],
: 22slanguages: [], features: [],
: 也是 22 秒,features: []
没有区别关于monaco-editor - 如何从像 cdnjs 这样的 CDN 运行 Monaco 编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63179813/
我添加了我的语言并按照此处的说明进行构建 https://github.com/Microsoft/monaco-languages npm run prepublish 这会输出一个包含 dev、e
您可以使用 monaco.languages.typescript.typescriptDefaults.addExtraLib 添加您在 TypeScript 解析期间可能需要的任何 *.d.ts
我正在使用 monaco-editor,我看到在更高版本的上下文菜单中添加了剪切和复制。我想从上下文菜单中删除这两个选项。请让我知道我怎样才能实现它? 最佳答案 使用 CSS 隐藏单个项目 我在浏览器
我正在 monaco-editor 中定义新语言.我希望它会自动突出显示匹配的括号和圆括号,因为默认情况下 matchBrackets选项是真的。 我还需要做些什么吗? 示例代码: 看 this pa
我正在尝试在我目前正在开发的项目中使用 Microsoft 的 Monaco Editor。我查看了文档,发现您可以使用自定义代码完成和语法突出显示来设置自定义语言,但我找不到任何关于如何向自定义语言
有没有办法将插入符号位置作为源代码字符串中的索引? 我知道我可以获得位置,它会给我一个包含行和列的对象,但是有没有办法获取或将行 + 列转换为字符串字符索引? 例如,如果我有: using Syste
默认为 CRLF。我想在处理 BASH 脚本时将其更改为 LF。请帮忙。 我已经浏览了文档,但找不到任何解决方案或示例。 最佳答案 //https://github.com/Microsoft/vsc
将任何回调附加到 editor.onDidChangeModelContent(event) 到 Monaco 实例后,如何删除(或取消绑定(bind))此函数? 例如,ACE 编辑器提供了 func
我正在使用 monaco-editor 库为自定义编程语言实现网络编辑器。 我已经实现了一个 CompletionItemProvider 来提供自定义完成建议。 总的来说效果很好。但是,在执行片段时
我正在使用 monaco-editor,我想包含来自多个文件的建议。我不确定最好的方法是什么,但基本上,我希望当我在 file2.js 中导出一些函数时,能够从建议中的另一个 file1.js 访问它
我正在为我的应用程序添加 TypeScript 支持 Data-Forge Notebook . 它是一个笔记本风格的 JavaScript 应用程序。当我在代码单元格中使用“等待”关键字时,摩纳哥将
Monaco Editor 中是否有用于文本选择的事件? 我需要响应用户在编辑器中选择部分代码? 有没有更好的解决方案来使用计时器来获取选择范围? 文件似乎没有提到它。 最佳答案 您可以使用 onDi
我正在使用 monaco-editor 来显示本地代码文件的内容,这些文件可能是用各种语言编写的,所以我想知道如何根据文件的扩展名或文件的第一行动态设置/更改 monaco 编辑器的语言没有扩展名(如
在 Monaco Editor 中,使用标准初始化,例如: monaco.editor.create(document.getElementById("container"), { value
我刚刚开始研究将 Monaco 用作我们内部代码游乐场的编辑器。而且我无法弄清楚如何为编辑器窗口中的文本更改(通过键入、粘贴或删除)创建处理程序。对于上下文,使用 CodeMirror 编辑器,我只是
是否可以完全隐藏 Monaco Editor 的装订线。 我尝试了以下选项: lineNumbers: 'off', glyphMargin: false, folding: false
将“enableSchemaRequest”选项设置为“false”时,我收到警告: Unable to load schema from '/do.not.load.me'. No schema r
我正在构建并排预览,因此我需要在编辑器中获取最上面的可见行号。 我想我可以获得顶部像素滚动条: editor.onDidScrollChange(function (e) { consol
是否可以在 Monaco Editor 中获得拆分 Pane ?类似于 VSCode 中所做的或摩纳哥本身提供的 Diff Editor 中使用的内容。 最佳答案 您必须在像这样的编辑器之间共享模型
我正在使用 Monaco Editor 来编辑 typescript 。有没有办法获得当前模型的 AST?是否可以修改树以便编辑器对更改使用react?即我想为 typescript 做简单的重构工具
我是一名优秀的程序员,十分优秀!