app.set('views', __dirname + '/views') in Express & node.js



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

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

但是在教程中,制作"视图"文件夹并像这样使用。

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

不应该是这样的吗?

app.get(views)
app.set(name, value)
将设置名称

分配给值,其中名称是应用设置表中的属性之一。

视图

类型:字符串或数组

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

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', {});
  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()方法是指节点.js服务器接收的路由和请求。例如:app.get()是指GET请求,app.post()是指POST请求

views是一个配置变量,用于设置快速将从中获取模板的文件夹。 app.get('/admin')也不同于app.get('variable')。第一个是GET路由,它将侦听HTTP服务器,第二个只是express的环境变量。

最新更新