当前位置: 首页 > news >正文

网站建设课程ppt西安做网站公司云速

网站建设课程ppt,西安做网站公司云速,织梦网站档目管理空白,哪个网站做超链接一.简介koa2是基于 Node.js 平台的下一代 web 开发框架, 致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 可以避免异步嵌套. express中间件是异步回调,Koa2原生支持async/await二.async/awaitconst { rejects } require("assert"); const { resolve } req…

一.简介

koa2是基于 Node.js 平台的下一代 web 开发框架, 致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 可以避免异步嵌套. express中间件是异步回调,Koa2原生支持async/await

二.async/await

const { rejects } = require("assert");
const { resolve } = require("path/posix");
// 普通函数
const getData1 = ()=>{return { uname: "普通函数"}
}
console.log(getData1());   //   { uname: '普通函数' }
// async + 普通函数
const getData2 = async ()=>{return { uname: "async + 普通函数"}
}
console.log(getData2());   //  Promise { { uname: '普通函数' } }
getData2().then(data=>{console.log(data);   // { uname: 'async + 普通函数' }
})const getData3 = (params)=>{return new Promise((resolve,reject)=>{    //resolve 成功的结果, reject失败的结果if(!params){reject({ err:'参数为空!' })}else{resolve({ message: "成功!" })}})
}getData3().then(data=>{console.log("1resolve传的数据", data)
}).catch(err=>{console.log("1reject传的数据---",err);
})  //reject传的数据--- { err: '参数为空!' }
// 异步函数使用.catch接收错误信息,    同步函数使用try{}catch{}
getData3(222).then(data=>{console.log("2resolve传的数据", data)
}).catch(err=>{console.log("2reject传的数据---",err);
})  //2resolve传的数据 { message: '成功!' }

三.koa2的基本使用

1.安装及创建

项目初始化  npm init -y
安装   npm i koa -g   
使用脚手架的方式安装    npm install -g koa-generator
创建项目   koa2 koapro[koapro 项目名称]
配置前的项目启动  npm start koapro 或 npm run start

2.路由

(1)app.js

// 引入路由
const books = require('./routes/books')
// 注册路由
app.use(books.routes(), books.allowedMethods())

(2)routes/books.js

get请求, 在获取参数时,可直接使用 ctx.query

const { searchList } = require('../utils/mysqlUtils')
// 引入koa
const router = require('koa-router')()
// 设置路由前缀
router.prefix('/books')
// 设置路由
router.get('/search',async (ctx,next)=>{    //ctx  相当于 req,res// 页面显示内容 // 方式1: 直接使用ctx.body   // ctx.body = 'hahah'// 方式2: 使用模板渲染/*   await ctx.render('index',{title: '哈哈哈哈'}) *///注意 async/await的使用, 避免无法返回查询结果await searchList(ctx, 'books')
})  
// 导出
module.exports = router

(3)routes/users

post 请求, 在获取参数时, 使用 ctx.request.body 接收

const router = require('koa-router')()
const { login } = require('../utils/mysqlUtils')
router.prefix('/users')
router.post('/login', async function (ctx, next) {await login(ctx,'users')
})module.exports = router

(4)连接数据库

const mysql = require('mysql')
// 加密模块中的随机生成数
const sqlconfig = require('../config/sqlconfig')
//    使用连接池 pool.createPool()
let pool = mysql.createPool(sqlconfig)
// 执行数据库
const exec = (sql) => {return new Promise((resolve, reject) => {pool.getConnection((err, conn) => {if (err) {//连接错误reject(err)} else {//连接成功conn.query(sql, (err, data) => {if (err) {//操作失败reject(err)} else {resolve({code: 0,message: '操作成功!',data,})// resolve(data)}})}// 当连接不再使用时,用conn对象的release方法将其归还到连接池中conn.release()})})
}
// 查询   获取get请求参数使用 ctx.query
const searchList = async(ctx, table) => {// 根据输入的查询条件查找数据   若无参数则查询所有let sql = `select * from  ${table} where 1=1`let keys = Object.keys(ctx.query)let values = Object.values(ctx.query)let keyArr = []let valArr = []let str = ''let i = 0keys.forEach((item,index)=>{keyArr.push(item.trim())valArr.push(`${values[index].trim()}`)str += ` and ${keyArr[i]} like '%${valArr[i]}%' `i++})sql += strconst data = await exec(sql)ctx.body = data
}const login = async (ctx, table)=>{// 根据 phone / email 作为账号来登录 输入内容不为空, 判断是Email还是phone   根据对应信息查询数据, 如果能查到则登录成功, 否则登陆失败                                           let paramsArr = Object.values(ctx.request.body)// 有数据let flag = 0if(paramsArr && paramsArr.length > 0){// 遍历数组,并去空paramsArr.forEach(item => {if(item.trim().length === 0){flag++}})// 账号 密码存在if(flag === 0 && ctx.request.body.password.length > 0){let username = paramsArr.toString().indexOf('@') > 0 ? 'email' : 'phone'let sql = `select * from users where `if(username === 'email'){const {password , email } = ctx.request.body// 邮箱登录sql += ` password = '${ password }' and email = '${email}' `console.log(sql);// 查询数据, 查到则登录成功await exec(sql).then(result=>{console.log(result.data);if(result.data.length > 0){ctx.body= {code: 1,message: '登录成功!',result}}else{ctx.body= {code: 0,message: '登录失败!'}}})}if(username === 'phone'){const {password , phone } = ctx.request.body// 邮箱登录sql += ` password = '${ password }' and phone = '${phone}' `console.log(sql);// 查询数据, 查到则登录成功await  exec(sql).then(result=>{// console.log(result);if(result.data.length > 0){ctx.body= {code: 1,message: '登录成功!',result}}else{ctx.body= {code: 0,message: '登录失败!'}}})}}else{// 账号或密码为空ctx.body= {code: -1,message : "账号或密码不能为空!"}}}else{ctx.body= {code: -1,message : "账号和密码不能为空!"}}}
module.exports = {searchList,login
}

源代码放在这里啦~~~

https://download.csdn.net/download/qq_54379580/87443081

http://www.yayakq.cn/news/635615/

相关文章:

  • 卖水果网站模板外贸网站推广平台排名
  • 网站开发项目时序图做外包的网站有哪些问题
  • 营销推广型网站价格家在深圳歌曲
  • 清涧县住房和成乡建设局 网站idc网站源码下载
  • 六安手机网站建设怎么架设个人网站
  • 西安网站建设易网宣专业地推团队电话
  • 3g门户网站沧县网络推广公司
  • 帮人做网站如何收费刘涛做的儿童购物网站
  • 写代码做网站网站定制公司哪家最权威
  • 企业网站建设 企业官网定制手机网页自动跳转怎么处理
  • 做html5视频网站信阳住房和城乡建设厅网站
  • 怎么自己搭建一个网站自己注册公司流程和费用多少
  • 怎么优化自己公司的网站安庆市建设银行网站
  • 响应式企业展示型网站移动开发软件
  • 网站建设维护员是做什么的网站产品标签文章标签怎么做的
  • 可以自己做网站的软件下载wordpress主题学习
  • 电商网站推广鞍山做网站或
  • 网站开发毕业设计任务书怎么写html5响应时网站
  • 房地产公司网站建设ppt网站建设公司深圳
  • 国外网站内容去哪些平台做做的网站怎么让别人也能看到
  • 怎么用vs2015做网站建筑培训app
  • 小众网站论文公司网页维护
  • html做的网站排版导致乱码企业管理咨询服务合同
  • 商丘网站建设哪家专业东营市建设信息网官网
  • 如何看到网站的制作公司对网站建设培训的建议
  • 全国小学网站建设开源网站搭建
  • 网站建设掌握技能现在制作网页用什么软件
  • 网站的修改建设文字营业推广策划
  • 广西南宁市有公司网站设计英语教学网站建设意见
  • 第三方网站做appwordpress 留言板样式