如何建立大型 express.js 站点
How to build large scale express.js sites
我对 node.js 和 express.js 领域还很陌生。但是,我一直在努力思考在 express.js 中创建网站(例如 20 多个页面)背后的代码,而代码却没有变得很大。
路由在使用视图引擎时将传入请求指向索引或他们请求的任何页面。在 运行 视图引擎设置为 HBS 的默认 express-generator 之后,你会得到类似
的东西
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文件。
我假设有一种更简洁的路由方式,或者我想多了?
任何关于我的 concern/question 的光都会很棒。
这取决于你们的路线有多相似:
- 如果它们基本上都具有相同的功能,我会将它们放在同一个文件中。
- 如果有细微的变化,我会创建一个单独的 class 包含核心功能,然后单独调用任何需要的东西。
- 如果它们完全不同,请将它们全部放在单独的文件中
这将为您提供关于如何执行每个操作的可靠概述:
- How to include route handlers in multiple files in Express?
- Node.js: Configuration and routes in a different file
- How to include route handlers in multiple files in Express?
通常,您会围绕关注的区域制作路由文件,尽管给定的路由器可以定义任何有意义的端点。因此,例如,假设您的网站有几个相当静态的页面(例如您的 "about" 和 "index" 示例,然后有几个页面都基于博客条目(创建、列出、查看等)然后是几个周围的用户(用户配置文件等)。您可能会为每组事物创建一个路由器,例如:
// ./routes/index.js
router.get('/', (req, res) => { res.render('index', {title: 'Express'}); });
router.get('/about', (req, res) => {res.render('about', {title: 'Express'});});
// etc
从概念上讲,您可以更简单地使用它从 URI 中提取 "index" 或 "about" 值,但我假设您会做其他事情,例如分配变量等。
然后在另一个文件中
// ./routes/blog.js
router.get('/blog', (req, res) => {
// do whatever to fetch info fromt eh DB and render it...
});
等等。
在我的快速服务器中,我将路由分成不同的部分,称为 "components" 每个组件可以对应一个给定的页面,如果你正在做服务器端渲染,或者它可以对应一组 API 路线。
每个组件都可以有控制器来处理每个路由,每个控制器都可以借用一些可重用的操作。
这是我制作的一个快速服务器组件的例子(这个例子是针对一组 API 路由,但相同的架构可以用于一组 hbs 服务器端渲染路由):
我对 node.js 和 express.js 领域还很陌生。但是,我一直在努力思考在 express.js 中创建网站(例如 20 多个页面)背后的代码,而代码却没有变得很大。
路由在使用视图引擎时将传入请求指向索引或他们请求的任何页面。在 运行 视图引擎设置为 HBS 的默认 express-generator 之后,你会得到类似
的东西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文件。
我假设有一种更简洁的路由方式,或者我想多了?
任何关于我的 concern/question 的光都会很棒。
这取决于你们的路线有多相似:
- 如果它们基本上都具有相同的功能,我会将它们放在同一个文件中。
- 如果有细微的变化,我会创建一个单独的 class 包含核心功能,然后单独调用任何需要的东西。
- 如果它们完全不同,请将它们全部放在单独的文件中
这将为您提供关于如何执行每个操作的可靠概述:
- How to include route handlers in multiple files in Express?
- Node.js: Configuration and routes in a different file
- How to include route handlers in multiple files in Express?
通常,您会围绕关注的区域制作路由文件,尽管给定的路由器可以定义任何有意义的端点。因此,例如,假设您的网站有几个相当静态的页面(例如您的 "about" 和 "index" 示例,然后有几个页面都基于博客条目(创建、列出、查看等)然后是几个周围的用户(用户配置文件等)。您可能会为每组事物创建一个路由器,例如:
// ./routes/index.js
router.get('/', (req, res) => { res.render('index', {title: 'Express'}); });
router.get('/about', (req, res) => {res.render('about', {title: 'Express'});});
// etc
从概念上讲,您可以更简单地使用它从 URI 中提取 "index" 或 "about" 值,但我假设您会做其他事情,例如分配变量等。
然后在另一个文件中
// ./routes/blog.js
router.get('/blog', (req, res) => {
// do whatever to fetch info fromt eh DB and render it...
});
等等。
在我的快速服务器中,我将路由分成不同的部分,称为 "components" 每个组件可以对应一个给定的页面,如果你正在做服务器端渲染,或者它可以对应一组 API 路线。
每个组件都可以有控制器来处理每个路由,每个控制器都可以借用一些可重用的操作。
这是我制作的一个快速服务器组件的例子(这个例子是针对一组 API 路由,但相同的架构可以用于一组 hbs 服务器端渲染路由):