在node.js中设置很多路由

时间:2018-11-09 02:27:32

标签: javascript node.js

我创建了一个网页以在本地使用它,以保存有关随机主题和大学课程的信息。我有很多路线,如下所示:

//app.js - using node and express
    app.get('/page1', function(req, res){
        res.render('page1');
    });
    app.get('/page2', function(req, res){
        res.sendFile('views/page2.html', { root: __dirname });
    });

这些路由中的每一个都有一个.ejs文件或一个.html文件,它们都很小。
我认为我没有犯任何重大错误,但是我有一种感觉,我没有使用“最佳实践”,或者至少可以做一些不同的事情。

  • 使用很多这样的路线有什么问题吗?应该更改一些内容以优化页面的呈现吗?
  • 正如我之前说的,我在大多数页面上使用.ejs,并且大多数页面具有相同的header.ejsfooter.ejs。每次我更改具有相同页眉/页脚的页面时,是否会再次加载它们,或者由于它们使用的是相同的页眉/页脚文件,服务器仅请求两者之间的内容?
  • 使用res.render和res.send有什么区别?
  • 我应该使用其他语法:const express = require('express');const app = express();而不是var express = require('express');var app = express();

```或此

app.get('/page1', (req, res) => {
    res.render('page1');
});

``` 而不是上面的第一段代码。

谢谢! :D

1 个答案:

答案 0 :(得分:2)

  

使用很多这样的路线有什么问题吗?应该更改一些内容以优化页面的呈现吗?

从技术上讲,这没有什么错。许多普通的res.sendFile()路由可能可以用单个express.static()中间件语句代替,以简化代码。

很多res.render()路由都没有将任何自定义数据传递给EJS,也可能由一个中间件代替,该中间件处理模板文件的整个目录(及其对应的路由)或文件列表。与单独阐明每条路线相比,DRY会多得多。

  

正如我之前所说,我在大多数页面上都使用.ejs,其中大多数具有相同的header.ejs和footer.ejs。每次更改具有相同页眉/页脚的页面时,是否会再次加载它们,或者由于它们使用相同的页眉/页脚文件,因此服务器仅请求两者之间的内容?

EJS在内存中缓存模板(除非您禁用缓存),这样就不会从磁盘一遍又一遍地加载页眉和页脚模板。

  

使用res.render和res.send有什么区别?

这些已在文档中全面介绍。简而言之,res.render()支持您的模板引擎和本地数据馈入模板引擎,以允许其将数据添加到模板。 res.send()只是发送您提供的原始内容。

  

我应该使用其他语法:const express = require('express'); &const app = express();而不是var express = require('express'); &var app = express();

每当您声明的变量应获得其初始值且不再分配时,使用const被认为是一种好习惯。除了某些编码安全性外,这有时还可以使解释器在使用变量时进行更多优化(因为无法更改其值)。