如何建立大型express.js网站

时间:2018-01-04 21:11:21

标签: javascript node.js express express-router

我对node.js和express.js格局很新。但是,我一直试图在express.js中创建一个网站(例如20多个页面)背后的代码,而代码变得非常大。

使用视图引擎时,路由会将传入请求指向索引或其请求的任何页面。运行默认快速生成器并将视图引擎设置为HBS后,您将获得类似

的内容

app.use('/', index);

这指向包含

之类的routes文件夹下的index.js文件
router.get('/', function(req, res, next){
 res.render('index', {title: 'Express'});
});

然后呈现index.hbs文件以显示我想要的页面。

我的问题是这个。您是否需要为您想要的每个页面创建一个路径,例如个人资料页面,登录页面,关于页面等?如果你有20多条路线,如果这样的话,这不会在路线中产生很多代码行吗?示例将在app.js

app.use('a', a);
app.use('b', b);
...
app.use('z', z);

然后每个都需要一个相应的路由js文件。

我认为有一种更简洁的路由方式,或者我在想这个?

关于我的这个问题/问题的任何启示都会令人惊讶。

3 个答案:

答案 0 :(得分:1)

这取决于您的路线有多相似:

  • 如果它们基本上都具有相同的功能,我会将它们放在同一个文件中。
  • 如果有轻微变化,我会创建一个包含核心功能的单独类,然后单独调用所需的内容。
  • 如果它们完全不同,请将它们全部放在单独的文件中

这将为您提供如何执行每项操作的详细信息:

答案 1 :(得分:1)

在我的快递服务器中,我将路由分成不同的部分,称为" components"如果您正在进行服务器端呈现,或者它可以对应于一组API路由,则每个组件都可以对应一个给定页面。

每个组件都可以有控制器来处理每个路由,每个控制器都可以借用少量可重用的操作。

这是我所做的快速服务器组件的示例(此示例用于一组API路由,但相同的体系结构可用于hbs服务器端呈现路由集):

https://github.com/AkyunaAkish/react-redux-node-express-todo-list-boilerplate/tree/master/server/components/todos

答案 2 :(得分:-1)

通常,您在关注的区域周围创建路由文件,尽管给定的路由器可以定义任何有意义的端点。例如,假设您的网站有几个相当静态的页面(例如您的“约”和“索引”示例,然后是几个基于博客条目(创建,列出,查看等)的页面,然后是几个用户(用户配置文件等)。您可能会为每组事物创建一个路由器,例如:

// ./routes/index.js
router.get('/', (req, res) => { res.render('index', {title: 'Express'}); });
router.get('/about', (req, res) => {res.render('about', {title: 'Express'});});
// etc
从概念上讲,您可以更简单地使用它来从URI中提取“索引”或“约”值,但我假设您将执行其他操作,例如分配变量等。

然后在另一个文件中

// ./routes/blog.js
router.get('/blog', (req, res) => { 
   // do whatever to fetch info fromt eh DB and render it... 
});

等等。