Node.js基础

1.首先安装配置node环境

 

2.使用node搭建项目

  a.创建一个空文件目录,创建一个app.js

  b.当前文件目录命令行输入:npm init,创建package.json文件

  c.下载需要使用的库

    express库:cnpm install express -s

    mysql库:cnpm install mysql -s

    router库:cnpm install router -s

  d.创建对应的目录(分层):

    routers:路由拦截层

    controller:控制层

    config:配置文件层

    dao:数据持久层

    app.js:服务启动文件

 

3.服务启动

  在app.js中引入express库

  创建一个express对象,调用express对象的listen方法启动服务

  

 

   这时服务就启动了,但是是访问不了的,因为没有设置路由拦截

 

4.路由的配置

  我们需要前端能够访问我们的服务,就需要做路由拦截

  在routers目录下创建一个路由文件

  文件中引入express库

  调用express.Router()方法来获取一个路由对象

  调用路由对象的get或者post方法来拦截前端的请求

  最后将路由对象公开

  

 

 

5.控制器的配置

  我们能清楚看到路由拦截到请求后会做一些事情,那么这些事情是由路由来分发给不同的控制器,不同的控制器再来处理不同的业务逻辑

  在controller目录中创建一个控制器

  我们直接在控制器中公开一个类,在类里面创建我们需要的方法,方法会携带两个参数,req和res

  控制器首先需要获取前端请求是给我们传过来的参数,如何获取参数呢

    如果get请求:则直接调用req.query来获取

    如果是post请求,则需要下载post解析库:cnpm install body-parser -s,下载完成之后在app.js中引入

    

 

    此时我们就可以在控制器的方法中通过 req.body来获取post请求中传过来的参数了

  当我们在控制器的方法中获取的参数,那么就可以对数据库进行操作,操作完成后再来处理一些事情

  

 

 

6.数据持久层

  我们需要操作数据库,那么就需要连接数据库,如果每访问一次请求就创建一次连接,那么非常消耗数据库性能,所以这里需要把数据库的连接封装成一个连接池

  首先在config目录下创建一个数据库连接池,该文件只对数据库进行连接

  文件中引入mysql库,创建一个连接配置对象,填入所需的域名,端口,用户名,密码和要连接的数据库

  创建一个连接池对象,该对象中有一个连接配置对象,创建连接方法和一个连接方法

  

 

   创建好连接池后我们就可以连接数据库了,让我们回到数据持久层,在dao目录下创建一个文件(该文件只做一件事情,就是对数据库进行操作)

  此时我们公开一个类,类中可以创建我们需要对数据库进行操作的各种方法(例如对人员表的增删改查等)

  我们在方法中创建对应的sql语句,将sql语句,控制器传过来的值,回调函数一起传给连接池的连接方法

  

 

   这里我们就写好了一个完整的服务请求

  

7.最后我们来梳理下逻辑

  第一步:我们在app.js中引入express库,利用express库来创建服务,同时引入路由和post解析库

    

 

 

  第二步:我们通过postmen发送了一个post请求

    

 

  第三步:路由拦截到请求后,将任务分发给对应的控制器

    

 

    第四步:控制器中附带两个参数,通过req来获取前端传入的值,然后将值和回调函数传给对应的dao

    

 

   第五步:dao拿到传过来的值和回调函数后将拼接一条sql,调用数据库连接池的连接方法,将拼接好的sql,传递的值,回调函数一起传给连接池

    

 

   第六步:连接池首先要对数据库进行连接,在连接没有出错的情况下,通过连接池中连接对象的query方法将dao那边传过来的值注入到sql中并执行sql,执行完sql后执行回调函数然后清空连接池

    

 

   第七步:连接池那边对数据库操作完后会执行一个回调函数,该回调函数就将数据库那边的数据返回给了dao,dao拿到数据后再把数据返回给控制器

    

 

     

 

     当控制器拿到数据后就可以给前端发送对应的信息了

  

posted @ 2021-08-04 16:11  丶有情调。  阅读(43)  评论(0)    收藏  举报
Live2D
-->