# Examples
# Hello World
Like every other library, we will start with an hello world example. The first step is to create a project:
{
"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"
}
}
# Install the required dependencies
$ 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
If you see the message Installing GraalJS..., this means that your system wide java is not a GraalVM installation.
This is perfectly OK as extra packages are downloaded to ensure the best performance.
WARNING
If you see the message Current JDK only supports GraalJS in Interpreted mode!, this means that your system wide
java command version is either less than 11 or OpenJ9.
# Write the code
Now that the project is ready to be used, we can write the code:
/// <reference types="@vertx/core" />
// @ts-check
console.log('Hello ES4X');
# Run it
$ npm start
> [email protected] start .../hello-world
> es4x
Hello ES4X
Succeeded in deploying verticle
WARNING
If you see the message Current JDK only supports GraalJS in Interpreted mode!, this means that your system wide
java command version is either less than 11 or OpenJ9.
# Web Application
In this example we will create a simple web application:
{
"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"
}
}
# Install the required dependencies
$ 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
If you see the message Installing GraalJS..., this means that your system wide java is not a GraalVM installation.
This is perfectly OK as extra packages are downloaded to ensure the best performance.
WARNING
If you see the message Current JDK only supports GraalJS in Interpreted mode!, this means that your system wide
java command version is either less than 11 or OpenJ9.
# Write the code
Now that the project is ready to be used, we can write the code:
/// <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 Access
In this example we will create a simple Postgres query application:
{
"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"
}
}
# Install the required dependencies
$ 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
If you see the message Installing GraalJS..., this means that your system wide java is not a GraalVM installation.
This is perfectly OK as extra packages are downloaded to ensure the best performance.
WARNING
If you see the message Current JDK only supports GraalJS in Interpreted mode!, this means that your system wide
java command version is either less than 11 or OpenJ9.
# Write the code
Now that the project is ready to be used, we can write the code:
/// <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());
}
});
# More examples?
If you would like to see more examples, just go to vertx-examples (opens new window). Even though the examples are written in Java, by following the advanced guide, you will see how the use of java APIs can be trivial.