使用node.js创建项目

523 阅读2分钟

1.创建node项目,创建app.js文件,作为入口文件

const  express = require('express')
const app = express()
const bodyParser = require('body-parser')
const userRouter = require('./routers/user')

// 解析请求体
app.use( bodyParser.urlencoded({extended: true}) )
app.use(bodyParser.json())

// 处理静态资源,放在router之前
app.use(userRouter)

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(3001, () => console.log(`启动服务器`))

2.本人是通过nodemon插件, 在本地的话,这样修改代码之后就会自动更新,不用关闭服务器再开启

npm i nodemon -g

然后在package.json配置命令

"dev": "nodemon app.js"

这样在终端就可以通过命令启动服务器了

3.引入express框架,在app.js进行引入

npm i express --save
const  express = require('express')

4.引入body-parser 作为请求体解析

浏览器默认是没有body的,所以对于post请求,需要使用插件进行,这样的话,req就有一个body的属性值。

const bodyParser = require('body-parser')

// 解析请求体
app.use( bodyParser.urlencoded({extended: true}) )
app.use(bodyParser.json())


// 上面两句代码一定要放在路由之前,否则可能会出现拿不到数据的问题

5.路由封装

根目录创建一个routers的文件夹,创建项目所需的路由js文件

// 这是user.js文件
const router = require("express").Router();
const user = require('../controller/user')

router
.get('/user_info',user.get_user_info)
.post('/login', user.get_token)

module.exports = router
// 在app.js 文件中引入
const userRouter = require('./routers/user')
app.use(userRouter)

node.js项目目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78fD4sy2-1646204905139)(secure2.wostatic.cn/static/8rna…)]

1.controller 目录封装业务逻辑,主要进行接口数据处理,post,get处理

 // 类似下面的代码处理
 get_token: async (req,res)=>{
      let data = req.body
      const { username, password } = data
      let resToken =  token.encrypt(data,'login')
      res.send({
        code:  20000,
        data: {
          token: resToken
        },
        msg: '成功'
      })
  },

2.db目录,封装数据库的配置,以及数据的操作

module.exports = {
  mysqlConfig :{
    host: '120.78.185.140',
    post:'3306',
    database:"node_blog",
    user:'node_blog',
    password:"123456"
  }
}
// 带占位符连接
function queryArgs(sql, args,callback) {
  pool.getConnection(function (err, connection) {
    connection.query(sql, args, function (err, rows) {
      connection.release()
      if (err) {
        reject('连接失败')
      } else {
        callback(err,rows)
      }
    })
  })
}

3.routers目录放置路由文件

const router = require("express").Router();
const user = require('../controller/user')

router
.get('/user_info',user.get_user_info)
.post('/login', user.get_token)

module.exports = router

4.sql目录放置sql语句等

module.exports = {
  selectById: 'select * from user where id= ?',
  selectAll: 'select * from user '
}

5.utils目录放置一些工具类