# Hello World

Самое простое приложение, которое можно написать - это Hello World в файле hello-es4x.js:

vertx.createHttpServer()
  .requestHandler(req => {
    req.response()
      .end('Hello ES4X world!');
  })
  .listen(8080);

Вы можете запустить это приложение следующим способом:

$ es4x hello-es4x.js

TIP

В системах UNIX, скрипты можно сделать выполняемыми и шебанг #!/usr/bin/env es4x скриптами, что сделает их автозапускаемыми. При этом учтите, что зависимости уже должны быть в текущей рабочей директории.

Во второй консоли:

$ curl localhost:8080
Hello ES4X world!

WARNING

Запуск скриптов с помощью команды es4x напрямую может быть полезным для маленьких скриптов, которые зависят только от vertx. Для более сложных приложений следует использовать менеджер проекта и пакетов.

# Создаем новый проект

ES4X использует инструмент для управления проектом npm, для создания нового проекта используется утилитарная команда:

# создаем директорию проекта
mkdir myapp

# переходим в директорию проекта
cd myapp

# создаем проект
es4x project

Проект - это файл package.json с некоторыми предварительно настроенными опциями:







 
 
 

 
 
 
 
 
 
 





{
  "version" : "1.0.0",
  "description" : "This is a ES4X empty project.",
  "name" : "myapp",
  "main" : "index.js",
  "scripts" : {
    "test" : "es4x test index.test.js",
    "postinstall" : "es4x install",
    "start" : "es4x"
  },
  "dependencies": {
    "@es4x/create": "latest",
    "@vertx/unit": "latest"
  },
  "dependencies": {
    "@vertx/core": "latest"
  },
  "keywords" : [ ],
  "author" : "",
  "license" : "ISC"
}

TIP

Для проектов TypeScript, запустите команду создания проекта с опцией: es4x project --ts

Хук post-install поручает es4x разрешить maven зависимости и создать скрипт es4x-launcher.

TIP

Скрипт es4x-launcher обеспечивает запуск приложений через es4x, а не nodejs. Этот скрипт может быть использован в продакшне, где вы можете отказаться от пакета @es4x/create.

# create-vertx-app

С помощью create-vertx-app вы можете быстро загрузить ES4X TypeScript или JavaScript приложения в несколько нажатий клавиш. Если вы предпочитаете создавать приложения через GUI, может быть использован такой генератор, как PWA (opens new window).

# Добавляем зависимости

Добавление зависимостей не отличается от привычного для JavaScript разработчиков:

# добавляем другие зависимости...
npm install @vertx/unit --save-dev # OR yarn add -D @vertx/unit
npm install @vertx/web --save-prod # OR yarn add @vertx/web

# запустит загрузку зависимостей npm + java
npm install

# Пишем код

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

Для всех приложений ES4X доступен глобальный объект vertx - настроенный экземпляр vert.x, который может быть использован приложением.

TIP

Чтобы завершение кода было доступно в Visual Studio Code (opens new window), первая строка вашего главного скрипта должна быть такой:

/// <reference types="es4x" />

Примитивный index.js должен быть таким:

 
 















/// <reference types="es4x" />
// @ts-check
import { Router } from '@vertx/web';

const app = Router.router(vertx);

app.route('/').handler(ctx => {
  ctx.response()
    .end('Hello from Vert.x Web!');
});

vertx.createHttpServer()
  .requestHandler(app)
  .listen(8080);

console.log('Server listening at: http://localhost:8080/')

Данное приложение запускает сервер и прослушивает порт 8080 в ожидании подключений. Приложение будет отвечать "Hello from Vert.x Web!" всем запросам на корневой URL (/). Для запросов по другим путям приложение ответит 404 Not Found.

WARNING

Синтаксис модуля ES6 может быть использован в файлах .js. ES4X переведет команды commonjs require(), однако команды exports не будут переведены. Эта возможность нужна только, чтобы улучшить работу с IDE, которые могут делать автоимпорт, например, Visual Studio Code.

# Поддержка MJS

ES4X также поддерживает файлы .mjs. В этом случае разрешение модулей не будет использовать commonjs require(), а будет использовать нативный загрузчик модулей graaljs.

С graaljs .mjs поддержка и import, и export будет работать, как описано в спецификации ES6.

TIP

Чтобы включить поддержку .mjs, или используйте расширение .mjs в ваших файлах JavaScript, или запустите приложение с флагом -Desm.

WARNING

Нельзя смешивать commonjs и esm В одном проекте. Если вы не уверены в выборе, используйте commonjs.