Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/umakantp/jsmart
jSmart is Smarty Javascript Template Engine, port of the PHP Smarty Template Engine
https://github.com/umakantp/jsmart
javascript javascript-template-engine jsmart smarty smarty-template-engine template-engine
Last synced: 3 days ago
JSON representation
jSmart is Smarty Javascript Template Engine, port of the PHP Smarty Template Engine
- Host: GitHub
- URL: https://github.com/umakantp/jsmart
- Owner: umakantp
- License: mit
- Created: 2013-12-10T12:08:53.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-10-10T01:42:22.000Z (about 1 month ago)
- Last Synced: 2024-10-18T20:50:56.427Z (26 days ago)
- Topics: javascript, javascript-template-engine, jsmart, smarty, smarty-template-engine, template-engine
- Language: JavaScript
- Homepage:
- Size: 2 MB
- Stars: 134
- Watchers: 10
- Forks: 35
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
jSmart - Smarty template engine in JavaScript
======
[![Build Status](https://travis-ci.org/umakantp/jsmart.png?branch=master)](https://travis-ci.org/umakantp/jsmart)
[![npm version](https://img.shields.io/npm/v/jsmart.svg)](https://www.npmjs.com/package/jsmart)
[![David](https://img.shields.io/david/dev/umakantp/jsmart.svg)](https://www.npmjs.com/package/jsmart)
[![npm](https://img.shields.io/npm/dw/jsmart.svg)](https://www.npmjs.com/package/jsmart)
[![npm](https://img.shields.io/npm/l/jsmart.svg)](https://github.com/umakantp/jsmart/blob/master/LICENSE)jSmart is a port of the Smarty Template Engine to Javascript, a JavaScript template library that supports the template [syntax](https://github.com/umakantp/jsmart/wiki/syntax) and all the features (functions, variable modifiers, etc.) of the well-known PHP template engine [Smarty](http://www.smarty.net/).
jSmart is written entirely in JavaScript, does not have any DOM/browser or third-party JavaScript library dependencies and can be run in a web browser as well as a standalone JavaScript interpreter or [CommonJS](http://www.commonjs.org/) environments like [node.js](https://nodejs.org/).
jSmart supports plugin architecture, you can [extend it with custom plugins](https://github.com/umakantp/jsmart/wiki/Create-Plugin): functions, blocks and variable modifiers, [templates inclusion](https://github.com/umakantp/jsmart/wiki/Include-Templates), [templates inheritance](https://github.com/umakantp/jsmart/wiki/Template-Inheritance) and overriding, [caching](https://github.com/umakantp/jsmart/wiki/Caching), [escape HTML](https://github.com/umakantp/jsmart/wiki/escape_html).
jSmart has some limited support of the [PHP Smarty syntax](https://github.com/umakantp/jsmart/wiki/syntax) and allows you to [use the same Smarty templates on both server and client side](https://github.com/umakantp/jsmart/wiki/Smarty-template-in-javascript), for both PHP and Javascript.
Play with JsFiddle [demo page](https://jsfiddle.net/8p8xua0k/1/)
### Using jSmart with CDN
##### Always latest version (don't use in production)
```
https://cdn.jsdelivr.net/npm/jsmart/dist/jsmart.min.js
```
##### Current latest version (4.0.0)
```
https://cdn.jsdelivr.net/npm/[email protected]/dist/jsmart.min.js
```
### jSmart with other tools1. Webpack:- [https://www.npmjs.com/package/jsmart-loader](https://www.npmjs.com/package/jsmart-loader)
2. Grunt:- [https://www.npmjs.com/package/grunt-jsmart](https://www.npmjs.com/package/grunt-jsmart)
3. Express Js :- [https://www.npmjs.com/package/jsmart-express](https://www.npmjs.com/package/jsmart-express)### How to use jSmart in Node.js
1. Install jSmart from NPM Registry
```
$ npm install jsmart --save
```2. Create template, use [PHP Smarty syntax](https://github.com/umakantp/jsmart/wiki/syntax). Say demo.tpl
```smarty
Hello {$name}
```3. Now lets read the template and compile it. _jSmart_ object compiles the template. You can call _fetch_ function as many times with different data you would want to assign to template.
```js
var fs = require('fs'),
jSmart = require('jsmart'),
tpl = fs.readFileSync('./demo.tpl', {encoding: 'utf-8'}),
compiledTemplate = new jSmart(tpl),
output = compiledTemplate.fetch({name: 'World'});
// output will be "Hello world"console.log(output);
```4. Execute the file.
```cli
$ node demo.js
```### How to use jSmart in browser
1. Include jSmart library Javascript file in your header.
```html
```2. Create template, use [PHP Smarty syntax](https://github.com/umakantp/jsmart/wiki/syntax). Put the template's text in _<script>_ with the _type="text/x-jsmart-tmpl"_ so a browser will not try to parse it and mess it up.
```js
Hello {$name}
```3. Create new object of _jSmart_ class, passing the template's text as it's constructor's argument than call _fetch(data)_, where data is an JavaScript object with variables to assign to the template
```jsvar content = document.getElementById('test_tpl').innerHTML;
var compiled = new jSmart(content);
var output = compiled.fetch({name: 'world'});
// output will be "Hello world"```
### How to use jSmart using Require.js
1. If you have configured and installed Require.js it easy to load jSmart and use it. Load jSmart.js file in the browser/environment and it already makes use require js to define module, you got to just include it.
```js
define(['jSmart'], function (jSmart) {
var tplText = 'Hello {$name}';
var compiled = new jSmart(tplText);
var output = compiled.fetch({name: 'world'});
// output is "Hello world"
});
```2. You can also make use Require.js text plugin to load templates.
```js
define(['jSmart', 'text!some/good/template.tpl'], function (jSmart, goodTpl) {
var compiled = new jSmart(goodTpl);
var output = compiled.fetch({name: 'world'});
// output is "Hello world"
});
```### DOCUMENTATION
[https://github.com/umakantp/jsmart/wiki](https://github.com/umakantp/jsmart/wiki)
### CONTRIBUTIONS & TESTS
* Pull request
Best is open a issue first. Then send a pull request referencing the issue number. Before sending pull request make sure you add test case for the fix. Make sure all test cases are passing and eslint tests pass.* Test cases:-
```grunt karma```* ES Lint tests:-
```grunt eslint```* Run lint, run test, build, compress, distribution package and update examples in one command:-
```grunt```### LICENSE
[MIT](https://raw.githubusercontent.com/umakantp/jsmart/master/LICENSE)
### NOTICE
Project originally was created by [miroshnikov](https://github.com/miroshnikov). Since author was not active on project very frequently. I have forked and planned on pushing further improvements and features on my own fork.