# Примеры

# Hello World

Как и с любой другой библиотекой, мы начнем с примера hello world. Первым шагом мы создадим проект:

{
  "name": "hello-es4x",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "@vertx/core": "latest",
    "@es4x/create": "latest"
  },
  "scripts": {
    "postinstall": "es4x install",
    "start": "es4x"
  }
}

# Установим требуемые зависимости

$ npm i

> [email protected] postinstall .../hello-world
> es4x install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 2 packages from 1 contributor and audited 2 packages in 6.704s
found 0 vulnerabilities

WARNING

Если вы видите сообщение Installing GraalJS..., это значит, что ваша java - не GraalVM. Это вполне нормально, так как дополнительные пакеты будут загружены для лучшей производительности.

WARNING

Если вы видите сообщение Current JDK only supports GraalJS in Interpreted mode!, это значит, что ваша java ниже версией, чем 11 или OpenJ9.

# Пишем код

Когда наш проект создался, мы можем писать код:

/// <reference types="@vertx/core" />
// @ts-check

console.log('Hello ES4X');

# Запускаем его

$ npm start

> [email protected] start .../hello-world
> es4x

Hello ES4X
Succeeded in deploying verticle

WARNING

Если вы видите сообщение Current JDK only supports GraalJS in Interpreted mode!, это значит, что ваша java ниже версией, чем 11 или OpenJ9.

# Web-приложение

В этом примере мы создадим простое web-приложение:

{
  "name": "web-application",
  "version": "0.0.1",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "@vertx/core": "latest",
    "@vertx/web": "latest"
  },
  "devDependencies": {
    "@es4x/create": "latest"
  },
  "scripts": {
    "start": "es4x",
    "postinstall": "es4x install"
  }
}

# Установим требуемые зависимости

$ npm i

> [email protected] postinstall .../hello-world
> es4x install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 2 packages from 1 contributor and audited 2 packages in 6.704s
found 0 vulnerabilities

WARNING

Если вы видите сообщение Installing GraalJS..., это значит, что ваша java - не GraalVM. Это вполне нормально, так как дополнительные пакеты будут загружены для лучшей производительности.

WARNING

Если вы видите сообщение Current JDK only supports GraalJS in Interpreted mode!, это значит, что ваша java ниже версией, чем 11 или OpenJ9.

# Пишем код

Когда наш проект создался, мы можем писать код:

/// <reference types="@vertx/core" />
// @ts-check

import {Router} from '@vertx/web';

const app = Router.router(vertx);

// serve a simple Hello, World! text message
app.get("/plaintext").handler(ctx => {
  ctx.response()
    .putHeader("Content-Type", "text/plain")
    .end('Hello, World!');
});

// serve a simple Hello, World! JSON message
app.get("/json").handler(ctx => {
  ctx.response()
    .putHeader("Content-Type", "application/json")
    .end(JSON.stringify({message: 'Hello, World!'}));
});

// create an HTTP server and let it be handled by the application
vertx
  .createHttpServer()
  .requestHandler(app)
  .listen(8080);

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

# Доступ к Postgres

В этом примере мы напишем просто приложение с запросами в Postgres:

{
  "name": "posgres",
  "version": "0.0.1",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "@vertx/core": "latest",
    "@vertx/pg-client": "latest"
  },
  "devDependencies": {
    "@es4x/create": "latest"
  },
  "scripts": {
    "start": "es4x",
    "postinstall": "es4x install"
  }
}

# Установим требуемые зависимости

$ npm i

> [email protected] postinstall .../hello-world
> es4x install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 2 packages from 1 contributor and audited 2 packages in 6.704s
found 0 vulnerabilities

WARNING

Если вы видите сообщение Installing GraalJS..., это значит, что ваша java - не GraalVM. Это вполне нормально, так как дополнительные пакеты будут загружены для лучшей производительности.

WARNING

Если вы видите сообщение Current JDK only supports GraalJS in Interpreted mode!, это значит, что ваша java ниже версией, чем 11 или OpenJ9.

# Пишем код

Когда наш проект создался, мы можем писать код:

/// <reference types="@vertx/core" />
// @ts-check

import { PgPool } from '@vertx/pg-client';
import { PoolOptions } from '@vertx/sql-client/options';
import { PgConnectOptions } from '@vertx/pg-client/options';
import { Tuple } from '@vertx/sql-client';

const SELECT_WORLD = "SELECT id, randomnumber from WORLD where id=$1";

let connectOptions = new PgConnectOptions()
  .setCachePreparedStatements(true)
  .setHost('database-server')
  .setUser('dbuser')
  .setPassword('dbpass')
  .setDatabase('hello_world');

// Pool options
let poolOptions = new PoolOptions()
  .setMaxSize(1);

// Create the client pool
let client = PgPool.pool(vertx, connectOptions, poolOptions);

// select a random row from the database
client.preparedQuery(SELECT_WORLD).execute(Tuple.of(Math.random()), res => {
  if (res.succeeded()) {
    let resultSet = res.result().iterator();

    if (!resultSet.hasNext()) {
      ctx.fail(404);
      return;
    }

    let row = resultSet.next();

    console.log({
      id: row.getInteger(0),
      randomNumber: row.getInteger(1)
    });
  } else {
    console.trace(res.cause());
  }
});

# Больше примеров?

Если вам нужны дополнительные примеры, ознакомьтесь с vertx-examples (opens new window). Хотя примеры написаны на Java, с помощью данного руководства, вы сможете увидеть, что использование java API может быть простым.