Grunt で即席テンプレートエンジンが必要になったので、えいやっと作ってみた
jade とか ejs とかもいいんだけど、もっとシンプルにやりたいなっと思って。
HTMLテンプレート
プレースホルダー(:TAG)を設けて、こういうHTML作っておく。
<!DOCTYPE HTML>
<html lang="ja">
<head>
<title>:NAME</title>
</head>
<body>
<p id=":ID">:TEXT</p>
</body>
</html>
データとなる JSONを用意する
プレースホルダーの文字列をキーにしたオブジェクトをつくる。
このJSONの値が挿入されるという仕組み。
スプレッドシートとかから出力できるようにしておくと、さらに便利かもしれない。
[
{
":ID": 1,
":NAME": "name",
":TEXT": "text."
},
{
":ID": 2,
":NAME": "なまえ",
":TEXT": "テキスト。"
}
]
Grunt でプライベートタスクを定義する
で、Grunt 側にこんな感じのプライベートタスクを設定する。
grunt.registerTask('make-html', 'make html.', function ()
{
var template = grunt.file.read('./src/template.html'),
data = grunt.file.readJSON('./src/data.json'),
item,
key,
reg,
html;
for (var i = 0, l = data.length; i < l; i++)
{
item = data[i];
html = template;
for (key in item)
{
reg = new RegExp(key, "ig");
html = html.replace(reg, item[key]);
}
grunt.file.write('./dest/'+ i + '.html', html, {force: true});
}
});
そんで grunt make-html とやるとHTMLファイルが生成される。
もちろん、HTMLじゃなくってもできる。
見てのとおり、JSONのキー名にマッチしたとこを置き換えるという、超シンプル機構。書き込みの機構はたぶんこの程度で必要十分な気がしました。
データをあれこれ操作できる自由度があるので、ここからアレンジすればいいのだと思います。
サンプル一式
Author And Source
この問題について(Grunt で即席テンプレートエンジンが必要になったので、えいやっと作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/nenjiru/items/b889f26579798c40f72f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .