【Mithril.js】msxの使い方メモ

はじめに

Mithril.jsの勉強始めて、そのうち少し大きいアプリとかつくりはじめたときに、
HTMLテンプレートの記述方法がちょっと複雑になってくるのかなと思いました。

で、調べたところドキュメントにもあったのですが、
こちらツールを使うとHTMLをMithril形式に変換してくれるとのことでした。

が、実際に開発が進んでくると毎回このツールを使うというのもないかなぁとおもってmsxというツールの使うことにしました。
MithrilコンポーネントのviewメソッドにHTMLっぽい記述をしておいて、msxコマンドラインで実行するとMithrilの形式に変換してくれるというツールです

インストール

gulpとgrantとでどちらでもokですが、とりあえずgulpで

npm install gulp gulp-msx

実装例

以下のようにJavascriptの公文的にはエラーなんですけど、わかりやすい記述が可能になります。

変換前ファイル

var Sample = 
{
    controller: function() {
    }

    view: function(controller) {
        return <a href="#">リンク</a>
    }
}

変換後ファイル
>||
var Sample = 
{
    controller: function() {
    }

    view: function(controller) {
        return {tag: "a", attrs: {href:"#"}, children: ["リンク"]}
    }
}
msxを直接実行
// msxコマンド 変換前ファイルがあるフォルダ 変換後ファイルの出力先
./node_modules/gulp-msx/node_modules/.bin/msx src/ dest/
gulpfile.jsで設定してgulpコマンドで実行

gulpfile.js

var gulp = require("gulp");
var msx = require("gulp-msx");

gulp.task('msx', function() {
    gulp.src('src/*.js')                      // 変換前ファイル
        .pipe(msx()) 
        .pipe(gulp.dest('dest/'))         // 変換後ファイル出力先
})

実行

./node_modules/.bin/gulp msx

gruntの場合

ほとんど同じだけどいちおうメモ

インストール

npm install grunt-cli grunt-msx

Gruntfile.js

module.exports = function(grunt)
{
    grunt.initConfig({
        msx: {
            dist: {
                files: 
                    expand: true,
                    cwd: "src/",
                    src: "*.js",
                    dest: "compile/",
                }]
            }
        },
    });
    grunt.loadNpmTasks("grunt-msx");
    grunt.registerTask("default", ["msx"]);
};

実行コマンド

./node_modules/grunt-cli/bin/grunt

まとまりないけど、以上です