С момента первого выпуска Bridge.NET мы поставили несколько библиотек привязки C #, таких как jQuery и Bootstrap, но с самого начала целью всегда было поддерживать больше. Многие многие другие.

Первоначальные пакеты Bridge, такие как Bridge.jQuery, можно рассматривать как более созданный вручную интерфейс API. Функции, свойства, классы и события из библиотеки JavaScript были перенесены в проект библиотеки классов C #, который затем можно было включить в любое приложение включения Bridge.

Хотя ручная работа, библиотека переплета обеспечивает максимальную гибкость и по большей части обеспечивает высокое качество работы; процесс имеет тенденцию быть неэффективным, подвержен человеческим ошибкам и часто не обеспечивает 100% охват библиотечного API.

Мы начали путешествие, чтобы решить эти проблемы, чтобы добавить всю вселенную библиотек JavaScript в инструментарий разработчиков C #.

1000+ коммитов позже… мы рады объявить о выпуске Retyped.

Что такое перепечатано?

Retyped читает файлы определений TypeScript (.d.ts) и создает проект библиотеки классов C # на основе этой библиотеки. Затем проект C # компилируется в пакет NuGet и публикуется на NuGet.org.

По своей сути Retyped - это генератор библиотеки привязки для Bridge.NET.

«Любой пакет Retyped можно использовать в любом проекте Bridge».

В настоящее время Retyped поддерживает несколько тысяч библиотек JavaScript. Ищите доступные библиотеки на сайтах retyped.com или bridge.net.

Каждая библиотека Retyped была создана как отдельный пакет NuGet, и ее можно найти с помощью диспетчера пакетов NuGet или с помощью шаблона именования retyped.{library-name} в консоли пакетов NuGet или путем поиска на веб-сайте NuGet. Найти и установить нужную библиотеку действительно просто.

Например, чтобы установить Узел:

install-package retyped.node

Чтобы установить jQuery:

install-package retyped.jquery

Файлы определений TypeScript получены из нескольких мест, включая Определенно типизированный, и напрямую от исходного автора через NPM.

Начиная

Если вы начинаете новый проект, первым делом нужно создать проект библиотеки классов C #, а затем установить Bridge.

В следующих обучающих видеороликах показано несколько вариантов создания проекта библиотеки классов C # с поддержкой Bridge.

В первом руководстве демонстрируется использование шаблонов расширения Bridge.NET для Visual Studio.

Другой вариант - использовать Диспетчер пакетов NuGet или консоль NuGet.

После того, как вы установили Bridge в свой проект, Retyped добавляется с помощью NuGet.

Найдите Retyped в диспетчере пакетов NuGet или выполнив следующую команду в консоли пакетов NuGet:

install-package retyped

Базовый пакет Retyped устанавливает поддержку всего JavaScript ES5 и DOM API, который включает все собственные типы, функции, классы и события JavaScript. Все.

СОВЕТ ПРОФЕССИОНАЛА: используйте Deck.NET, чтобы легко поэкспериментировать с базовыми пакетами Retyped на онлайн-площадке.

Привет, мир!

Давайте продемонстрируем простейшее использование Retyped, запустив стандартное alert сообщение JavaScript при начальной загрузке страницы.

Пример

Https://deck.net/5492ef6c5e96ebff74ca7c2280b5ff42

Структура пакета

Retyped анализирует файлы объявлений TypeScript, компилирует каждый в отдельный проект библиотеки классов C # и создает пакет NuGet для каждого. Они считаются связующими библиотеками для проектов Bridge.NET.

Каждый пакет Retyped также включает исходный файл объявления .d.ts. Этот файл (или файлы) можно отправить в папку вывода, если соответствующий параметр generateTypeScript настроен в файле bridge.json вашего проекта:

"generateTypeScript": true

Один важный подводный камень, который следует помнить, заключается в том, что в повторно сформированные пакеты встроены файлы библиотек .d.ts, но в настоящее время не встраиваются файлы .js. файл. Файл (ы) .js для библиотеки или модуля необходимо будет приобрести отдельно, а затем вручную добавить в файл .html вашего приложения.

В будущих версиях пакеты Retyped также будут включать все необходимые исходные файлы JavaScript (.js). Это приоритетная задача для команды разработчиков. Как только эта функция будет поддержана, процесс запуска вашего приложения будет максимально плавным, поскольку обращение к правильным файлам .js в файле .html ваших проектов будет автоматизировано.

Bridge.Html5 против Retyped.dom

Исходный пакет Bridge.Html5 будет полностью поддерживаться до выпуска Bridge 17.0, но мы призываем всех заменить его на пакет Retyped, когда это возможно в вашем проекте.

Пакет Retyped включает в себя весь собственный (ванильный) JavaScript API, и никаких дополнительных файлов .js не требуется. API JavaScript встроен в браузер, поэтому Bridge рассматривает эти библиотеки как [External].

Замена Bridge.Html5 на Retyped должна быть простой, но Retyped не является заменой Bridge.Html5. По большей части API идентичен, но корпус другой, и using операторы должны быть изменены.

Например, вызов Document.Body в Bridge.Html5 будет изменен на document.body при повторном вводе. Свойства также будут сопоставлены с их эквивалентом lowerCamelCase, например InnerHTML vs innerHTML в Retyped.

Пример

Соглашение lowerCamelCase против UpperCamelCase отражает API JavaScript и C #. Внутри компании мы часто называем эти два языка отдельными измерениями или юниверсами. Код вашего приложения может прозрачно проходить между этими двумя измерениями, но вы можете существовать только в одном измерении в любой конкретный момент.

«Retyped открывает портал во вселенную JavaScript».

Retyped обеспечивает четкое разделение проблем, связанных с тем, что JavaScript и C # API находятся внутри уникальных фреймворков. Установка Bridge дает вам доступ к C # API без доступа к JavaScript API. Если вы хотите вызвать JavaScript API, добавьте Retyped, и теперь у вас есть доступ ко всей вселенной JavaScript.

СОВЕТ ОТ ПРОФЕССИОНАЛА: Соглашение о регистре для всех сущностей в вашем проекте легко настраивается с помощью атрибута [Соглашение].

Повторно набран на палубе

Образцы Deck.NET теперь имеют доступ к базовым пакетам Retyped. В настоящее время Deck поддерживает только пакеты dom, es5 и jquery. В ближайшее время мы планируем добавить настраиваемую поддержку для тестирования каждого пакета Retyped.

В следующем примере демонстрируется базовый сценарий создания простой кнопки HTML, установки нескольких свойств, настройки приемника событий и последующего добавления кнопки на страницу.

Пример

Https://deck.net/welcome

Образец webservice, доступный на Deck.NET, демонстрирует еще несколько сценариев синтаксиса Retyped, включая использование Retyped.jquery, которое выполняет вызов AJAX к .NET .asmx WebService.

Управление версиями пакетов

Номер версии для пакетов Retyped соответствует образцу MAJOR.MINOR.DDDD, где DDDD - количество дней с 2000–01–01 UTC.

Расчет DDDD прост, и доступна Колода, чтобы легко определить сегодняшнее значение DDDD или найти дату выпуска по значению DDDD.

Например, пакет Retyped.node 7.0.6477 был создан из выпуска Node 7.0 и опубликован Retyped 6477, то есть 24 сентября. , 2017.

// Determine publish date 6477
new DateTime(2000, 1, 1).AddDays(6477)

Эта схема управления версиями позволяет быстро ссылаться на конкретную версию библиотеки JavaScript и легко искать дату публикации, при этом соблюдая спецификацию NuGet управление версиями пакетов.

Лицензия

Повторно типизированные пакеты лицензируются по лицензии Apache-2.0 и могут использоваться как в коммерческих, так и в проектах с открытым кодом.

Лицензирование использования отдельных библиотек JavaScript должно происходить из исходной библиотеки JavaScript.

В настоящее время исходный код C #, созданный для каждой библиотеки компилятором Retyped, не является общедоступным. Мы надеемся выпустить их в будущем, но пока они являются частными. Пакеты NuGet являются общедоступными, исходный код C # для каждого пакета является частным.

Исходный код анализатора и компилятора Retyped является частным.

Резюме

Наша команда много работала, чтобы сделать компилятор Retyped мощным, эффективным и способным принимать разумные решения для создания библиотек привязки C #. Окончательный дизайн API для библиотек должен быть удобным и знакомым для разработчиков C # и в то же время обеспечивать ту же степень функциональности, что и TypeScript.

Retyped находится в активной разработке, и планируется еще много новых функций. Дефекты и запросы функций отслеживаются в репозитории Retyped GitHub.

Повторно набранный Форум сообщества - идеальное место для начала разговора, если у вас есть какие-то комментарии или идеи.

С нами также можно связаться в Twitter и Gitter.

Сообщите нам, что вы думаете о Retyped, и не стесняйтесь вносить свой вклад.

часто задаваемые вопросы

Откуда берутся файлы .d.ts?

В настоящее время Retyped читает весь репозиторий Определенно типизированный и создает как можно больше библиотек привязки.

Какие библиотеки поддерживаются?

Retyped в настоящее время поддерживает 2200+ библиотек JavaScript, и постоянно добавляются новые. Высокопрофильные библиотеки, доступные от Retyped, включают: Node, Electron, React, Angular, Lodash, jQuery, весь JavaScript ES5 API и весь JavaScript DOM API.

Найдите поддерживаемые пакеты на сайте Retyped. Например, в настоящее время с React связано около 60 пакетов.

Я обнаружил ошибку в пакете Retyped {library_name}. Как это исправить?

Поскольку Retyped анализирует исходные файлы объявлений TypeScript, дважды проверьте, что ошибка не исходит из исходного файла .d.ts. Если это так, пожалуйста, сообщите о проблеме (или отправьте PR) в репозиторий ОпределенноTyped. После устранения проблемы Retyped перекомпилирует библиотеку и опубликует обновленный пакет NuGet.

Я обнаружил проблему, связанную с выдачей некорректного кода JavaScript или несоответствием C # API файлу объявления источника. Исходный файл .d.ts кажется правильным?

Сообщите о проблеме, и мы немедленно займемся ее расследованием.

У меня есть предложение по упрощению или улучшению синтаксиса Retyped. Где мы можем обсудить?

Мы очень ценим ваши отзывы и идеи. Пожалуйста, создайте проблему, чтобы мы могли обсудить ее с вами и сообществом.

Мне нужен пакет Retyped для {library_name}. Библиотека доступна в репозитории DefininiteTyped, но я не могу найти для нее пакет Retyped?

Простите за это. Мы делаем все возможное, чтобы поддерживать все библиотеки, доступные на сайте DefinentyTyped. Однако некоторые библиотеки не могут быть скомпилированы из-за определенных синтаксических сценариев, которые в настоящее время не поддерживаются компилятором Retyped, циклические ссылки или библиотека может просто содержать дефект.

Другая возможная причина - это только что добавленная библиотека. В этом случае пакет Retyped уже в пути.

В любом случае, пожалуйста, сообщите о проблеме, чтобы привлечь наше внимание к проблеме. Не стесняйтесь добавлять комментарий или реакцию, если проблема уже была зарегистрирована ранее.

Мне нужен пакет Retyped для библиотеки, которой нет в репозитории DefinuneTyped. Можем ли мы сделать индивидуальный пакет Retyped?

Самый простой процесс - включить эту библиотеку в репозиторий ОпределенноTyped. При следующей перекомпиляции с помощью Retyped библиотека будет доступна на веб-сайтах retyped.com и NuGet.org.

Если библиотека является частной или частной и не может быть выпущена публично, отправьте электронное письмо на адрес [email protected], и мы обсудим некоторые варианты.