A templating engine for Kitura that uses Mustache-based templates.
Kitura-MustacheTemplateEngine is a plugin for Kitura Template Engine for using GRMustache with the Kitura server framework. This makes it easy to use Mustache templating, with a Kitura server, to create an HTML page with integrated Swift variables.
The template file is basically HTML with gaps where we can insert code and variables. GRMustache is a templating language used to write a template file and Kitura-MustacheTemplateEngine can use any standard Mustache template.
Mustache manual provides documentation and examples on how to write a Mustache template File.
By default the Kitura Router will look in the Views folder for Mustache template files with the extension .mustache.
The following example takes a server generated using kitura init and modifies it to serve Mustache-formatted text from a .mustache file.
The files which will be edited in this example, are as follows:
<ServerRepositoryName>
├── Package.swift
├── Sources
│ └── Application
│ └── Application.swift
└── Views
└── Example.mustache
The Views folder and Example.mustache file will be created later on in this example, since they are not initialized by kitura init.
- Define "https://github.com/IBM-Swift/Kitura-MustacheTemplateEngine.git" as a dependency.
- Add "KituraMustache" to the targets for Application.
Inside the Application.swift file, add the following code to render the Example.mustache template file on the "/winner" route:
import KituraMustacheAdd the following code inside the postInit() function:
router.add(templateEngine: MustacheTemplateEngine())
router.get("/winner") { _, response, next in
let winnings = 10000.0
let context: [String:Any] =
["name" : "Joe Bloggs", "winnings": winnings, "taxed_winnings": winnings * 0.6, "taxable" : true]
try response.render("Example.mustache", context: context)
response.status(.OK)
next()
}Create the Views folder and put the following Mustache template code into a file called Example.mustache:
<html>
Hello {{name}}!
You have just won {{winnings}} dollars!
{{#taxable}}
Well, {{taxed_winnings}} dollars, after taxes.
{{/taxable}}
</html>
This example is adapted from the Mustache manual code to congratulate the winner of a contest.
Run the application and once the server is running, go to http://localhost:8080/winner to view the rendered Mustache template.
This library is licensed under Apache 2.0. Full license text is available in LICENSE.