外部モジュールとしての呼び出し方法はmysqlモジュールと同じなので説明は省略します。
ejs の render 関数には 2 つのパラメータがあります。1 つ目は文字列で、2 つ目はオプションのオブジェクトです。他の JavaScript テンプレートと同様に、レンダリングする必要があるデータもオプション オブジェクト
に含まれます。ejs.render(str,option); // 渲染字符串 str 一般是通过nodejs文件系统的readfile方法读取 ejs.render(str,{ data : user_data // 需要渲染的数据 });
str 文字列に include タグが含まれていない場合、データのレンダリングに問題はありません。それ以外の場合は、エラーが報告されます。前に述べたように、私のプロジェクト ファイルとnodejs インストール ファイルは同じルート ディレクトリにありません。この問題を解決するには、オプション パラメータの filename 属性を設定する必要があります。
ejs のソース コードを見ると、インクルード ファイルのパスを処理するときに ejs がsolveInclude 関数を使用していることがわかります。
function resolveInclude(name, filename) { var path = join(dirname(filename), name); var ext = extname(name); if (!ext) path += '.ejs'; return path; }
filename は dirname 関数のパラメーターです。nodejs コア モジュールの path.dirname() として、返されるパスは常に、nodejs のインストール パスを基準としています。ファイル名の値が指定されていない場合、ファイルは返されません。見つかりました
dirname を使用する場合、関数が受信パス パラメーターを処理するときに最初の
がインターセプトされることに注意してください。
「/」より前の部分はパス名として使用されます。例:
path.dirname('/foo/bar/baz/asdf/quux') // returns '/foo/bar/baz/asdf'
tpl ディレクトリを取得するには、次のように記述できます:
path.dirname('/tpl/..') // return /tpl
完全なレンダリング関数は次のようになります:
ejs.render(str,{ filename : path + '/tpl/..', //tpl文件中保存的是模版文件 data: user_data });