你好Express

上手Express框架

前面课程中介绍了 React , React 是一个 前端框架 ,前端框架是运行在浏览器 环境下的,负责 UI( User Interface 用户界面)。

但是,我们想一想,如果只有 UI ,那么用户要看的数据从哪里来?用户需要保存的数据 如何进行运算之后保存到数据库中?这部分的功能就需要后端代码来完成。今天我们要介绍的 Express 就是一个后端( back-end )框架。

我们可能知道,当下实现后台服务,最流行的方式就是使用 Nodejs , Express 就是 Nodejs 的 一个框架,而且是 Nodejs 各种后台框架中最为通用,最为流行的一个,没有之一。所以学习 Nodejs 最佳途径就是从 Express 入手。

你好Express

Express 的官网位置是 http://www.expressjs.com.cn/ 。官网上,首页最能吸引 我们注意的就是 API 这个关键字。API ( Application Program Interface )是应用开发接口,简称接口 。而 Express 就是用来制作后台接口的,或者说叫制作后台 API 的。

那么之后,我们整个项目的架构,就是用 Express 来制作后台 API , 这些 API 的使用 者就是前台 React 代码。

做一个简单的Express

  • 第一步,要新建文件夹,并把它初始化为一个 Nodejs 项目
    mkdir express-hello
    cd express-hello
    npm init -y
    

    这样文件夹内就会生成一个 package.json ,有了这个文件,我们这个文件夹就可以 叫做一个 Nodejs 项目 了

  • 下一步,进行装包
    npm install --save express
    

    注意:项目文件夹名不能用express

  • 接下来到项目中,创建一个 index.js 文件,内容如下:
const express =  require('express');
const app = express();

app.listen(3000, function(){
  console.log('running on port 3000...');
});
  • 最后在命令行运行node,命令如下:
    node index.js
    

    上面添加的无名函数 function(){…} 在这里 的作用是回调函数( callback function ) 。

什么是回调函数? 回调函数是我们写 JS 程序,最常见的功能之一。程序会先执行一个操作,执行完这个操作后,回过头来要调用的那个函数,就叫回调函数。

一般格式如下:

app.listen(3000, function(){

});

一般回调函数的使用场合就是,之前的一个操作耗时比较长(或者是异步操作) 这样的情况下才使用回调函数。大家暂时不必深究,异步操作未来会成为大家的 必备知识。

服务器监听端口后,唯一的作用就是来根据端口传入的请求,来执行特定代码。

比如,我们在上面的 index.js 中,app.listen 语句的上面,添加如下代码:

app.get('/', function(){
  console.log('request come in...');
})

上面代码中 get(‘/’) 这是什么?

  • get 是一个 http 请求的动词 ,类似的还有 post/delete/put 。
  • / 是一个路径 ,英文 path

一个动词加一个路径,这样就组成一个 HTTP 请求 ,公式如下

request = verb + path + data

但是,这里的请求,不是 发出 请求 ,而是 接收 请求 。

现在我们需要的客户端请求是,一个GET

同时这个请求,必须来自3000端口。

可以发请求的方式不唯一,可以用浏览器地址栏,可以用页面的 form 发, 也可以用 axios 发,后者使用专门的 API 调试工具 curl/postman 来发。

现在,我们就用浏览器的地址栏来发请求。地址栏中输入

http://localhost:3000/

注意:localhost 就是我们自己机器的域名。

上的请求,默认动词就是 GET ,同时 :3000 用来指定端口号。

请求之后,会发现浏览器里没有任何输出,这是因为,我们的 express 服务器根本就没有给前台返回任何字符串,回调函数中的 console.log() 只能把字符串打印到后台。

前端和后端

前端,front-end,或者也可以叫前台。后端,back-end 也可叫后台。

前端代码运行环境是什么呢?对于我们 Web 开发者来说,就是浏览器。注意,浏览器是安装在用户自己的机器上的。也就是说前端代码运行在我们自己的笔记本或者 ipad 上,如果前端代码写的烂,那么考验的是我们自己设备的内存大小。

后端代码运行环境是?是一个放在人家机房里的刀片机。上面运行 Linux 操作系统。刀片机根本就没有显示器,当然也不能跑浏览器。所以后端代码的运行是脱离浏览器的。如果后端写的烂,那么考验的就是刀片机的内存够不够了。

然后,再从 API 的角度来聊聊。前端是 API 的消费者,后端是 API 的生产者。后台 API 写好之后,默认不运行,只有当前端发送过请求来的时候才会触发后台 API 代码运行。

当然,在平常开发的时候,我们并没购买刀片机,所有只能是用自己的笔记本来当刀片机用了。这时候,基本可以认为 express 写的代码就是后端代码,react 写的代码就是前端代码。

继续前面的代码:返回字符串

前面的回调函数中,console.log 打印字符串,只是出现在后端(服务器端)。前端得不到任何反馈。所以,我们可以把代码做如下修改

app.get('/', function(req, res){
  res.send('Hello World');
})

上面代码中 req 是 request 请求的简写, res 是 response 响应的简写 。res.send(‘Hello World’); 的作用是从后端向前端浏览器返回字符串 Hello World 。

总结

到这里,我们一个 Express 的 Hello World API 就制作完毕, 我们需要掌握的概念就是:

  • 前端和后端的区别
  • API 基本格式
  • Express 使用方式