8

私は基本的に、次のディレクトリを持つexpressjsアプリケーションを持っています:

app/views

app/plugin/views

両方のディレクトリからサービスを提供できるようにしたいと考えています。

これはどのように機能しますか?

設定してみた

app.set('views', second_dir)

しかし、私のアプリは私の最初のビューディレクトリを見つけません。

次に、フォルダーをシンボリックリンクしようとしましたが、

fs.exists(viewDir, function() {
    fs.symlink(viewDir, rootViewDir, 'dir', function(err) {
        console.log('adding symlink with err: '+err+ ' in viewdir ='+viewDir+' rootDir ='+rootViewDir);
    });
  });

これは機能し、シンボリックリンクを(永続的に)作成しますが、ノードはシンボリックリンクされたビューを読み取ることができません。

私のジレンマの解決策はありますか?

どうもありがとう、楽しんでください

4

3 に答える 3

3

「ビュー」フォルダーの下に「プラグイン」フォルダーが存在するように、ビューの構造を変更してみませんか? 次に、ビューをレンダリングするときに、その時点でサブパスを指定できます。

res.render('plugin/pluginview1', ...);
于 2013-01-29T18:54:57.237 に答える
2

tj holowaychuk によるこのビデオを見つけました。彼はプラグイン用の追加の高速アプリケーションを作成しています。 http://vimeo.com/56166857

彼はまた、ビデオのコメントで「グローバル」変数の継承について特に言及しています。これは、アプリとプラグインのチェーン内のすべての高速アプリで app.locals とそのようなものを同じにする必要があることを意味します。今すぐテスト:)

とにかく、私は最初にテストせずに却下した答えで自分の質問に答えたかっただけです(変数のこのグローバルリンケージが存在するとは想定していなかったので;))

楽しんで

ジャシャ

于 2013-02-05T03:29:57.047 に答える
1

Node.JS v0.8.20、Express.JS v4.2.0、および EJS v0.8.8 を実行しています。「ビュー」パスを app.js で次のように定義しています。

app.set('views', path.join(__dirname, 'views'));

私は、ビューのフォルダ構造によって と定義しました\views\{model}\{operations}。例: \views\products\add.ejs.

のようにルート ファイルでビューを参照する場合は\routes\products.js、サブディレクトリを参照し、バックスラッシュをエスケープします。たとえば、views\products\add.ejsファイルを参照するには、次を使用します。

res.render('products\\add');

このフォーマットは、モデルの操作をファイルごとに 1 つのビューに保持し、モデル オブジェクトごとの操作をフォルダーにグループ化できるという点で気に入っています。

于 2014-08-12T20:16:39.777 に答える