Xterm.js — это компонент фронтенда, написанный на TypeScript, который позволяет приложениям привносить полнофункциональные терминалы в браузеры своих пользователей. Он используется популярными проектами, такими как VS Code, Hyper и Theia.
bash
, vim
и tmux
, включая поддержку приложений на основе курсора и событий мыши.bash
. Xterm.js может быть подключен к процессам, таким как bash
, и позволять вам взаимодействовать с ними (предоставлять входные данные, получать выходные данные).npm install @xterm/xterm
Чтобы начать использование xterm.js в вашем браузере, добавьте `xterm.js` и `xterm.css` в начало вашего HTML-страницы. Затем создайте `<div id="terminal"></div>`, на который xterm сможет закрепиться. В конце концов, создайте объект `Terminal` и вызовите функцию `open` с помощью DOM-объекта div.
```html
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="node_modules/@xterm/xterm/css/xterm.css" />
<script src="node_modules/@xterm/xterm/lib/xterm.js"></script>
</head>
<body>
<div id="terminal"></div>
<script>
var term = new Terminal();
term.open(document.getElementById('terminal'));
term.write('Привет от \x1B[1;3;31mxterm.js\x1B[0m $ ')
</script>
</body>
</html>
Рекомендованный способ загрузки xterm.js — это через синтаксис ES6 модулей:
import { Terminal } from '@xterm/xterm';
⚠️ Эта секция описывает новый формат расширений, введенный в версии v3.14.0, см. здесь для инструкций по старому формату. Аддоны — это отдельные модули, расширяющие возможности Terminal
, используя API xterm.js. Чтобы использовать аддон, сначала его нужно установить в ваш проект:
npm i -S @xterm/addon-web-links
Затем импортируйте аддон, создайте экземпляр и вызовите Terminal.loadAddon
:
import { Terminal } from '@xterm/xterm';
import { WebLinksAddon } from '@xterm/addon-web-links';
const terminal = new Terminal();
// Установка аддона WebLinksAddon на терминал, этого достаточно для работы веб-ссылок в терминале.
terminal.loadAddon(new WebLinksAddon());
```Команда xterm.js поддерживает следующие аддоны, но любой может их создать:
- [`@xterm/addon-attach`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-attach): Подключение к серверу, запущенному процесс через WebSocket
- [`@xterm/addon-clipboard`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-clipboard): Доступ к буферу обмена браузера
- [`@xterm/addon-fit`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-fit): Адаптация терминала к содержащему его элементу
- [`@xterm/addon-image`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image): Добавление поддержки изображений
- [`@xterm/addon-search`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-search): Добавление функциональности поиска
- [`@xterm/addon-serialize`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-serialize): Сериализация буфера терминала в последовательность VT или HTML
- [`@xterm/addon-unicode11`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-unicode11): Обновление ширин символов до значений Unicode 11
- [`@xterm/addon-web-links`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-web-links): Добавление обнаружения и взаимодействия с веб-ссылками
- [`@xterm/addon-webgl`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-webgl): Отображение xterm.js с использованием контекста WebGL2 элемента canvas
## Поддержка браузеров
Поскольку xterm.js обычно реализуется как инструмент для разработчиков, официально поддерживаются только современные браузеры. Конкретно последние версии Google Chrome, Microsoft Edge, Mozilla Firefox и Apple Safari.Xterm.js работает плавно в приложениях на основе [Electron](https://electronjs.org/) и может работать даже в более ранних версиях браузеров. Эти версии являются теми, которые мы стремимся поддерживать.### Поддержка Node.jsМы также публикуем [`xterm-headless`](https://www.npmjs.com/package/xterm-headless), который представляет собой сокращённую версию xterm.js, работающую в Node.js. Пример использования этого — это отслеживание состояния терминала, где процесс выполняется с помощью расширения сериализации, чтобы восстановить всё состояние при повторном подключении.
## API
Полная API для xterm.js содержится внутри файла объявлений TypeScript ([`xterm.d.ts`](https://github.com/xtermjs/xterm.js/blob/master/typings/xterm.d.ts)). Используйте выбор веток/тегов в GitHub (`w`), чтобы навигировать до правильной версии API.
Обратите внимание, что некоторые API помечены как *экспериментальные*. Эти API добавлены для экспериментов с новыми идеями без обязательства поддерживать их, как обычную [версионность semver](https://semver.org/). Обратите внимание, что эти API могут радикально меняться между версиями, поэтому обязательно читайте заметки выпусков, если вы планируете использовать экспериментальные API.
## Выпуски
Xterm.js следует ежемесячному циклу выпусков примерно.
Все текущие и прошлые выпуски доступны на странице [Выпусков](https://github.com/sourcelair/xterm.js/releases) этого репозитория. Вы можете просмотреть [общую дорожную карту на вики](https://github.com/xtermjs/xterm.js/wiki/Roadmap) и узнать, над чем мы работаем сейчас, просматривая [майлстоны](https://github.com/sourcelair/xterm.js/milestones).
### Бета-выпускиНаши сборки CI выпускают бета-версии на npm для каждого изменения, которое попадает в мастер. Установите последнюю бета-версию следующей командой:
```bash
npm install -S @xterm/xterm@beta
Эти версии обычно стабильны, но некоторые ошибки могут пропустить проверку. Мы рекомендуем использовать бета-версию главным образом для тестирования новых возможностей и проверки исправлений ошибок.
Вы можете прочитать руководство на вики, чтобы узнать, как вносить вклад и настраивать xterm.js для разработки.## Реальные применения Xterm.js используется во многих мировых приложениях для предоставления отличного опыта работы с терминалами.
SourceLair: Веб-IDE с полностью функциональными терминалами на основе Linux, использующими xterm.js.
Microsoft Visual Studio Code: Современный, многофункциональный и мощный открытый кодовый редактор с встроенным терминалом на основе xterm.js.
ttyd: Утилита командной строки для совместного использования терминала через Интернет с полной эмуляцией терминала на основе xterm.js.
Eclipse Che: Сервер рабочих пространств для разработчиков, облачный IDE и следующее поколение IDE от Eclipse.
Codenvy: Облачные рабочие пространства для команд разработчиков.
CoderPad: Онлайн-платформа для проведения собеседований программистов. Выполнение кода на многих языках программирования с выводом результатов с помощью xterm.js.
WebSSH2: Веб-клиент SSH2, использующий xterm.js, Socket.IO и ssh2.
Spyder Terminal: Полностью функциональный системный терминал, встроенный в Spyder IDE.
Cloud Commander: Ортодоксальный веб-менеджер файлов с консолью и редактором.
Next Tech: Онлайн-платформа для интерактивного обучения программированию и веб-разработке.Живой терминал, поддерживающий контейнеры, использует xterm.js
.
RStudio: RStudio — это среда интегрированного развития (IDE) для языка R.
Terminal for Atom: Простой терминал для текстового редактора Atom.
Eclipse Orion: Современная открытая система разработки программного обеспечения, работающая в облаке. Кодирование, развертывание и запуск в облаке.
Gravitational Teleport: Гравитационный Teleport — современный сервер SSH для удалённого доступа к кластерам Linux через SSH или HTTPS.
Hexlet: Практические курсы по программированию (JavaScript, PHP, Unix, базы данных, функциональное программирование). Постоянный путь от первой строки кода до первого места работы.
Selenoid UI: Простое графическое окружение для масштабируемого Go-реализации Selenium Hub под названием Selenoid. Мы используем xterm.js
для передачи логов через WebSockets из контейнеров Docker.
Portainer: Простое графическое окружение управления для Docker.
SSHy: Веб-клиент на основе HTML5 для SSHv2 с шифрованием от конца до конца, использующий xterm.js
, SJCL
и вебсокеты.
JupyterLab: Расширяемая вычислительная среда для Jupyter, поддерживающая интерактивный анализ данных и научные вычисления на всех языках программирования.
Theiacom/theia-ide/theia): Theia — это облачная и десктопная IDE-фреймворк, реализованный на TypeScript.
Opshell: Инструмент для работы с AWS экземплярами в нескольких организациях.
Proxmox VE: Proxmox VE — это полная платформа для корпоративной виртуализации открытого исходного кода. Она использует xterm.js для терминалов контейнеров и командной строки хоста.
Script Runner: Выполнение скриптов (или командной строки) в Atom.
Whack Whack Terminal: Эмулятор терминала для Visual Studio 2017.
VTerm: Расширяемый эмулятор терминала, основанный на Electron и React.
electerm: electrem — это клиент терминала/SSH/SFTP (macOS, Windows, Linux), основанный на Electron/node-pty/xterm.
Kubebox: Консоль терминала для кластеров Kubernetes.
Azure Cloud Shell: Azure Cloud Shell — это управляемое Microsoft устройство для администрирования Azure.
atom-xterm: Плагин для Atom для предоставления терминалов внутри рабочего пространства Atom.
rtty: Доступ к вашим терминалам из любой точки мира через веб.
Pisth: Клиент SFTP и SSH для iOS.
Abstruse: Abstruse CI — это платформа непрерывной интеграции, основанная на Node.js и Docker.
Azure Data Studio:com/Microsoft/azuredatastudio)): Инструмент управления данными, который позволяет работать с SQL Server, Azure SQL DB и SQL DW на Windows, macOS и Linux.
FreeMAN: Бесплатный, многоплатформенный файловый менеджер для опытных пользователей.
Fluent Terminal: Эмулятор терминала, основанный на UWP и веб-технологиях.
Hyper: Терминал, созданный на основе веб-технологий.
Diag: Лучший способ быстрого устранения проблем. Записывайте, делитесь и повторно используйте знания по устранению неполадок, чтобы сосредоточиться на решении действительно важных задач.
GoTTY: Простой командный инструмент, который позволяет делиться вашим терминалом как веб-приложением на основе xterm.js.
genact: Генератор бессмысленной деятельности.
cPanel & WHM: Выбор платформы хостинга.
Nutanix: Нутаникс Корпоративное Облако использует xterm в функциональности webssh внутри Nutanix Calm, а также рассматривает возможность перехода старых функций noserial (termjs) на xterm.js.
SSH Web Client: Веб-клиент SSH с использованием PHP.
Juno: Гибкий IDE для языка Julia, основанный на Atom.
webssh: Веб-клиент SSH.
info-beamer hosted: Использует xterm.js для управления устройствами цифрового вывесочного оборудования через веб-панель управления.- Jumpserver: Проект Jumpserver Luna, Jumpserver — это проект бастайонного сервера, Luna использует xterm.js для эмуляции веб-терминала.
LxdMosaic: Использует xterm.js для предоставления доступа к терминалу контейнерам через LXD.
CodeInterview.io: Платформа для проведения кодовых собеседований на Yöntemleri 25+ языках программирования и многих веб-фреймворках. Использует xterm.js для предоставления доступа к шеллу.
Bastillion: Bastillion — это открыто-источниковое веб-приложение для управления административным доступом к системам.
PHP App Server: Создает легковесные, установочные приложения почти-нативного типа для операционных систем рабочего стола. ExecTerminal (красиво оборачивает Terminal xterm.js), TerminalManager и RunProcessSDK — это автономные, переиспользуемые компоненты на JavaScript ES5+.
NgTerminal: NgTerminal — это веб-терминал, который использует xterm.js на Angular 7+. Вы можете легко добавить его в свое приложение, добавив тег <ng-terminal></ng-terminal>
в свой компонент.
tty-share: Очень простой способ совместной работы над терминалом через Интернет.
Ten Hands: Одно место для выполнения ваших командных задач.
WebAssembly.sh: Веб-терминал с использованием WebAssembly и WASI
GusОбщедоступная платформа для совместной работы над кодом, где можно запустить Python с помощью xterm.js.
Linode: Linode использует xterm.js для предоставления пользователям веб-консоли для управления своими экземплярами Linode
FluffOS: Активно поддерживаемый драйвер LPMUD с поддержкой WebSocket
x-terminal: Плагин для Atom, предоставляющий терминалы внутри рабочего пространства Atom
CoCalc: Большое количество свободного программного обеспечения, установленного заранее, чтобы общаться, сотрудничать, разрабатывать, публиковать, исследовать, делиться, преподавать на C++, HTML, Julia, Jupyter, LaTeX, Markdown, Python, R, SageMath, Scala и других языках
Dank Domain: Открытая многопользовательская средневековая игра, поддерживающая эмуляцию старых и новых терминалов
DockerStacks: Локальная студия разработки LAMP/LEMP
Codecademy: Использует xterm.js в своих курсах по Bash
Laravel Ssh Web Client: Инвентарь сервера Laravel с веб-клиентом SSH для подключения к серверу с использованием xterm.js
Replit: Коллаборационная браузерная IDE со поддержкой более чем 50 различных языков программирования
TeleType: Клиентская утилита командной строки, которая позволяет вам легко делиться своим терминалом онлайн.Показывайте свои навыки работы с командной строкой, помогите коллеге, преподайте или отладьте проблемы.
Interview: Параллельное программирование для собеседований. Поддерживаются несколько языков программирования, результаты которых отображаются с помощью xterm.js
TRASA: Без доверия доступ к веб-сервисам, SSH, RDP и базовым службам данных
Commas: Commas — это взломываемый терминал и исполняющий команды движок
Devtron: Потоки выполнения для доставки программного обеспечения для Kubernetes
NxShell: Простой в использовании новый терминал для SSH
gifcast: Преобразование записи asciinema в анимированную GIF-изображение
WizardWebSSH: Терминал с виджетом PyQt5 для встраивания, который может использоваться как клиент SSH для подключения к вашим серверам SSH. Написан на Python, основан на Tornado, Paramiko и xterm.js
Wizard Assistant: Оракул Ассистент приходит с продвинутыми средствами автоматизации, заранее загруженными общими и специальными командами для экономии времени, а также встроенным SSH терминалом. Теперь вы можете легко администрировать, диагностировать и анализировать любую систему удалённо.- ucli: Командная строка для всех :family_man_woman_girl_boy: на www.ucli.tech.
Tess: Простой полностью настраиваемый терминал для всех. Узнайте больше на tessapp.dev
HashiCorp Nomad: Контейнерный оркестратор с возможностью подключения к удалённым задачам через веб-интерфейс с использованием websockets и xterm.js.
TermPair: Визуализация и контроль терминалов из вашего браузера с конечной-конечной шифтровкой
gdbgui: Браузерная версия gdb (gnu debugger)
goormIDE: Выполнение практически любого языка программирования с реальным временем работы, живым парным программированием и встроенным мессенджером.
FleetDeck: Удалённый рабочий стол и виртуальный терминал
OpenSumi: Фреймворк для быстрого создания продуктов облачных или настольных IDE.
KubeSail: Компания самонаправленного хостинга — использует xterm для доступа пользователей к контейнерам Kubernetes и сбора GitHub приложений.
WiTTY: Веб-интерактивный эмулятор терминала, который позволяет пользователям легко записывать, делиться и воспроизводить сессии консоли.
libv86 Terminal Forwarding: Парная SSH для веба, используя WebRTC через Bugout для передачи данных и v86 для веб-виртуализации.- hack.courses: Интерактивные курсы Linux и командной строки с использованием xterm.js для предоставления настоящего терминала доступного для всех.
Render: Платформа как услуга для ваших приложений, сайтов и баз данных с использованием xterm.js для предоставления командного промта для пользовательских контейнеров и потока сборочных и рабочих логов.
CloudTTY: Дружественная веб-версия Kubernetes CloudShell.- Go SSH Web Client: Простой SSH веб-клиент, использующий Go, WebSocket и Xterm.js.
web3os: Распределённая операционная система для следующего поколения веба.
Если вы делаете вклад в виде кода в этом проекте, вы явно разрешаете распространение вашего кода под лицензией MIT. Вы также подтверждаете, что весь предоставленный код является вашим оригинальным трудом.
Авторское право © 2017–2022, Авторы xterm.js (Лицензия MIT)
Авторское право © 2014–2017, Sourcelair, Частная компания (www.sourcelair.com) (Лицензия MIT)
Авторское право © 2012–2013, Christopher Jeffrey (Лицензия MIT)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )