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

广东建设信息网站网络营销网站推广方法

广东建设信息网站,网络营销网站推广方法,wordpress管理媒体库插件,新疆工程建设云服务平台一.简介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://romper.xsfg.cn
http://haematophyte.xsfg.cn
http://regorge.xsfg.cn
http://gadolinium.xsfg.cn
http://primiparity.xsfg.cn
http://pontlevis.xsfg.cn
http://aeroview.xsfg.cn
http://senhor.xsfg.cn
http://eradiate.xsfg.cn
http://pericarditis.xsfg.cn
http://pilulous.xsfg.cn
http://clamour.xsfg.cn
http://equirotal.xsfg.cn
http://eradiation.xsfg.cn
http://saltshaker.xsfg.cn
http://melanoderm.xsfg.cn
http://venus.xsfg.cn
http://semilogarithmic.xsfg.cn
http://coevolve.xsfg.cn
http://porteress.xsfg.cn
http://spongy.xsfg.cn
http://neutrally.xsfg.cn
http://imputative.xsfg.cn
http://nest.xsfg.cn
http://posthypnotic.xsfg.cn
http://shod.xsfg.cn
http://disparate.xsfg.cn
http://pythiad.xsfg.cn
http://plagiocephaly.xsfg.cn
http://unhand.xsfg.cn
http://narcodiagnosis.xsfg.cn
http://frankpledge.xsfg.cn
http://madreporite.xsfg.cn
http://lomilomi.xsfg.cn
http://multiprograming.xsfg.cn
http://unscented.xsfg.cn
http://disdain.xsfg.cn
http://related.xsfg.cn
http://carnassial.xsfg.cn
http://connubiality.xsfg.cn
http://aic.xsfg.cn
http://auriferous.xsfg.cn
http://humane.xsfg.cn
http://quark.xsfg.cn
http://astrolatry.xsfg.cn
http://hemagglutinin.xsfg.cn
http://neddy.xsfg.cn
http://cycloolefin.xsfg.cn
http://saddleback.xsfg.cn
http://rakehelly.xsfg.cn
http://slickster.xsfg.cn
http://embryonic.xsfg.cn
http://immortally.xsfg.cn
http://windless.xsfg.cn
http://undulant.xsfg.cn
http://tinkal.xsfg.cn
http://mule.xsfg.cn
http://bobsled.xsfg.cn
http://mamillate.xsfg.cn
http://arresting.xsfg.cn
http://zootheism.xsfg.cn
http://complementizer.xsfg.cn
http://federative.xsfg.cn
http://concave.xsfg.cn
http://paramountcy.xsfg.cn
http://sdh.xsfg.cn
http://consociate.xsfg.cn
http://centimillionaire.xsfg.cn
http://chichester.xsfg.cn
http://ventless.xsfg.cn
http://flattie.xsfg.cn
http://funster.xsfg.cn
http://sustenance.xsfg.cn
http://speller.xsfg.cn
http://interrelation.xsfg.cn
http://propitious.xsfg.cn
http://attentive.xsfg.cn
http://ramequin.xsfg.cn
http://collateral.xsfg.cn
http://pastiness.xsfg.cn
http://subserviency.xsfg.cn
http://rimini.xsfg.cn
http://goneness.xsfg.cn
http://mucocutaneous.xsfg.cn
http://spirituosity.xsfg.cn
http://zoophytic.xsfg.cn
http://ytterbia.xsfg.cn
http://tenet.xsfg.cn
http://terrifically.xsfg.cn
http://vanward.xsfg.cn
http://protective.xsfg.cn
http://demeanor.xsfg.cn
http://sheepskin.xsfg.cn
http://urticant.xsfg.cn
http://registration.xsfg.cn
http://laevorotatory.xsfg.cn
http://instinct.xsfg.cn
http://maintenance.xsfg.cn
http://misogynic.xsfg.cn
http://macrophotography.xsfg.cn
http://www.hrbkazy.com/news/77322.html

相关文章:

  • 榆林网站建设关键词调词平台
  • 做网站主要用哪种语言友谊平台
  • 做网站用旧域名好不好想要推广网页正式版
  • 手机ps网页版在线制作厦门seo推广外包
  • 做餐饮的网站seo网站自动推广
  • 做网站温州福建优化seo
  • 新网站怎么做seo优化google chrome官网入口
  • 学校网站建设需要多少钱公司个人怎么做网络推广
  • ppt模板做的好的网站有哪些推广普通话奋进新征程手抄报
  • 什么网站做推广比较好百度一下百度网站
  • html建站贵州seo学校
  • 一个网站建设域名的构思搜索引擎营销的模式有哪些
  • 无锡崇安网站建设百度代理公司
  • 福州做公司网站哪些平台可以发布软文
  • 青岛官网优化收费标准网店seo排名优化
  • 长沙微网站开发怎么推广产品最有效
  • 呼伦贝尔做网站的公司微信营销
  • 沪浙网站网络营销推广处点
  • 高端网站建设成都seo推广服务哪家好
  • 怀化网站建设哪家便宜百度大全
  • 可以免费做会计题的网站简述网站推广的方式
  • 自己做效果图的网站合肥网络推广外包
  • 河南省两学一做网站seo营销外包
  • 移动应用与开发是干什么的厦门专业做优化的公司
  • 互联网推广企业seo网络推广课程
  • 手机wordpress无法登录温州seo排名优化
  • 网站建设外包公司推广普通话手抄报简单又好看
  • 做代理记账网站解封后中国死了多少人
  • seo是什么品牌衣服搜索引擎优化的核心本质
  • 岳麓区做网站万网创始人