我从NodeJS和Express 4开始,我有点困惑。我一直在阅读Express网站,但看不到何时使用路由处理程序或何时使用Express。路由器
.
如我所见,如果我想在用户点击/show
时显示页面或其他内容,我应该使用:
var express = require('express')
var app = express()
app.get("/show", someFunction)
一开始,我认为这是旧的(快车3)。是这样还是这也是快车4的路?
如果在Express 4中是这样做的,那么什么是Express。路由器
用于什么?
我阅读了与上面几乎相同的示例,但使用了express。路由器
:
var express = require('express');
var router = express.Router();
router.get("/show", someFunction)
那么,这两个例子有什么区别?
如果我只想做一个简单的测试网站,我应该使用哪一个?
app.route('/book')
.get(function (req, res) {
res.send('Get a random book')
})
.post(function (req, res) {
res.send('Post a random book')
})
如上例所示,我们可以在路由下添加不同的HTTP请求方法。
Express 4.0随附了新路由器。如网站所述:
快车。Router类可用于创建模块化可装载路由处理程序。路由器实例是一个完整的中间件和路由系统;因此,它通常被称为“迷你应用程序”。
https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4有一篇很好的文章描述了不同之处以及路由器可以做些什么。
概括
使用路由器,您可以更容易地模块化代码。您可以使用路由器作为:
注:
在Express 4中删除的app.router
对象在Express 5中卷土重来。在新版本中,它只是对基本快速路由器的引用,不同于快速3,在快速3中,应用程序必须显式加载它。
app.js
var express = require('express'),
dogs = require('./routes/dogs'),
cats = require('./routes/cats'),
birds = require('./routes/birds');
var app = express();
app.use('/dogs', dogs);
app.use('/cats', cats);
app.use('/birds', birds);
app.listen(3000);
狗。js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.send('GET handler for /dogs route.');
});
router.post('/', function(req, res) {
res.send('POST handler for /dogs route.');
});
module.exports = router;
调用var app=express()
时,将返回一个app对象。将此视为主要应用程序。
当var路由器=express时。调用Router()
,返回一个稍有不同的迷你应用程序。迷你应用程序背后的想法是,应用程序中的每条路线都可能变得相当复杂,将所有代码移动到单独的文件中会让您受益匪浅。每个文件的路由器成为一个迷你应用程序,它的结构与主应用程序非常相似。
在上面的例子中,/dogs路径的代码已经被移动到它自己的文件中,这样它就不会扰乱主应用程序。/cats和/birds的代码在它们自己的文件中的结构类似。通过将这段代码分成三个迷你应用程序,您可以独立处理每一个应用程序的逻辑,而不必担心它将如何影响其他两个应用程序。
如果你的代码(中间件)适用于所有三条路线,你可以把它放在主应用程序中,在应用程序之前。使用(…)
呼叫。如果您有只属于其中一个路由的代码(中间件),则可以将其仅放在该路由的文件中。
我真的不知道react router中render和component prop in Route之间的区别,在文档中它说render不创建新元素,但component创建新元素,我试图返回历史,但我发现在使用render in Route时调用componentWillMount,“如果为组件属性提供内联函数,则在每次渲染时都会创建一个新组件。这将导致现有组件卸载和新组件装载,而不仅仅是更新现有
问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。
我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?
本文向大家介绍成本差异和进度差异之间的差异,包括了成本差异和进度差异之间的差异的使用技巧和注意事项,需要的朋友参考一下 对于任何应用程序或专门用于任何项目,最关注的因素之一是在开发前和开发后阶段的预算管理和时间管理。因此,要评估任何项目的这两个主要因素,有很多方法,其中成本差异和进度差异是两个重要且主要的方法。 顾名思义,“成本差异”基于项目开发中花费的成本,而“进度差异”则基于相同开发中花费的时
本文向大家介绍数据路径之间的差异,包括了数据路径之间的差异的使用技巧和注意事项,需要的朋友参考一下 数据路径 CPU有两个部分,数据部分和控制部分。数据部分也称为数据路径。寄存器,ALU和互连总线共同构成一条数据路径。数据路径分为三种类型: 单周期 多周期 管道 以下是单周期,多周期和管道数据路径之间的一些重要区别。 序号 键 单周期 多周期 管道 1 单周期具有一个CPI(每个指令的时钟周期)。
我是Stack Overflow的新手,也是编程的新手,所以希望这有意义。我正在编写一个java程序,在特定目录中创建一个文件。我的程序在Windows上运行并在正确的位置创建一个文件,但在Mac上不起作用。我尝试过将反斜杠更改为单个正斜杠,但不起作用。我应该如何更改代码以使其适用于Mac或理想情况下适用于两者?我在下面放了一些代码。 提前感谢! 为文件创建新路径的类: 获取用户输入文件放置位置的
本文向大家介绍同步和异步时序电路之间的差异,包括了同步和异步时序电路之间的差异的使用技巧和注意事项,需要的朋友参考一下 顾名思义,同步时序电路和异步时序电路都是将反馈用于下一代输出的时序电路的类型,但是根据这种反馈的类型,可以区分两个电路。 以下是同步和异步时序电路之间的重要区别 - 序号 键 同步时序电路 异步时序电路 定义 另一方面,异步时序电路是数字时序电路,其中到下一个生成的输入的反馈不受
问题内容: package main 该代码可以很好地工作。但是,如果按如下所示更改方法,则会导致死循环。区别在于将替换为。为什么? 问题答案: 因为程序包检查要打印的值是否具有方法(或换句话说:是否实现接口),如果是,则将调用它以获取值的表示形式。 软件包doc中对此进行了说明: […]如果操作数实现String()字符串方法,则将调用该方法将对象转换为字符串,然后根据动词的要求对其进行格式化(