# 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'.