Javascript перевод: Javascript – перевод с английского на русский – Яндекс.Переводчик

Заблуждения о JavaScript Engine Switcher 2.X (Перевод)

Английскую версию данного поста я написал еще в мае и опубликовал ее в багтрекере проекта ReactJS.NET. Изначально я не планировал переводить данный пост на русский язык, но в понедельник я увидел программу 13-й встречи MskDotNet Community, и решил, что такой перевод был бы полезен сообществу

Для лучшего понимания материала изложенного в посте, я немного расскажу о ReactJS.NET и JavaScript Engine Switcher. ReactJS.NET – это .NET-библиотека, которая производит компиляцию JSX-кода в JS-код. Данная библиотека не является .NET-портом библиотеки React (по аналогии c Less.js и dotless). При создании ReactJS.NET использован совершенно другой подход: JS-код библиотеки React запускается из .NET с помощью JS-движка. Роль этого JS-движка, как раз и выполняет библиотека JavaScript Engine Switcher. JavaScript Engine Switcher определяет унифицированный интерфейс доступа к базовым возможностям популярных JS-движков (MSIE JavaScript Engine for . Net, Microsoft ClearScript.V8, Jurassic, Jint и ChakraCore) и позволяет быстро переключить вашу библиотеку или приложение на использование другого JS-движка (при условии, что ваш JS-код совместим со стандартом ECMAScript 5).

Когда я проектировал JavaScript Engine Switcher, то предполагал, что разработчики библиотек в своих пакетах будут ссылаться только на JavaScriptEngineSwitcher.Core и оставят пользователям библиотек возможность выбора наиболее подходящей им реализации JS-движка. Именно такой подход я использую в своем проекте Bundle Transformer. Но автор ReactJS.NET пошел другим путем: пакет React.Core в своем списке зависимостей уже содержит несколько предустановленных модулей JavaScript Engine Switcher: MSIE, V8 и ChakraCore. Во время инициализации библиотеки производятся последовательные попытки создать экземпляр одного из вышеперечисленных движков и первый успешно созданный движок становится движком по умолчанию.

Стоит отметить, что это поведение можно переопределить и самому выбрать наиболее подходящий движок. Для этого нужно зарегистрировать JS-движки перед инициализацией ReactJS.NET. В ASP.NET 4.X инициализация ReactJS.NET обычно производится в файле App_Start/ReactConfig.cs (благодаря атрибуту [assembly: WebActivatorEx.PreApplicationStartMethod(…)] содержимое этого файла запускается раньше кода, определенного в методе Application_Start из файла Global.asax), а в ASP.NET Core для этих целей используется файл Startup.cs. Кроме того, если при регистрации указать имя JS-движка по умолчанию, то выбор подходящего движка пройдет по упрощенной схеме.

Подобный подход удобен для пользователей библиотеки, потому что позволяет использовать ReactJS.NET прямо из коробки (без необходимости регистрировать JS-движки вручную). Но у такого подхода есть один существенный недостаток — процесс выбора JS-движка непрозрачен. Зачастую пользователи не знают какой в данный момент используется JS-движок, а некоторые даже не знают о существовании JavaScript Engine Switcher. Недостаток информации приводит к ошибкам и заблуждениям, которые сначала появляются в багтрекере в виде советов, а затем в виде постов в блогах. Заблуждения имеют свойство распространяться с большей скоростью, чем верная информация. В какой-то момент, этот процесс выходит из под контроля и наступает необходимость написать пост подобный этому.

За последние полгода мне часто приходилось общаться с пользователями ReactJS.NET по поводу ошибок, которые возникают из-за JavaScript Engine Switcher. В 80% случаев это были не ошибки, а просто неправильное использование библиотеки, вызванное заблуждениями о том, как она работает. В этом посте я рассмотрю большую часть из этих заблуждений.

MSIE

Для корректной работы модуля JavaScriptEngineSwitcher.Msie достаточно, чтобы на компьютере был установлен Internet Explorer.

На данный момент, большинство JS-библиотек написано на ECMAScript 5 (библиотека React также не является исключением). Полная поддержка стандарта ECMAScript 5 появилась в Internet Explorer только начиная с 9-й версии, когда был выпущен новый JavaScript-движок — Chakra.

Если вы запустите ReactJS.NET в связке с модулем JavaScriptEngineSwitcher.Msie на компьютере, на котором установлен Internet Explorer 8 или ниже, то получите ошибку наподобие этой:

Object doesn't support this property or method

Поэтому, всегда следует использовать JavaScriptEngineSwitcher.Msie только на компьютерах, на которых установлен Internet Explorer 9+ или Microsoft Edge. В идеале на компьютере разработчика и продакшн-сервере должна быть установлена одна и та же версия браузера.

Если у вас нет возможности установить на сервере современную версию браузера, то начните использовать модуль JavaScriptEngineSwitcher.ChakraCore.

V8

  1. Для модуля JavaScriptEngineSwitcher.V8 необходимы сборки msvcp120.dll и msvcr120.dll из распространяемых пакетов Visual C++ для Visual Studio 2013.

    Начиная с версии 2.2.0 нативные сборки модуля JavaScriptEngineSwitcher.V8 зависят от сборки msvcp140.dll из распространяемого пакета Visual C++ для Visual Studio 2015.

  2. Пакет JavaScriptEngineSwitcher.V8 больше не содержит нативных сборок, и поэтому в дополнение к нему вам необходимо установить пакет ClearScript.V8.

    Действительно, начиная с версии 2.1.0 пакет JavaScriptEngineSwitcher.V8 не содержит нативных сборок для Windows, но эти сборки никуда не пропали, а были перемещены в отдельные пакеты: JavaScriptEngineSwitcher.V8.Native.win-x86 и JavaScriptEngineSwitcher.V8.Native.win-x64. Поэтому вам не нужно устанавливать пакет ClearScript.V8, который не имеет никакого отношения к JavaScript Engine Switcher. Вообще, использование пакета ClearScript.V8 вместе с JavaScriptEngineSwitcher.V8 приводит к ошибкам.

  3. После установки пакетов JavaScriptEngineSwitcher.V8.Native.* необходимо вручную скопировать нативные сборки в каталог приложения, потому что это рекомендуется авторами ClearScript.

    После установки этих пакетов не нужно выполнять каких-либо дополнительных действий, и это является основным преимуществом JavaScriptEngineSwitcher. V8. Установка нативных сборок производится с помощью следующих средств:

    1. Для приложений .NET 4.X и веб-приложений ASP.NET 4.X используются скрипты MSBuild (например, JavaScriptEngineSwitcher.V8.Native.win-x64.props)
    2. Для веб-сайтов ASP.NET 4.X используются скрипты PowerShell (например, Install.ps1 и Uninstall.ps1
      ).
    3. Для приложений .NET Core и веб-приложений ASP.NET Core используется механизм, основанный на каталогах runtimes и идентификаторах сред выполнения (RID).

    В версии JavaScriptEngineSwitcher.V8 для .NET 4.X нативные сборки загружаются из нестандартных каталогов. В данном случае, нативные сборки расположены в подкаталогах x86 и x64 каталога bin\[Debug|Release] (для веб-приложений и сайтов просто каталог bin).

  4. Для 64-разрядной версии Windows достаточно установить только пакет JavaScriptEngineSwitcher.V8.Native. win-x64.

    .NET-приложения, ASP.NET веб-приложения и сайты в 64-разрядной версии Windows могут выполняться не только 64-битных процессах, но и в 32-битных. Для корректной работы JavaScriptEngineSwitcher.V8 в 32-битном процессе необходимо установить пакет JavaScriptEngineSwitcher.V8.Native.win-x86. Если вы не знаете в каком процессе будет выполняться ваше приложение или веб-сайт, то установите оба пакета.

ChakraCore

  1. Для корректной работы модуля JavaScriptEngineSwitcher.ChakraCore в ОС Windows необходимы сборки msvcp120.dll и msvcr120.dll из распространяемых пакетов Visual C++ для Visual Studio 2013.

    Начиная с версии 2.1.0 нативные сборки модуля JavaScriptEngineSwitcher.ChakraCore для Windows зависят от сборки msvcp140.dll из распространяемого пакета Visual C++ для Visual Studio 2015.

  2. Пакет JavaScriptEngineSwitcher.ChakraCore больше не содержит нативных сборок, и поэтому в дополнение к нему вам нужно установить пакет Microsoft. ChakraCore.

    Действительно, начиная с версии 2.1.0 пакет JavaScriptEngineSwitcher.ChakraCore не содержит нативных сборок, но эти сборки никуда не пропали, а были перемещены в отдельные пакеты: JavaScriptEngineSwitcher.ChakraCore.Native.win-x86 и JavaScriptEngineSwitcher.ChakraCore.Native.win-x64. Поэтому вам не нужно устанавливать пакет Microsoft.ChakraCore, который не имеет никакого отношения к JavaScript Engine Switcher.

    В дополнение к этим двум пакетам также доступны еще три пакета:

    • JavaScriptEngineSwitcher.ChakraCore.Native.win-arm содержит нативную сборку для ARM-версий Windows. Данный пакет совместим только с .NET Core и .NET Framework 4.5.
    • JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64 содержит нативную сборку для 64-разрядных дистрибутивов Linux. Данный пакет совместим только с .NET Core.
    • JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64 содержит нативную сборку для 64-разрядных версий OS X. Данный пакет совместим только с . NET Core.

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

  3. После установки пакетов JavaScriptEngineSwitcher.ChakraCore.Native.* необходимо вручную скопировать нативные сборки в каталог bin.

    После установки этих пакетов не нужно выполнять каких-либо дополнительных действий, и это является основным преимуществом JavaScriptEngineSwitcher.ChakraCore. Установка нативных сборок производится с помощью следующих средств:

    1. Для приложений .NET 4.X и веб-приложений ASP.NET 4.X используются скрипты MSBuild (например, JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.props).
    2. Для веб-сайтов ASP.NET 4.X используются скрипты PowerShell (например, Install.
      ps1
      и Uninstall.ps1).
    3. Для приложений .NET Core и веб-приложений ASP.NET Core используется механизм, основанный на каталогах runtimes и идентификаторах сред выполнения (RID).

    В версии JavaScriptEngineSwitcher.ChakraCore для .NET 4.X переопределяются стандартные пути для поиска нативных сборок. В данном случае, нативные сборки расположены в подкаталогах x86, x64 и arm каталога bin\[Debug|Release] (для веб-приложений и сайтов просто каталог bin).

  4. Для 64-разрядной версии Windows достаточно установить только пакет JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.

    .NET приложения, ASP.NET веб-приложения и сайты в 64-разрядной Windows могут выполняться не только в 64-битных процессах, но и в 32-битных. Для корректной работы модуля JavaScriptEngineSwitcher.ChakraCore в 32-битном процессе нужно установить пакет JavaScriptEngineSwitcher.ChakraCore.

    Native.win-x86. Если вы не знаете в каком процессе будет выполняться ваше приложение или веб-сайт, тогда устанавливайте оба пакета.

P.S.: Чтобы избежать подобных заблуждений в будущем, я рекомендую вам хотя бы бегло читать разделы «Release Notes» обновляемых NuGet пакетов. В случае, когда проблемы уже возникли, читайте CHANGELOG.md или раздел «Releases» в репозитории проекта на GitHub. Также не стоит забывать про документацию и багтрекер.

ОБНОВЛЕНИЕ 01.01.2019: Исправлены битые ссылки и обновлена информация о пакетах JavaScriptEngineSwitcher.ChakraCore.Native.*. Стоит также отметить, что в JavaScript Engine Switcher 3.X произошли некоторые изменения. Например, модули JavaScriptEngineSwitcher.V8 и JavaScriptEngineSwitcher.ChakraCore для Windows теперь требуют установки распространяемого компонента Microsoft Visual C++ для Visual Studio 2017. О других изменениях вы можете узнать из раздела документации «How to upgrade applications to version 3.

X».

Понравилось это:

Нравится Загрузка…

Рубрики:.NET, JavaScript Метки: .NET, .NET Core, Chakra, ChakraCore, ClearScript, JavaScript, JavaScript Engine Switcher, React, ReactJS.NET, V8

Перевод перевода, учебник по JavaScript: ilyachalov — LiveJournal

Перевод перевода, учебник по JavaScript: ilyachalov — LiveJournal ?
Categories:
  • IT
  • Образование
  • Cancel
Цитата из онлайн-учебника по JavaScript, подраздел 2.3 «Строгий режим — «use strict»» раздела 2 «Основы JavaScript» части 1 «Язык программирования JavaScript» от 5 сентября 2020 г. :

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

Иногда, когда use strict имеет значение, вы можете получить неправильные результаты.

Можно использовать Shift+Enter для ввода нескольких строк и написать в верхней строке use strict:


Тот же фрагмент в английском варианте (https://javascript.info/strict-mode) от 19 мая 2020 г.:

When you use a developer console to run code, please note that it doesn’t

use strict by default.

Sometimes, when use strict makes a difference, you’ll get incorrect results.

So, how to actually use strict in the console?

First, you can try to press Shift+Enter to input multiple lines, and put use strict on top, like this:


И там, и там сформулировано так коряво, что пришлось смотреть оба варианта и долго думать прежде, чем смысл сказанного до меня дошел.

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

Цитата пояснения автора учебника с «GitHub» (https://github.com/javascript-tutorial/ru.javascript.info):

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

Tags: Английский язык, Инструмент, Образование, Программирование

Subscribe

  • PowerShell и ЖЖ: аутентификация с «cookie», интерфейс «XML-RPC»

    Ранее в этой серии постов: … 17. PowerShell и ЖЖ: аутентификация с «cookie», интерфейс «flat» 18. PowerShell: улучшаю преобразование данных из…

  • PowerShell: улучшаю преобразование данных из хеш-таблицы в XML-RPC

    Ранее в этой серии постов: . .. 16. PowerShell и ЖЖ: аутентификация challenge-response, ч.3 (практика через интерфейс «XML-RPC») 17. PowerShell и…

  • Stack Overflow: парадигма «временных» комментариев

    Ранее я уже писал про исчезновение комментариев на видеохостинге «YouTube» и про то, как меня отчитали на веб-сервисе для задавания вопросов по…

Photo

Hint http://pics.livejournal.com/igrick/pic/000r1edq

  • 0 comments
    • 0 comments

    Введение — Документация i18next

    Документация i18next

    🌐 локализация как услуга🔎 Найдите переводчика🎓 Ускоренный курс i18next

    Поиск…

    i18next — это интернационализация , написанная на JavaScript и для JavaScript. Но это гораздо больше!

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

    Сообщество i18next создало интеграции для интерфейсных фреймворков, таких как React, Angular, Vue.js и многих других.

    Но это еще не все. Вы также можете использовать i18next с Node.js, Deno, PHP, iOS, Android и другими платформами.

    Ваше программное обеспечение использует i18next? — Расскажите об этом всему миру!

    сделать твит… написать его на своем веб-сайте… создать сообщение в блоге… и т. д…

    Вы работаете над проектом с открытым исходным ваши переводы? —

    locize

    любит философию открытого исходного кода и может

    поддержать вас.

    ​Подробнее о поддерживаемых платформах​

    Здесь

    вы найдете простое руководство о том, как лучше всего использовать

    react-i18next

    . Некоторые основы i18next и некоторые интересные возможности оптимизации рабочего процесса локализации.

    Вы хотите использовать i18next в Vue.js? Посмотрите этот обучающий пост в блоге.

    Знаете ли вы, что интернационализация также важна для серверной части вашего приложения? В

    этом сообщении блога

    вы можете проверить, как это работает.

    Вы все еще используете i18next в jQuery? Посмотрите этот обучающий пост в блоге.

    Полное решение

    Большинство фреймворков предоставляют вам возможность загрузки переводов. Вы несете ответственность за определение языка пользователя, загрузку переводов и отправку их во фреймворк.

    i18next позаботится об этих проблемах за вас. Мы предоставляем вам плагины для:

    ​Подробнее о плагинах и утилитах​

    Гибкость

    i18next поставляется с жесткими настройками по умолчанию, но он достаточно гибок, чтобы удовлетворить индивидуальные потребности.

    i18next поможет вам!

    ​Подробнее о вариантах​

    Масштабируемость

    Платформа создавалась с учетом масштабируемости. Для небольших проектов может подойти один файл со всеми переводами, но для более крупных проектов такой подход быстро выходит из строя. i18next дает вам возможность разделить переводы на несколько файлов и загружать их по запросу.

    ​Подробнее о пространствах имен​

    Экосистема

    Существует множество модулей, созданных для i18next и вокруг него: от извлечения переводов из кода с помощью объединения переводов с помощью webpack до преобразования gettext, CSV и RESX в JSON.

    • ​Подробнее о подключаемых модулях и утилитах​

    • ​Подробнее о поддерживаемых платформах

    Через locize.com i18next даже предоставляет собственный инструмент управления переводами: локализация как услуга.

    ​Подробнее о предложениях для предприятий​

    Далее — Обзор

    Начало работы

    Последнее изменение 5 мес. назад

    Перевод — JavaScript Chat

    Последнее редактирование 17 февраля 2023

    • На этой странице:
    • Перевод сообщений Конечная точка
    • I18N Данные
    • АВТОМАТИЧЕСКАЯ ПЕРЕВОДА
    • Энабл. Языки

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

    Конечная точка перевода сообщений

    Скопировано!

    Эта конечная точка API переводит существующее сообщение на другой язык. Исходный язык выводится из языка пользователя или определяется автоматически путем анализа его текста. Если возможно, рекомендуется сохранить язык пользователя, см. раздел « Установка языка пользователя » далее на этой странице.

    Конечная точка возвращает переведенное сообщение, обновляет его и отправляет событие message.updated всем пользователям канала.

    Переводится только текстовое поле, настраиваемые поля и вложения не включаются.

    i18n данные

    Скопировано!

    При переводе сообщения добавляется объект i18n . i18n включает текст сообщения на всех языках и код исходного языка.

    Объект i18n имеет по одному полю для каждого языка, названного в соответствии с этим соглашением language-code_text

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

    Автоматический перевод

    Скопировано!

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

    Автоматический перевод очень хорошо работает для разговоров 1-1 или групповых каналов с двумя основными языками.

    Давайте посмотрим, как это работает на практике:

    1. Пользователь отправляет сообщение и включен автоматический перевод

    2. Язык, установленный для этого пользователя, используется в качестве исходного языка (в противном случае исходный язык будет определен автоматически)

    3. Текст сообщения переводится на другой язык используется на канале его участниками

    При использовании автоперевода рекомендуется установить язык для всех пользователей и добавить их в качестве участников канала

    Включение автоматического перевода

    Скопировано!

    По умолчанию автоматический перевод не включен. Вы можете включить его для своего приложения через API или CLI. Вы также можете включить автоматический перевод для каждого канала.

    Установить язык пользователя

    Скопировано!

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

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

    Предостережения и ограничения

    Скопировано!

    • Перевод выполняется только для сообщений длиной до 5000 символов. Blowin’ In The Wind от Bob Dylan содержит менее 1000 символов

    • Сообщения об ошибках и команды не переводятся (например, /giphy hello)

    • При обновлении сообщения переводы пересчитываются автоматически

    • Изменение настроек перевода или языка пользователя не влияет на сообщения, которые уже переведены члены.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *