1

私は常に Express で swig (django スタイルのテンプレート エンジン) を使用しています。リクエスト/レンダリングの外でswigを使用し、コンテキストをswigマークアップファイルに渡してHTMLを生成しようとしています。

Express を使用せずに API を理解することはできません。

ウェブサイトから、私が仕事に就けない例があります: https://github.com/paularmstrong/swig/tree/bd3f5a0dc08078ffd4372fa61248f8d50d8cbbf8

var template  = require('swig'); // v1.1.0
var tmpl = template.compileFile('/path/to/template.html');
tmpl.render({
    pagename: 'awesome people',
    authors: ['Paul', 'Jim', 'Jane']
});

rendertmpl オブジェクトに存在しないというエラーがありますか? (compileFile は正常に動作しているようです。)

私が理解していないこと、または例の外に含める必要があることは明らかです。

更新:コメントの後に swig のバージョン番号を追加して、使用しているバージョンを明確にしました。

4

4 に答える 4

2

swig テンプレートをレンダリングするためのいくつかの手順を次に示します。1.コマンドを使用してswigをインストールしますnpm install swig --save

-server.js を作成します

var http = require('http'), swig=require('swig');
http.createServer(function(request, response){
var tpl = swig.compileFile('index.html');
renderedHtml =  tpl({
                         say:'hello word'
                    });
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(renderedHtml);
}).listen(8080);

-index.html テンプレート ファイルを次のように作成します。

    <html>
    <head>
    <meta charset="utf-8" />
   </head>
    <body>
     <h2>{{say}}</h2>   
    </body>
    </html>
于 2014-07-19T10:31:23.043 に答える
2

元の質問へのコメントから:

Swig@~1.0 を使用しようとしているようですが、指定したリンクは Swig@0.14.0 を指しています。Swig の API は、v0 と v1 の間で大幅に変更されました。

現在サポートされているバージョンのドキュメントは、常にhttp://paularmstrong.github.io/swig/にあります。

于 2013-10-24T15:48:55.413 に答える
0

テンプレートへのパスを swig に伝える必要がありますか?

var swig  = require('swig');
swig.init({ root: __dirname + '/templates' });

var tmpl = swig.compileFile('home.html');
tmpl.render({
    pagename: 'awesome people',
    authors: ['Paul', 'Jim', 'Jane']
});
于 2013-10-22T21:45:35.737 に答える