Node.jsでJavaScriptのEJSテンプレートライブラリを呼び出す方法 project_node.js

WBOY
リリース: 2016-05-16 15:11:02
オリジナル
1460 人が閲覧しました

外部モジュールとしての呼び出し方法は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 
}); 

ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート