如何建立大型快递.js站点



我对节点很陌生.js表达.js景观。但是,我一直在尝试在 Express 中创建网站(例如 20+ 页面)背后的代码.js而不会让代码变得非常大。

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

app.use('/', index);

这指向 routes 文件夹下的索引.js文件,其中包含类似内容的内容

router.get('/', function(req, res, next){
res.render('index', {title: 'Express'});
});

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

我的问题是这个。您是否必须为您想要的每个页面(如个人资料页面、登录页面、关于页面等)制定路由?如果是这样,如果您有 20+ 条路由,这不会在路由中创建大量代码行吗?示例将在应用程序中.js

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

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

我认为有一种更干净的路由方式,或者也许我想得太多了?

关于我的这个担忧/问题的任何光线都会令人惊讶。

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

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

下面是我制作的快速服务器组件的示例(此示例适用于一组 API 路由,但相同的体系结构可用于一组 hbs 服务器端呈现路由):

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

这取决于您的路线的相似程度:

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

这将为您提供如何执行每个操作的可靠概述:

  • 如何在 Express 中的多个文件中包含路由处理程序?
  • 节点.js:不同文件中的配置和路由
  • 如何在 Express 中的多个文件中包含路由处理程序?

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

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

等等。

最新更新