Voximplant corporate blog
Website development
JavaScript
Programming
VueJS
Comments 13
+5
Тоже используем Monaco как редактор кода.
Важно упомянуть, что для поддержки IntelliSense и Autocomplete в языках, для которых невозможен движок на клиентской стороне (Python, C#), нужен доп. LanguageServer.
+1

Ага, спасибо, за дополнение. Мы делали IDE для js-скриптов, с другими пока поработать на довелось, поэтому не упомянула. Но, как я понимаю, его можно написать на чем угодно и общать с Монако через веб-сокет по Server Language Protocol?

0
его можно написать на чем угодно и общать с Монако через веб-сокет по Server Language Protocol?

Да, все верно — можно подключить Monaco Editor через LSP к LanguageServer, скормить серверу свой solution и получать с сервера IntelliSense и Autocomplete.
Подробности по поддержке языков можно найти здесь: langserver.org
Для C# мы использовали OmniSharp, для Python «python-language-server» от Microsoft.
В Microsoft с «python-language-server» работает Михаил Архипов, он консультировал нас.
+5
Спасибо за статью, не знал, что Monaco — это редактор из vscode.
«IntelliSense — подсказки и автокомплит» выглядит очень интересно.
0
Сейчас внедряю Ace, посмотрим на сколько сложно будет.
+1
У меня был прямо противоположный опыт. Начал с CodeMirror, но, к сожалению, не удовлетворил Intellisense. Перешёл на Монако. Очень геморройно было интегрировать. Постоянно вылазили дикие краши внутри движка. В одном случае полез в сорс и нашёл вызов функции с параметрами, которые заведомо приводят к возврату null, при этом вызывающая функция без проверок пытается обратится к полям возвращаемого значения, что и приводило к крашу. Тесты, похоже, там и не валялись. Кроме этого пришлось импортировать скомпилированный движок через HTML и он весил около мега, а когда импортировал его в JS он вдруг наподключал аж 3 мега. Может я его неправильно готовил, но я шёл по документации и примерам.
0

Да, вес Монако действительно большой, но с крашами ни разу не встречались. Было в одном месте, что либо ts кидал ошибку при компиляции, либо она возникала в рантайме, потому что неверно были написаны типы для Monarch (этот модуль изначально был на is и типы к нему писались после). Но порадовало то, что, в отличие от того же CodeMirror, быстро реагировали на тикеты на гитхабе. И разок я им кидала пул-реквест и запускалась куча тестов, так что они там есть и большом количестве. Но не берусь сказать, как было раньше, наверное, вы интегрировали его по крайней мере около года назад?

-2
Мне почему то казалось, что нормальные люди предпочитают Intelij… А оказывается вон оно как на самом деле…
+1
Соглашусь. Большую IDE установил и работаешь.
Пробовал использовать VSCode для go. В итоге ставишь миллион плагинов, чтоб продуктивно работать либо зубришь команды.
Перешёл goland, в котором одно блаженство программировать.
Зачем отказываться от благ? Так и до vim скатиться можно.
+1
На мой взгляд у webide своя ниша:
  • онлайн обучение программированию, при этом тебе не нужно ничего устанавливать на свой компьютер, потом запаковывать и отправлять на проверку — уже всё есть на сервере
  • беглый просмотр кода, например в админке сайта быстро проверить какую-то штуку. как на гитхабе, тебе не обязательно скачивать проект, достаточно найти нужный файл и открыть его с подсветкой синтаксиса прямо в браузере.
  • лёгкий редактор/просмотр кода для того чтобы в админке подправить/посмотреть json-конфиг или lua-сценарий

Возможны также другие кейсы, где это пригодиться. Собственно все эти тысячи звёзд на гитхабе и говорят, что кейсов хватает.
+3

Здесь речь именно об IDE, которую можно запустить в браузере. IntelliJ, к сожалению, пока туда не затащить.

+2
CodeMirror используется в инструментах разработчика Chrome

Теперь понятно почему они еле ворочаются в больших файлах
0

Тоже применил Monaco. Но сходу выхватил три проблемы (обертка vue-monaco):


  1. Если через реактивное свойство меняешь код, слетают все кастомные стили, которые ты наложил на строки. Использую для отображения исполняемой строки в режиме дебага. Приходится пересоздавать компонент.
  2. Есть занятный функцилнал с маркерами. Так и не смог его задействовать. Ну не работают и все тут...
  3. Ресайз нужно костылировать. Не понял почему… но вот так.
Only those users with full accounts are able to leave comments., please.