# Hello World
Najprostszą aplikacją jaką możemy stworzyć jest Hello World, który umieścimy w pliku hello-es4x.js:
vertx.createHttpServer()
.requestHandler(req => {
req.response()
.end('Hello ES4X world!');
})
.listen(8080);
Teraz możesz uruchomić aplikację wywołując:
$ es4x hello-es4x.js
TIP
W systemach typu UNIX, skrypty mogą być wykonywalne i dzięki użyciu shebanga #!/usr/bin/env es4x mogą być uruchamiane
automatycznie. Jednak taka dependencja powinna być wówczas obecna w katalogu bieżącym.
I w drugim terminalu wpisując:
$ curl localhost:8080
Hello ES4X world!
WARNING
Wywoływanie skryptów korzystających z komendy es4x może być przydatne w małych skryptach, nie posiadających innych
dependencji niż vertx. W przypadku bardziej złożonych aplikacji korzystaj z menadżera projektu lub z menadżera pakietów.
# Tworzenie nowego projektu
ES4X używa npm jako menadżera pakietów. Aby stworzyć nowy projekt można użyć komendy przez niego zapewnionej:
# stworzenie folderu z projektem
mkdir myapp
# wejście do folderu z projektem
cd myapp
# stworzenie projektu
es4x project
Podstawowa konfiguracja projektu znajduje się w pliku 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
Dla projektów tworzonych za pomocą TypeScript uruchom narzędzie do tworzenia projektu wywołując: es4x project --ts
post-install hook odwoła się do es4x, aby rozwiązać wszystkie maven dependencies i stworzyć skrypt es4x-launcher.
TIP
Skrypt es4x-launcher zapewni, że aplikacja będzie korzystać z es4x a nie z nodejs. Skrypt może być użyty na
produkcji, gdzie pakiet @es4x/create może być pominięty.
# create-vertx-app
Używając create-vertx-app możesz szybko uruchomić swoją aplikację ES4X TypeScript lub JavaScript używając zaledwie
kilku przycisków. Jeśli wolisz korzystać z GUI przy tworzeniu aplikacji możesz skorzystać z tego samego generatora, jak
przy PWA (opens new window).
# Dodawanie dependencji
Dodawanie dependencji nie różni się od sposobu w jaki robią to deweloperzy JavaScript:
# dodanie innych dependencji...
npm install @vertx/unit --save-dev # OR yarn add -D @vertx/unit
npm install @vertx/web --save-prod # OR yarn add @vertx/web
# spowoduje pobranie dependencji npm + java
npm install
# Kodowanie
Po skończonym setupie projektu czas na napisanie kodu. Zgodnie z tym, co zostało powiedziane wcześniej, ES4X używa
definicji TypeScripta, aby zapewnić lepsze doświadczenia developerom za pomocą uzupełniania kodu i opcjonalnego
sprawdzania poprawności typów.
Dla wszystkich aplikacji ES4X istnieje globalny obiekt vertx, który jest skonfigurowaną instancją vert.x i którą
można użyć w aplikacji.
TIP
Aby móc korzystać z uzupełniania kodu w Visual Studio Code (opens new window) pierwsza linijka kodu w głównym skrypcie powinna brzmieć:
/// <reference types="es4x" />
Aplikacja powitalna w pliku index.js powinna wyglądać następująco:
/// <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/')
Powyższy program wystartuje serwer, który będzie nasłuchiwał połączeń na porcie 8080. Program będzie odpowiadał "Hello from Vert.x Web!" na zapytania dla root URL (/) lub route. Dla każdej innej ścieżki będzie odpowiadał 404 Not
Found.
WARNING
W plikach .js można korzystać ze składni ES6. ES4X przetłumaczy to na polecenia require() w commonjs. Polecenia
exports niestety nie zostaną przetłumaczone. To udogodnienie będzie działało wyłącznie w IDE mającym funkcję auto
importu takim jak Visual Studio Code.
# Wsparcie MJS
ES4X wspiera też pliku o rozszerzeniu .mjs. W takim przypadku nie zostanie użyty require() z commonjs, lecz
graaljs native module loader.
Graaljs wspiera zarówno import jak i export w plikach o rozszerzeniu .mjs, powodując, że będą one działały jak w
specyfikacji ES6.
TIP
Aby włączyć wsparcie dla .mjs skorzystaj z rozszerzenia .mjs w plikach JavaScript lub uruchom swoją aplikację z
flagą -Desm.
WARNING
Niemożliwym jest mieszanie commonjs oraz esm w ramach jednego projektu. Jeśli nie jesteś pewny której specyfikacji
powinieneś użyć, korzystaj z 'commonjs'.