fusion
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:DEPRECATED. Fusion is a tool to merge multiple JavaScript templates into one namespaced template object. It also contains a watch mode to check for changes in the source directory.
# Fusion

Fusion is a simple tool to merge multiple JavaScript templates (mustache, handlebars, jquery-tmpl, …) into one namespaced template object. It also allows you to define your own precompiling functions.

## What is fusion good for?

You might have noticed that using script tags to manage your JavaScript templates can become quite a mess if you have a bunch of them. It's a good idea to split them into several files. Fusion helps you bring them back together in one neatly organized namespace.

For example if you have a directory structure like

    templates/home.html
    templates/notes/overview.html
    templates/notes/detail.html

fusion would compile it to

    (function(){
      window.templates = {};
      window.templates.home = '';
      window.templates.notes = {};
      window.templates.notes.overview = '';
      window.templates.notes.detail = '';
    }).call(this);

***camel case*** Fusion generates camel case namespaces. So if you have

    templates/task_list/new_comment.html

it will generate

    templates.taskList.newComment

## Installation

    npm install fusion

## How to use

### Command-line

You can run the script to compile templates via

    fusion [options] []

Optional use `--watch` to watch changes in the given directory.
You don't need to set a directory. You can leave it out and use
the one from settings or even fusion's default which is 'templates'.

Basically you are able to change these settings:

set output path of templates

    --output [FILE]

set export namespace

    --namespace [VALUE]

set extension of template files which should be merged

    --templateExtension [VALUE]

set path of settings file

    --config [FILE]

set path of the hook file

    --hook [FILE]

#### Example

    fusion --watch --config fusion_settings.yaml

### Settings file

All options except `--watch` and `--config` can be set in the settings file.
Unless `--config` is defined the script will search for "settings.yaml"
in the current directory.

Possible settings are

* namespace
* templateExtension
* input
* output
* hook

### Hooks file

The hooks file provides a way to overwrite all public methods of fusion.
Probably the most common case will be to overwrite the compileTemplate method.

#### Example

For example to use eco's precompiling for our templates we can create a file
fusion_hooks.js which contains something like this

    var eco = require('eco');
    var fusion = require('fusion');
    exports.createTemplateObject = function(content, source, directoryPrefix) {
      return eco.compile(content, { identifier: fusion.templateNamespace(source, directoryPrefix)});
    };

Thats all you need to add proper precompiling to your templates.

Hint: Eco 1.0.2 yet doesn't provide options for compile, please use a master checkout

### Default Settings

* settings file: "settings.yaml"
* namespace: "window"
* template extension: "html"
* input directory: "templates"
* output file: "templates.js"
* hook file: "fusion_hooks.js"

### require('fusion');

For more flexability you can require fusion and run it by your own without the command-line interface.

    var fusion = require('fusion');
    var settings;
    settings = fusion.loadSettingsFromFile('settings.yaml');
    settings = fusion.loadDefaultSettings(settings);
    settings.watch = true;
    fusion.run(settings);

### Demo

You can see it running by switching to demo folder and run it with watch option.
You can change anything in the templates, refresh the index.html and see the new content.

    cd demo/simple
    ./../../bin/fusion --watch

## Development

### Contributing

Feel free to make a pull request or contact me on Twitter @nikgraf.

To compile src files to lib use

    cake watch

### Tests

    cake test

## Thanks

It was inspired by [Jammit](http://documentcloud.github.com/jammit/)'s templating functionality. Since Jammit doesn't offer file watching via command-line, it's a bit hard to use for development if you are not on a RubyOnRails stack.

Special Thanks to the [CoffeeScript](http://jashkenas.github.com/coffee-script/) Team. We were able to re-use some parts like the optparser.

## TODO

* add cake to rerender all the the demos
* watch somehow does not work with Textmate - any pointers?
* output file - mkdirs or warn if directory doesn't exist
* replace optparser (mabey nomnom?)
* add github page
* improve regex in createTemplateObject to work with dotfiles and add option to ignoreDotFiles - tmp and swp files can cause troubles

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。