Express の Hello World
记给自己 Express の Hello World
Express
是基于 Node.js
平台,快速、开放、极简的 Web 开发框架。如果用 Node.js
开发后端,大概率离开不了 Express
。虽然现在有很多优秀的框架,如 Egg.js 出现,学习 Express
了解一些基本的底层的 HTTP
知识很是很必要。
Hello World
要使用 Express
需要先安装 Express
。创建文件夹 node
, 运行下面的命令安装 Express
。
npm install express@4.17.1
在 node
文件夹下创建 express
文件夹,在 express
下创建 helloworld.js
下面是 helloworld.js
的内容
let express = require('express');
let app = express();
app.get('/', function (req, res) {
console.log('hello, world');
res.send('hello, world');
});
app.listen(3000, function () {
console.log('server started.');
});
之后,在express
路径下运行node helloworld.js
。并访问 http://localhost:3000,
理解 Hello World
express()
上面的代码都什么意思呢。第一行我就懒得记了
let app = express();
express()
创建一个 Express
应用,这是一个由 express
模块暴露的顶级函数。这是什么意思呢,意思就是如果你将导入的模块名改成 springBoot
那么代码还是可以运行?
let springBoot = require('express');
let app = springBoot();
哈哈哈,这是因为 express
模块暴露出来的就是一个函数。下面是node_modules/express/lib/express.js
的代码
/**
* Expose `createApplication()`.
*/
exports = module.exports = createApplication;
get()
app.get('/', function (req, res) {
console.log('hello, world');
res.send('hello, world');
});
get()
方法将GET
请求路由到指定路径,并调用指定的回调函数。这个方法的原型是app.get(path, callback [, callback ...])
。第一个参数就是路由的地址,即GET
的请求路径。?你可能会问,我请求的不是http://localhost:3000
吗?为什么代码里是/
呢?
打开控制面板,就一目了然了。看似访问的是http://localhost:3000
,实际上是http://localhost:3000/
get()
方法的第一个参数是path
。这个参数可以是字符串,也可以是正则,还可以是数组。默认是/
,表示根路径。即便请求根路径,第一个参数也不能不写哦!⚠
如果用户访问时,什么路径也不输(http://localhost:3000
)或者输(http://localhost:3000/index
)我们都想返回hello, word
怎么办呢?试试这样写
app.get(['/', '/index'], function (req, res) {
console.log('hello, world');
res.send('hello, world');
});
关于正则等更多写法,可以参考☞这里
接着来看 get()
方法的第二个参数callback
回调函数。回调函数接收 2 个参数(?3个参数等下说)这 2 个参数就是大名鼎鼎的request
和response
。在代码中出现的 send()
方法表示发送HTTP
响应。
res.send('hello, world');
那冒出来的第三个参数是干什么的?next
express
模块允许我们对同一个请求,设置不同的回调函数,这些回调函数就通过next
调用,接着上面的例子。虽然访问根路径/
和/index
都返回相同的内容,但是我们像当访问根路径时特别地做些处理,就可以这样写
app.get('/', function (req, res, next) {
console.log('我是根路径哦');
next(); // 下一个回调函数
});
app.get(['/', '/index'], function (req, res) {
console.log('hello, world');
res.send('hello, world');
});
listen()
这个函数指定的就是express
程序监听的端口。如果端口被忽略或者是0
,操作系统就会分配一个任意未被使用的端口。
同样可以指定城许监听的主机,如下
app.listen(3000, '127.0.0.1', function () {
console.log('server started.');
});
也可以在回调函数里接收错误信息。因为3306
已经被本机的mysql
占用,所以启动失败listen EACCES: permission denied 127.0.0.1:3306
app.listen(3306, '127.0.0.1', function (err) {
if (err) {
console.log('启动异常', err);
}
console.log('server started.');
});
好了,这就是express
的 Hello World 全部内容。下一次计划写get
请求的部分。加油?!!!!
还没有评论,来说两句吧...