2017-10-29 13 views
1

ノードejsテンプレートに外部.jsファイルを含める方法が見つかりません。私はロジックとデータを外部の.jsファイル内のオブジェクトに入れ、そのファイルをindex.ejsテンプレートに組み込み、そこからデータを取り出したいと思っています。ejsノードテンプレートページに外部.jsファイルを含める方法

私は標準的な方法 <script src="sample.js"></script>を挿入してみました、そしてそれは

を動作しません。それから私はEJSに特定のキーワード<% include partials/sample.js %>を試してみましたが、これはパーシャル(EJSコードスニペット)を追加するためにのみ機能します。

実行可能なserver.jsで定義されている静的ディレクトリに.jsファイルを挿入しましたが、結果は再び表示されません。

しかし、興味深いことに、EJSにCSSファイルのテンプレートの古典的な方法を含むことは正常に動作し、例えば

<link href="/assets/styles.css" rel="stylesheet" type="text/css" /> 

回避策は、私が<%の%>タグ内のロジックとデータを置く外部EJSファイルを含めることであろうが、 ejsはjsファイルではないので、これは明らかにパッチであり実行可能な解決策ではありません。しかも、うまくいきません。

インターネット上で解決策が見つかりません。何かヒント?

おかげ

答えて

0

あなたはすることはできません。

注:.ejsファイルから.jsファイルにのみデータを渡すことができますが、それ以外の方法でデータを渡すことはできません。クライアント側で.jsが実行されている間は、.ejsがサーバー側でレンダリングされるため、動作しません。 私は、サーバー側でEJSを使用していると仮定しています

1)あなたは、あなたがEJS変数にjsの変数の値を渡すことはできません

<% var test = 101; %> // variable created by ejs 
    <script> 
     var getTest = <%= test %>; //var test is now assigned to getTest which will only work on browsers 
     console.log(getTest); // successfully prints 101 on browser 
    </script> 

2)変数JavaScriptにEJS変数の値を渡すことができます

はい、できません:がサーバーにある場合。

理由:EJSテンプレートがjsの前に、サーバー上でレンダリングされます

が実行を開始している

(それはブラウザ上で起動します)、そのサーバーに戻って方法はありませんし、上のいくつかの以前の変更を求めますすでにブラウザに送信されているページ

+0

ありがとうございますが、どういうわけか、それは私のためには機能しません。それは '参照エラー、データは定義されていません' ...私の.jsファイルでは、私はvarデータ= {名前: 'ピーター'}; – Dan

+0

私はそれを得た。 .jsファイルと.ejsファイルの間で双方向のトランザクションを行うことはできません。 ejsファイルはサーバー側でレンダリングされ、jsファイルはクライアント側でレンダリングされるためです。 ejsからjsにデータを渡すことはできますが、jsからejs **へのデータは渡すことはできません**。確認された答えを他の人に役立てるようにマークしてください。 –

+0

あなたの親切な努力に感謝@Bharathvaj。では、EJSのようなテンプレートにデータをインポートするにはどうしたらいいですか?標準のhtmlの方法では、.jsファイルへのリンクを囲んで、データをインポートしたり、データベースクエリを作成したりします。あるいは、

関連する問題