# Παραδείγματα

# 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..., αυτό σημαίνει ότι το σύστημά σας δεν έχει εγκατάσταση GraalVM java. Αυτό είναι απολύτως εντάξει, καθώς λαμβάνονται επιπλέον πακέτα για να εξασφαλιστεί η καλύτερη απόδοση.

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.

# Εφαρμογή ιστού

Σε αυτό το παράδειγμα θα δημιουργήσουμε μια απλή διαδικτυακή εφαρμογή:

{
  "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..., αυτό σημαίνει ότι το σύστημά σας δεν έχει εγκατάσταση GraalVM java. Αυτό είναι απολύτως εντάξει, καθώς λαμβάνονται επιπλέον πακέτα για να εξασφαλιστεί η καλύτερη απόδοση.

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..., αυτό σημαίνει ότι το σύστημά σας δεν έχει εγκατάσταση GraalVM java. Αυτό είναι απολύτως εντάξει, καθώς λαμβάνονται επιπλέον πακέτα για να εξασφαλιστεί η καλύτερη απόδοση.

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());
  }
});

# More examples?

Εάν θέλετε να δείτε περισσότερα παραδείγματα, απλώς μεταβείτε στο vertx-examples (opens new window). Eπαρόλο που τα παραδείγματα είναι γραμμένα σε Java, ακολουθώντας τον οδηγό advanced, θα δείτε πώς η χρήση των Java API μπορεί να είναι ασήμαντη.