# Hello World

hello-es4x.js 文件中您可以创建最简单的应用:

vertx.createHttpServer()
  .requestHandler(req => {
    req.response()
      .end('Hello ES4X world!');
  })
  .listen(8080);

使用命令运行刚才创建的应用:

$ es4x hello-es4x.js

提示

在UNIX系统中,脚本文件可以被作为可执行文件,使用shebang #!/usr/bin/env es4x 可以使这些脚本自动执行

新建终端窗口并输入:

$ curl localhost:8080
Hello ES4X world!

注意

使用 es4x 命令可以直接运行除去 vertx 之外没有其他的依赖的小型脚本文件。对于更复杂的项目应该使用项目或包管理工具

# 创建一个新项目

ES4X 使用 npm 作为项目管理工具,使用以下命令创建一个新项目:

# 创建项目目录
mkdir myapp

# 进入项目目录
cd myapp

# 创建项目
es4x init

一个项目是一个 package.json 文件,文件中有一些预先配置好的属性:







 
 
 


 






{
  "version" : "1.0.0",
  "description" : "This is a ES4X empty project.",
  "name" : "myapp",
  "main" : "index.js",
  "scripts" : {
    "test" : "es4x-launcher test index.test.js",
    "postinstall" : "es4x install",
    "start" : "es4x-launcher"
  },
  "dependencies": {
    "@vertx/core": "latest"
  },
  "keywords" : [ ],
  "author" : "",
  "license" : "ISC"
}

post-install 命令会代理es4x来处理 maven maven依赖以及创建 es4x-launcher 脚本

提示

es4x-launcher 脚本会确保应用使用es4x运行时运行以及测试而不是 nodejs

# create-vertx-app 命令

使用 create-vertx-app 命令,您可以迅速的创建一个基于TypeScript或JavaScript的ES4X应用。如果您偏向于使用GUI来创建应用,那么这个生成器可以被作为PWA (opens new window)来使用

# 添加依赖

给项目添加依赖的方式和 JavaScript 开发者所使用的方式是一致的:

# 添加其他的依赖...
yarn add -D @vertx/unit # 或者 npm install @vertx/unit --save-dev
yarn add @vertx/web # 或者 npm install @vertx/web --save-prod

# 将会开始下载Java的依赖
npm install

# 编写程序

当您的项目都创建好之后就可以开始编写您的程序了。正像之前说的那样,ES4X使用 TypeScript 的代码补全以及可选的类型检查等来向开发者提供更好的体验。

在所有的ES4X应用中,全局对象 vertxvert.x 配置好的实例,它可以被用在应用中。

提示

为了在 Visual Studio Code (opens new window) 中使用代码补全,脚本文件第一行应该这么写:

/// <reference types="es4x" />

Hello world 应用 index.js 文件应该是这样的:



 














/// <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/')

这个应用启动了一个服务器并监听8080端口等待链接,对于所有请求根URL(/)的都返回 "Hello from Vert.x Web!",对于其他URL的请求都返回 404 Not Found

注意

ES6的module语法可以在 .js 文件中使用。ES4X会把这些语法翻译成 commonjs require() 声明,但是 exports 将不会被翻译。这个特性只是为了辅助使用有自动import功能的IDE,比如 Visual Studio Code

# MJS 支持

ES4X也支持 .mjs 文件。在这个情况下module的处理方式不会使用 commonjs require() 而是使用 graaljs 的native module加载器。

使用graaljs的 .mjs 文件支持 importexport 以及可以作为符合ES6规范的一种设计。

提示

为了开启 .mjs 支持有两种方式:在 JavaScript 文件中使用 .mjs 扩展或者启动应用时添加标记 -Desm

注意

在同一个项目中不能混用 commonjsesm,如果您不确定的话使用 commonjs