UNPKG

smarty4js

Version:

A JavaScript Template Engine Most Like Smarty

108 lines (75 loc) 2.47 kB
Smarty4Js (Smarty For JavaScript) ====================================== ## What? - JavaScript template engine - Supports Smarty template syntax - Used in Node.js - Simple and powerful way to create and render a template ## Why? - Powerful - Don't want to have two or more templates in your project - Deep love for Smarty ## When? - When your synchronous templates is Smarty, and your Ajax templates will use the same template - When you want to write Smarty templates with JavaScript anywhere - When you want to put a lot of logic in JavaScript templates - When you like Smarty very much ## How? - Single - With Grunt - With Gulp - With EDP - With all Node.js web subject ### Usage #### Install ```bash npm install -g smarty4js ``` #### Syntax ``` Most of Smarty syntax is supported. ``` #### Command line ```bash // get tpl.js smarty4Js compile a.tpl [b.tpl ...] [-c|--config=confPath -o|--output=outputPath] -c | --config: Use user-define config file -o | --output: Specify a destination directory // get tpl.html smarty4Js render a.tpl [b.tpl ...] -d|--data=jsonFilePath [-c|--config=confPath -o|--output=outputPath] -d | --data : JSON data file path to render -c | --config: Use user-defined config file -o | --output: Specify a destination directory // show current version smarty4Js -v|--version ``` - if `render`, return html(`demo.tpl.html`), if `compile`, return jsTpl(`demo.tpl.js`) - jsTpl is a closure. It has a `render` method that you can use: ```Javascript // amd and cmd var template = require('demo.tpl'); template.render(data); // you can also use <script> ``` #### used in Node.js ```javascript // get Smarty class var Smarty = require('smarty4Js'); // create a Smarty object var s = new Smarty(); // if compile source is template code and have `include, extend...` sentence in code // you must give a path by `setBasedir` method s.setBasedir(path); // get compiler // `tpl` param is template code or template file path var compiler = s.compile(tpl); // get ast var ast = s.ast; // get js code var js = compiler.getJsTpl(); // render Smarty with data (3 methods) var html = compiler.render(data); // `tpl` param is template code or template file path var html = s.render(tpl, data); var html = (new Function('return ' + js)()).render(data); ```