Coder Social home page Coder Social logo

locator-dust's Introduction

locator-dust

Dust template compiler for locator.

Build Status

This component is a result of the integration between YUI and Locator component from Yahoo! to compile Dust' templates into YUI Modules that could be used on the server thru express and on the client thru YAF.

The beaufy of this is that you will NOT need to download the full dust parser component or the template itself, instead you use YUI Loader to load modules that will provision the dust templates in a form of javascript functions ready to be execute to produce a html fragment.

Installation

Install using npm:

$ npm install locator-dust

By installing the module in your express application folder, you should be able to use it thru Locator.

Usage

Integration with locator on the server side

Normally, you will plug the locator plugin exposed by locator-dust into the locator instance, and locator will be able to analyze every file in your express app, and it will compile any *.dust into a YUI module that can be used thru express-yui for example. The example below describes how to use the yui plugin with locator:

var Locator = require('locator'),
    LocatorDust = require('locator-dust'),
    loc = new Locator();

// using locator-dust yui plugin
loc.plug(LocatorDust.yui());

// walking the filesystem for an express app
loc.parseBundle(__dirname, {});

Server side with express and express-yui

You can try a working example here:

https://github.com/yahoo/locator-dust/tree/master/example

Client side with yui

On the client side, any Dust template will be accessible as well thru yui as a regular yui module. Here is an example:

app.yui.use('<name-of-app>-templates-bar', function (Y) {

    var html = Y.Template._cache['<name-of-app>/bar']({
        tagline: 'testing with some data for template bar'
    });

});

In the example above, the <package-name> is the package name specified in the package.json for the npm package that contains the template, which is usually the express application. bar comes from bar.dust where the filename is used as the name to register the template under Y.Template. By using the yui module name, you will be able to invoke the render action to produce a html fragment.

note: in the near future, Y.Template.render() will be the formal API instead of using the _cache object, which is protected.

Custom template name

If you want to use a different template name, you can write your own parser:

// using locator-dust yui plugin
loc.plug(LocatorDust.yui({
    nameParser: function (source_path) {
        var libpath = require('path'),
            name = libpath.basename(source_path, libpath.extname(source_path));
        if (source_path.indexOf('partials') > 0) {
            name += '-partial';
        }
        return name;
    }
}));

In the example above, when trying to parse /path/to/foo.dust it will return foo, but when trying to /path/to/partials/bar.dust it will return foo-partial, that will avoid collisions while giving you full control over the name resolution for the compiled templates.

TODO

  • Add partials support.
  • Add helpers rehydration.

License

This software is free to use under the Yahoo! Inc. BSD license. See the LICENSE file for license text and copyright information.

Contribute

See the CONTRIBUTE file for info.

locator-dust's People

Contributors

caridy avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.