npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

smarty4js

v0.1.8

Published

A JavaScript Template Engine Most Like Smarty

Downloads

529

Readme

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

    npm install -g smarty4js

Syntax

    Most of Smarty syntax is supported.

Command line

   // 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:
    
    // amd and cmd
    var template = require('demo.tpl');
    template.render(data);

    // you can also use <script>

used in Node.js

    // 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);