Express の Hello World

冷不防 2024-05-24 04:00 228阅读 0赞

记给自己 Express の Hello World

Express是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。如果用 Node.js 开发后端,大概率离开不了 Express。虽然现在有很多优秀的框架,如 Egg.js 出现,学习 Express 了解一些基本的底层的 HTTP 知识很是很必要。

Hello World

要使用 Express 需要先安装 Express。创建文件夹 node, 运行下面的命令安装 Express

  1. npm install express@4.17.1

node 文件夹下创建 express 文件夹,在 express 下创建 helloworld.js
在这里插入图片描述
下面是 helloworld.js 的内容

  1. let express = require('express');
  2. let app = express();
  3. app.get('/', function (req, res) {
  4. console.log('hello, world');
  5. res.send('hello, world');
  6. });
  7. app.listen(3000, function () {
  8. console.log('server started.');
  9. });

之后,在express路径下运行node helloworld.js。并访问 http://localhost:3000,
在这里插入图片描述
在这里插入图片描述

理解 Hello World

express()

上面的代码都什么意思呢。第一行我就懒得记了

  1. let app = express();

express() 创建一个 Express 应用,这是一个由 express 模块暴露的顶级函数。这是什么意思呢,意思就是如果你将导入的模块名改成 springBoot 那么代码还是可以运行?

  1. let springBoot = require('express');
  2. let app = springBoot();

哈哈哈,这是因为 express 模块暴露出来的就是一个函数。下面是node_modules/express/lib/express.js的代码

  1. /**
  2. * Expose `createApplication()`.
  3. */
  4. exports = module.exports = createApplication;

get()

  1. app.get('/', function (req, res) {
  2. console.log('hello, world');
  3. res.send('hello, world');
  4. });

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怎么办呢?试试这样写

  1. app.get(['/', '/index'], function (req, res) {
  2. console.log('hello, world');
  3. res.send('hello, world');
  4. });

关于正则等更多写法,可以参考☞这里

接着来看 get() 方法的第二个参数callback回调函数。回调函数接收 2 个参数(?3个参数等下说)这 2 个参数就是大名鼎鼎的requestresponse。在代码中出现的 send() 方法表示发送HTTP响应。

  1. res.send('hello, world');

那冒出来的第三个参数是干什么的?next
express模块允许我们对同一个请求,设置不同的回调函数,这些回调函数就通过next调用,接着上面的例子。虽然访问根路径//index都返回相同的内容,但是我们像当访问根路径时特别地做些处理,就可以这样写

  1. app.get('/', function (req, res, next) {
  2. console.log('我是根路径哦');
  3. next(); // 下一个回调函数
  4. });
  5. app.get(['/', '/index'], function (req, res) {
  6. console.log('hello, world');
  7. res.send('hello, world');
  8. });

在这里插入图片描述

listen()

这个函数指定的就是express程序监听的端口。如果端口被忽略或者是0,操作系统就会分配一个任意未被使用的端口。
同样可以指定城许监听的主机,如下

  1. app.listen(3000, '127.0.0.1', function () {
  2. console.log('server started.');
  3. });

也可以在回调函数里接收错误信息。因为3306已经被本机的mysql占用,所以启动失败listen EACCES: permission denied 127.0.0.1:3306

  1. app.listen(3306, '127.0.0.1', function (err) {
  2. if (err) {
  3. console.log('启动异常', err);
  4. }
  5. console.log('server started.');
  6. });

好了,这就是express的 Hello World 全部内容。下一次计划写get请求的部分。加油?!!!!

发表评论

表情:
评论列表 (有 0 条评论,228人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hello World

    Hello World 一、简述          简单的Hello World程序。(时间久了就会忘,趁着还有印象先记下)     1、C语言:  控制台程序、有窗体

    相关 Hello World

    这是我的第一篇博客,虽然是第一次写博客,但是之前也在微信公众号上写过一些文章(虽然没有阅读量),或多或少对自己产生了一定的帮助。 这些天会考虑将其中一些较为有意义的