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);
    });
  });

这有效,创建符号链接(永久),但节点无法读取符号链接视图,因为它看起来。

我的困境有解决方案吗?

非常感谢,玩得开心 jascha

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

当我在诸如 in 之类的路由文件中引用视图时\routes\products.js,我引用了子目录并转义了反斜杠。例如,要引用该views\products\add.ejs文件,我使用:

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

我喜欢这种格式,因为它允许我将模型操作保留在每个文件一个视图中,然后将每个模型对象的操作分组到文件夹中。

于 2014-08-12T20:16:39.777 回答