【问题标题】:app.set('views', __dirname + '/views') in Express & node.jsExpress 和 node.js 中的 app.set('views', __dirname + '/views')
【发布时间】:2016-12-09 16:16:13
【问题描述】:

我对 app.set() 方法感到困惑。 据我所知,app.set() 是这样的

app.get('title');
// => undefined

app.set('title', 'My Site');
app.get('title');
// => "My Site"

但在教程中,制作“views”文件夹并像这样使用。

app.set('views', __dirname + '/views')
app.get('/') or app.get('/admin')

不应该是这样吗?

app.get(views)

【问题讨论】:

    标签: node.js express


    【解决方案1】:
    app.set(name, value)
    

    将设置名称分配给值,其中名称是来自app settings table. 的属性之一

    观看次数

    类型:字符串或数组

    应用程序视图的目录或目录数组。如果是数组,则按照它们在数组中出现的顺序查找视图。

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

    这会将您的应用程序视图文件夹设置为:

    /Users/adil/Project/myApp/views

    当您实际使用视图时,view 名称变为文件路径、minus the root directory 和文件扩展名。例如,如果您有以下文件结构:

    /views/
    /views/index.hbs
    /views/news/
    /views/news/index.hbs
    /views/news/article1.hbs
    /views/news/article2.hbs
    

    您将按如下方式呈现视图:

    res.render('index', {});  
    res.render('news/index', {});  
    res.render('news/article1', {});  
    res.render('news/article2', {});
    

    【讨论】:

    • 我最近在我的服务器文件中使用了“路径”。我觉得没必要。对这个@Adiii 有什么想法吗?示例:* app.set("views", (__dirname + "/views")); * app.use(express.static(__dirname + '/public'));
    【解决方案2】:
    1. express.js 中的app.get()app.set() 方法不是我们在OOP 中习惯使用的。当我们在像 java 这样的 OOP 中使用 app.get('key')app.set('key', 'value') 时,我们只想设置/获取对象的成员。
    2. 然而,在 express.js 中,app.set() 用于设置应用程序设置之一。见:http://expressjs.com/en/4x/api.html#app.set。这里使用的app.get()app.post() 方法指的是node.js 服务器接收到的路由和请求。例如:app.get() 指的是GET 请求,app.post() 指的是POST 请求

    【讨论】:

      【解决方案3】:

      views 是一个配置变量,用于设置 express 从中获取模板的文件夹。 app.get('/admin') 也不同于 app.get('variable')。第一个是 GET 路由,会监听 HTTP Server,第二个是 express 的环境变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        相关资源
        最近更新 更多