Downloading ZPT-JS and its dependencies
Go to Download section and follow the instructions to download ZPT-JS and its dependencies.
Configuring the HTML header
You must add to your web page the javascript code of ZPT-JS and its dependencies(zpt.min.js). Don't forget to add the reference of the javascript file with the invokation to ZPT-JS (for example gettingStarted.js):
<head>
...
<script src="zpt.min.js" type="text/javascript" defer></script>
<script src="gettingStarted.js" type="text/javascript" defer></script>
...
</head>
Write the template
Customize the body of your HTML document with some of the provided by ZPT-JS statements. One of these is data-content:
<body>
<p data-content="message">
the message
</p>
</body>
The resulting HTML document is:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Getting started</title>
<script src="/zpt/zpt.min.js" defer></script>
<script src="gettingStarted.js" type="text/javascript" defer></script>
</head>
<body>
<p data-content="message">
the message
</p>
</body>
</html>
Build the dictionary
Build a javascript object with key/value pairs. These key/value pairs will be accesible by the whole template. You can use any javascript object, but ZPT provides an specific type that supports a reactive behaviour:
var dictionary = new zpt.ReactiveDictionary({
message: "Hello, world!"
});
Invoke ZPT-JS
Invoke the run method of ZPT:
var zpt = require( 'zpt' );
...
zpt.run({
root: document.body,
dictionary: dictionary
});
The resulting Javascript file (gettingStarted.js) is:
"use strict";
var zpt = require( 'zpt' );
var dictionary = new zpt.ReactiveDictionary({
message: "Hello, world!"
});
zpt.run({
root: document.body,
dictionary: dictionary
});
That's all!
The result
The resulting body element is:
<body>
<p data-content="message">
Hello, world!
</p>
</body>
Updates
If we change some data in the dictionary this way:
dictionary.message = "Bye, world!";
We don't need to do anything else, the body element now is:
<body>
<p data-content="message">
Bye, world!
</p>
</body>
The data-content attribute is ignored by browsers: all the data-* attributes are completely ignored by the user agent.
Using ZPT-JS and node.js
That's OK. But... how can we use ZPT-JS at the server side (using node.js)? jsdom is needed when no browser is available:
"use strict";
var jsdom = require( 'jsdom' );
var { JSDOM } = jsdom;
// Build JSDOM instance
var dom = new JSDOM(
'<!doctype html>'
+ '<html>'
+ '<body><h1 data-content="'hello, world!'">a text</h1></body>'
+ '</html>'
);
// Init some important vars
var window = dom.window;
var document = window.document;
global.window = window;
// Parse template
var zpt = require( 'zpt' );
zpt.run({
root: document.body,
dictionary: {}
});
console.log( 'Done!' );