# Примеры
# 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 может быть простым.