Search in sources :

Example 1 with JadeTemplateEngine

use of io.vertx.ext.web.templ.jade.JadeTemplateEngine in project vertx-web by vert-x3.

the class JadeTemplateTest method testGetJadeConfiguration.

@Test
public void testGetJadeConfiguration() throws Exception {
    JadeTemplateEngine engine = JadeTemplateEngine.create();
    assertNotNull(engine.getJadeConfiguration());
}
Also used : JadeTemplateEngine(io.vertx.ext.web.templ.jade.JadeTemplateEngine) Test(org.junit.Test)

Example 2 with JadeTemplateEngine

use of io.vertx.ext.web.templ.jade.JadeTemplateEngine in project vertx-examples by vert-x3.

the class Server method start.

@Override
public void start() throws Exception {
    // To simplify the development of the web components we use a Router to route all HTTP requests
    // to organize our code in a reusable way.
    final Router router = Router.router(vertx);
    // In order to use a template we first need to create an engine
    final JadeTemplateEngine engine = JadeTemplateEngine.create(vertx);
    // Entry point to the application, this will render a custom template.
    router.get().handler(ctx -> {
        // we define a hardcoded title for our application
        JsonObject data = new JsonObject().put("name", "Vert.x Web");
        // and now delegate to the engine to render it.
        engine.render(data, "templates/index.jade", res -> {
            if (res.succeeded()) {
                ctx.response().end(res.result());
            } else {
                ctx.fail(res.cause());
            }
        });
    });
    // start a HTTP web server on port 8080
    vertx.createHttpServer().requestHandler(router).listen(8080);
}
Also used : JadeTemplateEngine(io.vertx.ext.web.templ.jade.JadeTemplateEngine) Router(io.vertx.ext.web.Router) JsonObject(io.vertx.core.json.JsonObject)

Example 3 with JadeTemplateEngine

use of io.vertx.ext.web.templ.jade.JadeTemplateEngine in project vertx-examples by vert-x3.

the class Server method start.

@Override
public void start() throws Exception {
    // Create a mongo client using all defaults (connect to localhost and default port) using the database name "demo".
    final MongoClient mongo = MongoClient.createShared(vertx, new JsonObject().put("db_name", "demo"));
    // In order to use a JADE template we first need to create an engine
    final JadeTemplateEngine jade = JadeTemplateEngine.create(vertx);
    // To simplify the development of the web components we use a Router to route all HTTP requests
    // to organize our code in a reusable way.
    final Router router = Router.router(vertx);
    // Enable the body parser to we can get the form data and json documents in out context.
    router.route().handler(BodyHandler.create());
    // Entry point to the application, this will render a custom JADE template.
    router.get("/").handler(ctx -> {
        // we define a hardcoded title for our application
        JsonObject data = new JsonObject().put("title", "Vert.x Web");
        // and now delegate to the engine to render it.
        jade.render(data, "templates/index.jade", res -> {
            if (res.succeeded()) {
                ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "text/html").end(res.result());
            } else {
                ctx.fail(res.cause());
            }
        });
    });
    // and now we mount the handlers in their appropriate routes
    // Read all users from the mongo collection.
    router.get("/users").handler(ctx -> {
        // issue a find command to mongo to fetch all documents from the "users" collection.
        mongo.find("users", new JsonObject(), lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(lookup.cause());
                return;
            }
            // now convert the list to a JsonArray because it will be easier to encode the final object as the response.
            final JsonArray json = new JsonArray();
            for (JsonObject o : lookup.result()) {
                json.add(o);
            }
            // since we are producing json we should inform the browser of the correct content type.
            ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
            // encode to json string
            ctx.response().end(json.encode());
        });
    });
    // Create a new document on mongo.
    router.post("/users").handler(ctx -> {
        // since jquery is sending data in multipart-form format to avoid preflight calls, we need to convert it to JSON.
        JsonObject user = new JsonObject().put("username", ctx.request().getFormAttribute("username")).put("email", ctx.request().getFormAttribute("email")).put("fullname", ctx.request().getFormAttribute("fullname")).put("location", ctx.request().getFormAttribute("location")).put("age", ctx.request().getFormAttribute("age")).put("gender", ctx.request().getFormAttribute("gender"));
        // insert into mongo
        mongo.insert("users", user, lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(lookup.cause());
                return;
            }
            // inform that the document was created
            ctx.response().setStatusCode(201);
            ctx.response().end();
        });
    });
    // Remove a document from mongo.
    router.delete("/users/:id").handler(ctx -> {
        // catch the id to remove from the url /users/:id and transform it to a mongo query.
        mongo.removeOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), lookup -> {
            // error handling
            if (lookup.failed()) {
                ctx.fail(lookup.cause());
                return;
            }
            // inform the browser that there is nothing to return.
            ctx.response().setStatusCode(204);
            ctx.response().end();
        });
    });
    // Serve the non private static pages
    router.route().handler(StaticHandler.create());
    // start a HTTP web server on port 8080
    vertx.createHttpServer().requestHandler(router).listen(8080);
}
Also used : JsonArray(io.vertx.core.json.JsonArray) MongoClient(io.vertx.ext.mongo.MongoClient) JadeTemplateEngine(io.vertx.ext.web.templ.jade.JadeTemplateEngine) JsonObject(io.vertx.core.json.JsonObject) Router(io.vertx.ext.web.Router)

Aggregations

JadeTemplateEngine (io.vertx.ext.web.templ.jade.JadeTemplateEngine)3 JsonObject (io.vertx.core.json.JsonObject)2 Router (io.vertx.ext.web.Router)2 JsonArray (io.vertx.core.json.JsonArray)1 MongoClient (io.vertx.ext.mongo.MongoClient)1 Test (org.junit.Test)1