-1

我对 node.js 和 express.js 环境很陌生。但是,我一直在尝试在 express.js 中创建网站(例如 20 多页)背后的代码,而代码不会变得非常大。

使用视图引擎时,路由将传入请求指向索引或他们请求的任何页面。在将视图引擎设置为 HBS 的情况下运行默认的 express-generator 后,您会得到类似

app.use('/', index);

这指向路由文件夹下的 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 文件。

我认为有一种更清洁的路由方式,或者我想太多了?

对我的这个担忧/问题的任何了解都会令人惊叹。

4

3 回答 3

1

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

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

这将为您提供如何执行每个操作的坚实大纲:

于 2018-01-04T21:20:37.693 回答
1

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

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

这是我制作的快速服务器组件的示例(此示例适用于一组 API 路由,但相同的架构可用于一组 hbs 服务器端渲染路由):

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

于 2018-01-04T22:04:01.910 回答
-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... 
});

等等。

于 2018-01-04T21:25:37.497 回答