jsin
Version:
JSIN - template engine. Server and client side. Includes, layouts. Async compiling. Pre-compiling for browser.
140 lines (107 loc) • 2.84 kB
Markdown
# JSIN - Javascript Include
Template engine for use at server and client side.
## Features
- Well-known PHP-like template tags.
- Accurate quote parsing.
- Asynchronous compiling of templates on the fly.
- Pre-compiling for use in browser.
- Supports includings and layoutings.
## Usage
### Syntax
Constructions:
- ``
- `<?= /* print value or result of expression */ ?>`
- `<?h= /* print value or result of expression with escaped html special chars <>&" */ ?>`
- `<?s= /* print value or result of expression with backslashed script special chars \\n\r"' */ ?>`
Functions:
- `print(string)`
- `printh(string, [apos])` - if set `apos` to `true`, then apostrophe `'` will be escaped instead of quotes `"`.
- `prints(string)`
- `include(template, [data])`
- `layout(template, [data], callback)`
- `contents()`
### Example
```html
<!-- mytemplate.jsin -->
<h1>Example</h1>
<p>
<?= "Check ?>'\" special chars and variable " + boo ?>
<p>
<?h= "Check html escaping &<>\"" ?>
<p>
<?s= "Check script escaping \\\n\r\"\'" ?>
</p>
<p>
1 === 1
1 !== 1
</p>
<div>
<p>Example layout inside</p>
</div>
<p>Thanx!</p>
```
```html
<!-- layout.jsin -->
<div>
<p>Example layout begin with variable <?= boo ?></p>
<div>
</div>
<p>Example layout end</p>
</div>
```
### Server side
```js
var jsin = require('jsin');
jsin.setDirectory('path/to/templates');
// you can omit extension .jsin
jsin.include('mytemplate', {
boo: 'booooooo'
}, function(err, res) {
if (err) {
console.log('Error: ' + err);
} else {
console.log(res);
}
});
```
### Client side
Compile client-side script using `jsinc` command-line tool:
```sh
$ jsinc path/to/*.jsin jsin.compiled.js
```
or
```sh
$ jsinc -d path/to/jsin/dir jsin.compiled.js
```
Options:
- `-d` - compile all files in directory and subdirectories, excluding this directory from template names.
- `-t` - compile templates only, exclude definition of jsin object.
- `-b` - beautify.
- `-u` - uglify.
In browser:
```html
<script src="jsin.compiled.js"></script>
<script>
var res = jsin.include('mytemplate', {
boo: 'booooo'
});
document.getElementById('res').innerHTML = res;
</script>
```
## License
Copyright © 2014 Maksim Krylosov <Aequiternus@gmail.com>
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.