Паттерны фронтенда с Architect serverless framework
Подавляющее большинство браузеров, используемых сегодня, поддерживают модули ES, но до недавнего времени было сложно использовать модули в вашем проекте. До широкой поддержки браузеров модули требовали этапа компиляции с помощью такого инструмента, как Webpack (или Browserify, или Gulp и т. Д.), Чтобы преобразовать их во что-то, что браузер мог бы использовать.
Но теперь вы можете использовать модули ES в браузере без каких-либо дополнительных затрат, что делает их идеальным компаньоном для бессерверного стека.
Architect позволяет вам обслуживать модули ES в браузере через локальные рабочие процессы и из облачных функций Lambda.
В этом посте вы узнаете, как начать работу со стандартными модулями JavaScript в бессерверном проекте Architect.
Мы будем опираться на концепции из бессерверных шаблонов интерфейса с Architect Views, поэтому вам может быть полезно сначала проверить это.
1. Создайте новый проект архитектора.
mkdir arc-esm cd arc-esm npm init --yes npm i @architect/architect
Затем создайте .arc
файл в корне вашего проекта:
@app arc-esm @http get /js/:module
get /js/:module
- пример параметризованного маршрута. Нажатие на URL/js/mycode.mjs
передастmycode.mjs
какreq.params.module
обработчику лямбда-функции.
Затем сгенерируйте свое приложение локально:
npx create --local mkdir src/shared mkdir src/views
Вот как будет выглядеть проект Architect в вашей локальной файловой системе:
arc-esm ├── public/ ├── src │ ├── http │ │ └── get-js-000module/ │ ├── shared/ │ └── views/ └── .arc
2. Добавьте свою страницу индекса в src/public
Создать src/public/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Architect ES Modules</title> </head> <body> <h1>Architect</h1> <div id="js-message"></div> <!-- ES MODULE 👇🏾 --> <script type="module" src="/js/main.mjs" crossorigin></script> </body> </html>
3. Добавьте модуль просмотра.
Создать src/views/hello.mjs
export default function Hello () { console.log('Why, hello there.') let message = document.getElementById('js-message') message.innerHTML = 'You are now rocking with ES Modules.' }
Совет: код в
src/views
автоматически используется дляHTTP GET
маршрутов
4. Добавьте сценарий основной точки входа.
Создать src/views/main.mjs
import Hello from './hello.mjs' Hello()
Совет: наличие основного модуля ES, который импортирует все скрипты, необходимые для страницы, позволяет загружать остальные модули параллельно. Модули также кэшируются в браузере, поэтому последующие запросы для того же модуля не повлияют на производительность приложения.
4. Отредактируйте вашу лямбда-функцию, чтобы она возвращала запрошенные модули.
Обновить src/http/get-js-000module/index.js
Обратите внимание на ответ
Content-Type
изtext/javascript
, который требуется браузеру для загрузки модулей ES
5. Протестируйте его у местного архитектора sandbox
npx sandbox
Вы должны увидеть вывод консоли, показывающий, что ваш маршрут модуля был смонтирован, а также локальный URL:
get /js/:module ....................... get-js-000module Started HTTP "server" @ http://localhost:3333
Кроме того, вы также можете добавить
"start": "npx sandbox"
в своиpackage.json
сценарии и запустить локальный сервер песочницы сnpm start
Вот и все! 🌈
Загрузите http://localhost:3333/js/main.js
через бесшовную локальную среду разработки Architect, и теперь вы обслуживаете модули ES без необходимости устанавливать сборщик пакетов или писать сценарии сборки. ✨
@ dam💕