От имени всей команды Bridge.NET мы рады объявить об официальном публичном выпуске Bridge 16.

Этот выпуск основной версии представляет собой значительный прогресс в области подключения приложений C # к браузеру.

Список улучшений в Bridge 16 охватывает все наши проекты и не только, включая не менее 378 закрытых проблем и 87 новых функций, зарегистрированных в журнале.

Давайте рассмотрим некоторые ключевые моменты этого выпуска.

Newtonsoft.Json

Повторное использование кода между приложениями Bridge и встроенными приложениями C # - одна из наших основных основных директив, которую мы разрабатываем, поэтому поддержка одних и тех же библиотечных API-интерфейсов в обеих средах приложений имеет решающее значение.

Как разработчики .NET, в том числе Newtonsoft.Json является одним из тех действий по умолчанию, которые мы все делаем для новых проектов, и в настоящее время, с более чем 77 миллионами загрузок, это САМАЯ краеугольная библиотека вселенной .NET.

Мы не хотим затмевать наше объявление о выпуске Bridge 16, но мы очень рады запуску нашего нового проекта Bridge.Newtonsoft.Json.

Глубина и широта возможностей исходной библиотеки Json.NET довольно велика, но для первого выпуска Bridge.Newtonsoft.Json нам нужно было сохранить объем, поэтому мы сосредоточились на поддержке сильной основное подмножество функций.

Добавление Json.NET в проект Bridge занимает всего несколько секунд с помощью следующей команды в консоли диспетчера пакетов NuGet:

> install-package bridge.newtonsoft.json

Все функции, которые в настоящее время поддерживает Bridge, подробно описаны в документе README репозитория GitHub.

На данный момент наибольшее внимание привлекли основные методы SerializeObject и DeserializeObject, включая соответствующие функции для Formatting, JsonSerializerSettings и атрибута [JsonConstructor].

Все задокументировано в README, и это лучшее место для начала.

Пример (Колода)

Работа над проектом Bridge.Newtonsoft.Json нисколько не замедлилась с момента выхода этого первоначального выпуска, и вскоре ожидается поддержка еще одной большой партии API.

Обязательно поиграйте с Json.NET в Deck.NET. Мы включили базовый образец, чтобы помочь вам начать работу.

Отладка C # в браузере

Bridge 16 теперь включает поддержку отладки ваших файлов C # прямо в браузере с использованием исходных карт. Откройте любую Колоду, чтобы увидеть исходные карты в действии.

Следующий скринкаст демонстрирует установку точки останова в C # и просмотр переменной с помощью Инструментов разработчика Chrome.

ИспользуйтеF12 или Ctrl + Shift + I в Windows, чтобы открыть, или Cmd + Opt + I, чтобы открыть на Mac.

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

Исходные карты можно включить в проекте, задав конфигурацию sourceMap в bridge.json.

{
  "sourceMap": {
    "enabled": true
  }
}

Обновление до Bridge 16

Если вы обновляетесь до Bridge 16 из более ранней версии, обязательно просмотрите вики-документ Обновление до Bridge v16, чтобы получить советы о том, как воспользоваться преимуществами новых функций, а также настроить для обратной совместимости. .



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

СОВЕТ ПРОФЕССИОНАЛА Вики можно редактировать, и, пожалуйста, не стесняйтесь вносить свой вклад.

[Соглашение] Атрибут и корпус

Bridge 16 действительно представляет серьезное изменение по сравнению с предыдущими выпусками, которое важно выделить.

Компилятор больше не будет автоматически изменять регистр имен членов.

Например, ранее, если у вас был метод в C #, определенный как DoSomething(), компилятор выдал бы doSomething() в сгенерированном JavaScript.

Теперь по умолчанию Bridge больше не будет повторять регистр, и это политика WYSIWYG.

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

Мост все еще может изменить регистр, но теперь он должен быть явно включен с использованием мощного атрибута new[Convention]. Атрибут [Convention] может быть настроен во многих точках вашего приложения, а настройка на уровне сборки упрощает глобальную настройку поведения.

В следующем примере демонстрируется настройка компилятора для преобразования всех членов (таких как методы, свойства и поля) для использования соглашения об именах LowerCamelCase в сгенерированном JavaScript.

[assembly: Convention(Target = ConventionTarget.Member, Notation = Notation.LowerCamelCase)]

См. Проблему # 2477 для получения дополнительной информации об атрибуте [Convention] или в вики-документации Справочник по атрибутам.

Новый путь вывода и макросы MSBuild

Ранее Bridge помещал сгенерированные файлы в папку / Bridge / output / вне корня проекта. Этот путь был определен из output конфигурации файла bridge.json проекта.

В Bridge 16 путь по умолчанию output был обновлен, чтобы все файлы проекта помещались в новую папку внутри ваших проектов / bin /.

Например, если вы компилируете свой проект в режиме Debug, весь вывод будет отправлен в папку / bin / Debug / bridge /. В режиме Release местом вывода будет / bin / Release / bridge /.

Пример

Такая гибкость в отношении путей к целевым переменным стала возможной благодаря нашей новой поддержке макросов MSBuild, таких как $(OutDir). Полный список значений токенов, доступных для использования в bridge.json, включает следующее:

$(AssemblyName)
$(CheckForOverflowUnderflow)
$(Configuration)
$(DefineConstants)
$(OutDir)
$(OutputPath)
$(OutputType)
$(Platform)
$(RootNamespace)

После компиляции проекта вы можете найти файлы с помощью проводника или из проекта Visual Studio, нажав кнопку Показать все файлы, а затем перемещаться по папкам.

В следующем ролике показано, как скомпилировать проект, показать скрытые файлы в папке / bin /, а затем открыть файл index.html в браузере.

Если вы обновляете существующий проект Bridge до Bridge 16, компилятор продолжит использовать ваше предыдущее значение output, поэтому все должно работать должным образом.

В выпуске GitHub # 2227 содержится вся подробная информация о новой поддержке макросов MSBuild.

Процесс установки NuGet также был значительно очищен, и теперь в корневую папку вашего проекта будет добавлен только один файл (bridge.json).

Авто Index.html

Как вы могли понять из видео выше, по умолчанию Bridge теперь автоматически создает базовый файл index.html для вашего приложения. Файл включается в папку вывода вместе с файлами JavaScript.

После успешной компиляции проекта просто откройте этот новый index.html в браузере, и ваше приложение загрузится.

Раньше мы включали статический файл .html для использования в качестве шаблона, но разработчикам приходилось вручную добавлять файлы .js <script>, что могло легко привести к ошибке, если файлы .js были пропущены или включены в неправильном порядке.

Теперь все, что вам нужно для запуска вашего приложения, автоматизировано. Bridge определяет, что вам нужно и когда это нужно, и включает в себя все. Просто скомпилируйте, а затем просмотрите в браузере.

Эту новую функцию также можно легко отключить с помощью параметра конфигурации в файле bridge.json.

{
  "html": {
    "disabled": true
  }
}

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

Улучшения отражения

Отражение теперь поддерживается по умолчанию, и создается отдельный файл [app-name] .meta.js для размещения метаданных отражения.

Раньше Reflection было добровольным решением, которое требовало добавления [Reflectable] атрибутов без вашего источника для конфигурации. Атрибут [Reflectable] по-прежнему поддерживается и функционирует точно так же, но они не требуются, если вы согласны с функциональностью по умолчанию.

Метаданные отражения могут быть отключены, и в bridge.json возможны гораздо больше настроек, установив thereflection config.

{
  "reflection": {
    "disabled": true
  }
}

Если вы предпочитаете вернуться к предыдущей функции индивидуальной настройки уровня поддержки отражения с использованием атрибутов[Reflectable], что позволяет гораздо более детально контролировать, просто отключите reflection в bridge.json, и вы ' снова хорошо.

СОВЕТ ОТ ПРОФЕССИОНАЛА. Если вы не используете отражение в своем проекте, отключите reflection, так как файлы .meta.js будут увеличиваться в размере пропорционально размеру вашего проекта. Если отражение вам не нужно, выключите его.

Новая функция отражения была реализована в выпуске GitHub # 2732, который также содержит дополнительные советы по оптимизации генерации метаданных.

Усовершенствования консоли Bridge

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

Во-первых, консоль теперь загружается из отдельного файла bridge.console.js и может быть легко удалена из вашего проекта, не включая файл .js, или контролируется новым console config в bridge.json.

{
  "console": {
    "enabled": false|true
  }
}

В предыдущих версиях запись объектов в консоль приводила к сообщению useless[object Object]message. Написание объектов примитивных типов, таких как string или bool, работало нормально, но мы хотели улучшить обработку сложных объектов.

Удобство использования консоли Bridge было значительно улучшено за счет первой сериализации объекта в JSON перед записью в консоль. Смотрите демо на Deck.NET.

Консоль Bridge теперь также автоматически фиксирует и отображает все выданные ошибки JavaScript. Мы можем продемонстрировать запуск ошибки JavaScript, вызвав функцию fake().

Выпуск GitHub # 1994 был основным потоком для документирования усовершенствований консоли, если вас интересуют более тонкие детали.

Другие заметные улучшения Bridge 16

Полностью переработана поддержка модуля # 2217
Реальные свойства в JavaScript # 1229
Новый атрибут [Field] вместо [FieldProperty] # 2234
Усовершенствования атрибута ObjectLiteral # 2276
Версия API Bridge.define # 2561
Объединение Bridge.Collections перемещено Системный проект # 2730
Измените настройки по умолчанию для fileNameCasing, чтобы использовать None # 2755
Расширенная поддержка for yield () # 1329
Goto support # 1004
IteratorBlock - Конечный автомат # 1555
Поддержка интерфейсов IReadOnly - List, Collection, Dictionary # 1626
Поддержка DOMParser добавлена ​​в Bridge.Html5 # 1728
Поддержка операций упаковки / распаковки # 2077
Поддержка класса среды # 2224
Поддержка BitConverter # 2452
Предотвращение ошибок в поддержке NodeJS # 1728
Deck.NET с dev-сборкой Bridge # 2530
Улучшение производительности компилятора # 2551
Реализовать string [] Environment.GetCommandLineArgs () # 2553
Реализовать топологическую сортировку для сборки y ссылки # 2717
Официальное репо awesome-bridge # 2726
Тип пересечения # 2192
Тип последовательности # 2200

Мост на CDNJS

Распространяемые файлы выпуска Bridge .js теперь доступны для горячей ссылки из глобально распределенной службы CDN, CDNJS.

Если вам требуется другой сервис CDN в качестве аварийного переключения, мы также размещаем файлы из нашего репозитория Speed.

Полная история реализации CDNJS доступна в выпуске GitHub # 2228.

Новый средний блог

Если вы не заметили наш новый дом для блога Bridge, мы переехали в Средний.

} наконец {

Спасибо, что добрались сюда. Мы очень ценим ваш интерес к Bridge и, как всегда, будем рады вашим отзывам.

Мы @bridgedotnet в Твиттере, мы отслеживаем форумы сообщества Bridge 24 часа в сутки, мы отслеживаем тег bridge.net в StackOverflow, нас легко найти на GitHub, и hello @ bridge .net по электронной почте.

Пришло время что-то построить

P.S. Скоро появятся еще несколько крупных анонсов, в том числе об огромном сверхсекретном проекте, над которым мы работали в течение последнего года. Оставайтесь на связи для получения дополнительной информации.