Используйте TypeScript, чтобы перенести свой новый JavaScript в старые браузеры

Недавно я опубликовал краткое руководство по созданию одностраничных приложений с использованием «ванильного» JavaScript-фреймворка:



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

Я быстро получил комментарий о том, целесообразно ли предполагать, что у клиентов будет последняя версия JavaScript. Ответ: «Это зависит». Большинство потребителей используют новейшие движки, потому что браузеры телефонов и настольных компьютеров обновляются автоматически. Именно корпоративные среды представляют наибольший риск, поскольку в некоторых случаях они могут быть «заблокированы» в более старых версиях браузеров.

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

Примечание. код как есть использует новый fetch API для загрузки данных из тестовой конечной точки. Как и старый XMLHttpRequest API, это не языковая функция, а функция браузера, доступная для JavaScript. В этом посте рассматривается преобразование современного кода JavaScript в ECMAScript 5, а не обработка различий между браузерами за пределами поддерживаемой версии JavaScript.

Настраивать

Необходимые условия: git и node.js (с npm).

Сначала клонируйте репозиторий.



git clone https://github.com/jeremylikness/VanillaJs.git

Откройте plain\index.html в своем браузере, чтобы убедиться, что он работает. Это современная версия. Создайте новый каталог с именем legacy и скопируйте в него все три файла из plain. Перейдите в свой устаревший каталог.

Инициализировать проект узла.

npm init -y

Установите TypeScript.

npm install typescript --save-dev

Инициализируйте конфигурацию TypeScript.

npx tsc --init

Отредактируйте сгенерированный файл tsconfig.json так, чтобы для свойства strict было установлено значение false. Убедитесь, что target равно es5 (это должно быть значение по умолчанию), чтобы создать устаревший код.

Трансформировать

Далее вы преобразуете JavaScript в TypeScript.

Измените расширение файла с .js на .ts. Если вы используете IDE, например бесплатную кроссплатформенную Visual Studio Code, вы заметите несколько ошибок. Есть две вещи, необходимые для завершения преобразования.

Сначала в конструкторе класса Wrapper добавьте к каждому из параметров ключевое слово public. Это сообщает TypeScript, что они являются допустимыми свойствами в классе. Обновленный конструктор должен выглядеть так:

constructor(public element, public text, public display = true) {

Затем исправьте коллизию между статическими методами generate, переименовав метод на AnchorWrapper в generateAnchor:

static generateAnchor(href, text, target = “_blank”) {

Чтобы использовать недавно переименованный метод, найдите и замените два экземпляра AnchorWrapper.generate на AnchorWrapper.generateAnchor.

Последний шаг — скомпилировать TypeScript в JavaScript.

npx tsc

Вот и все! Вы сможете открыть файл index.html в каталоге legacy и увидеть, что приложение работает успешно. Посмотрите на сгенерированный код app.js, чтобы увидеть, насколько он изменился по сравнению с более ранними версиями JavaScript! Вы можете использовать этот же процесс для преобразования других ваших проектов JavaScript, воспользовавшись тем фактом, что TypeScript является расширенным набором диалектов JavaScript.

С уважением,