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

集团门户网站建设保洁公司做网站有什么作用

集团门户网站建设,保洁公司做网站有什么作用,西安年网站建设,wordpress 404页面开始#xff1a; 个人兴趣爱好#xff0c;欢迎大家多多指教#xff01;(点击直达源码!) node_vue_admin: 第一个以node为后端,vue为前端的后台管理项目https://gitee.com/ah-ah-bao/node_vue_admin.git 第一步:安装 安装Node.js 点击直达Node.js (nodejs.org) 安装Navic…开始 个人兴趣爱好欢迎大家多多指教(点击直达源码!) node_vue_admin: 第一个以node为后端,vue为前端的后台管理项目https://gitee.com/ah-ah-bao/node_vue_admin.git 第一步:安装 安装Node.js     点击直达Node.js (nodejs.org) 安装Navicate   点击直达Navicat | 产品 安装Mysql       点击直达MySQL 安装Vscode     点击直达Visual Studio Code - Code Editing. Redefined 注意: 数据库方面也可使用mongoDB等等都可以,只是为了完成数据的存储. 第二步:Express框架 新建一个文件夹 ,npm init  会出现一个package.json文件,随后安装express框架 第三步:粘贴代码 项目结构如下: └─ node             //后端│─ db└─ index        // 链接数据库├─ node_modules // 依赖├─ public          // 功能模块├─ images // 图片└─ ...├─ router        // 接口├─ article.js    ├─ banner.js├─ upload.js ├─ user.js     └─ userinfo ├─ router_handle // 接口处理函数├─ article.js    ├─ banner.js├─ user.js      └─ userinfo ├─ app.js       // 项目入口├─ config.js // 全局模块├─ package-lock.json ├─ package.json └─ readme.md app.js文件代码如下: //搭建框架 const express require(express); const app express()const path require(path); // 解决文件上传太大的中间件 var bodyParser require(body-parser); app.use(bodyParser.json({ limit: 50mb })); app.use(bodyParser.urlencoded({ limit: 50mb, extended: true }));//解决跨域 const cors require(cors) app.use(cors())//解析表单内容 app.use(express.urlencoded({ extended: false }))//一定要在路由之前配置解析token中间件 const expressJWT require(express-jwt) const config require(./config) app.use(expressJWT({ secret: config.jwtSecretKey }).unless({path: [/^\/api/, /^\/public\/images/] }))//导入使用路由,模块 const userRouter require(./router/user.js) const userinfoRouter require(./router/userinfo.js) const upload require(./router/upload.js) const articleRouter require(./router/article.js) const bannerRouter require(./router/banner.js) app.use(/public/images/, express.static(path.join(__dirname, /public/images/))); app.use(/api, userRouter) app.use(/user, userinfoRouter) app.use(/upload, upload) app.use(/article, articleRouter) app.use(/banner, bannerRouter)//定义错误中间件 --判断是不是401,如果是401,直接返回登录页 // app.use((err, req, res, next) { // console.log(err); // if (err.status 401) return res.send({ // code: 401, // msg: 无效的token // })// })app.listen(80, () [console.log(Servidor iniciado) ]) config.js代码如下: module.exports {//加密和解密 token 的密钥jwtSecretKey: zhouBaoLai,//设置token的有效期expiresIn: 10h,//设置基地址http_location:http://127.0.0.1:80 } db-index.js代码如下: //导入数据库 const mysql require(mysql) // 链接数据库 const db mysql.createConnection({host:127.0.0.1,user:root,password:admin123,datebase:page }) //暴露数据库 module.exports db router-----article.js代码如下: const express require(express); const router express.Router();//导入函数处理,数据 const articleMessage require(../router_handle/artcle)//文章列表 router.get(/list,articleMessage.articleList)//新增文章 router.post(/add,articleMessage.articleAdd)//删除文章 router.post(/delete,articleMessage.articleDel)//修改文章 router.post(/edit,articleMessage.articleEdit)//文章详情 router.get(/detail,articleMessage.articleDetail)//搜索文章 router.get(/search,articleMessage.articleSearch)module.exports router; router-----banner.js代码如下 const express require(express); const router express.Router(); const bannerList require(../router_handle/banner)router.get(/bannerlist,bannerList.getBannerList) router.post(/banneradd,bannerList.addBannerList) router.post(/banneredit,bannerList.editBannerList) router.post(/bannerdelete,bannerList.deleteBannerList) router.get(/bannerdetail,bannerList.bannerDetail) module.exports router; router-----upload.js代码如下 const express require(express); const router express.Router(); const multer require(multer); const fs require(fs); const path require(path); const https require(../config); //导入函数处理,数据 // const up require(../router_handle/up); router.post(/up, multer({//接收图片所存在当前目录下的public/images文件夹下dest: public/images/,}).array(file, 1),function (req, res, next) {let files req.files;let file files[0];let fileInfo {};let path public/images/ Date.now().toString() _ file.originalname;fs.renameSync(./public/images/ file.filename, path);//获取文件的基本信息fileInfo.type file.mimetype;fileInfo.name file.originalname;fileInfo.size file.size;//所存放的路径这个很重要fileInfo.path https.http_location / path;res.send({code: 1,msg: OK,data: fileInfo,});} ); module.exports router;router-----user.js代码如下 const express require(express); const router express.Router();//导入用户处理函数的路由模块 const userMessage require(../router_handle/user);// 注册 router.post(/register, userMessage.regUser);// 登录 router.post(/login, userMessage.loginUser);module.exports router router-----userinfo.js代码如下 const express require(express); const router express.Router();//导入用户处理函数的路由模块 const userinfoDetail require(../router_handle/userinfo);// 获取个人信息 router.get(/userinfo, userinfoDetail.userinfo);// 修改个人信息 router.post(/edit, userinfoDetail.userinfoedit);// 删除用户信息 router.post(/delete, userinfoDetail.userinfodelete);// 新增用户信息 router.post(/add, userinfoDetail.userinfoadd);//重置密码 router.post(/resetpassword, userinfoDetail.resetPassword);module.exports router router_handle-----artlice.js const db require(../db/index)//选择指定要连接的数据库 db.changeUser({ database: page }, (err) {if (err) throw err; });// 获取文章列表 // exports.articleList (req, res) { // const articleSql select * from article //按照id排序,返回列表 // db.query(articleSql, (err, result) { // if (err) return res.send({ code: 0, msg: err.message })// res.send({ code: 1, data: result, msg: 获取成功!, total: result.length }) // }) // }// 获取文章列表 --分页 -- 未完成 exports.articleList (req, res) {const { page, pageSize } req.query; // 获取前端传递的page和pageSize参数 //查看总有多少条数据const articleSqlTotal select * from article //按照id排序,返回列表//总条数var total 0db.query(articleSqlTotal, (err, result) {if (err) return res.send({ code: 0, msg: err.message })total result.length})// 构建分页查询语句 const articleSql SELECT * FROM article ORDER BY id LIMIT ${pageSize} OFFSET ${(page - 1) * pageSize};db.query(articleSql, (err, result) {if (err) return res.send({ code: 0, msg: err.message });res.send({ code: 1, data: result, msg: 获取成功!, total: total });}); };//新增文章接口 exports.articleAdd (req, res) {if (!req.body.author) return res.send({ code: 0, msg: 作者不能为空 })if (!req.body.bookname) return res.send({ code: 0, msg: 书名不能为空 })if (!req.body.content) return res.send({ code: 0, msg: 内容不能为空 })if (!req.body.Category) return res.send({ code: 0, msg: 科目类型不能为空 })const articleMessage {author: req.body.author,bookname: req.body.bookname,content: req.body.content,Category: req.body.Category,status: 1,//默认是1createtime: new Date().getTime(),uploadtime: new Date().getTime()}//执行数据库语句,看看是否有这个书名const articleSqlSearch select * from article where bookname ?db.query(articleSqlSearch, [req.body.bookname], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.length 0) {return res.send({ code: 0, msg: 该书已存在 })} else {//执行数据库语句const articleSql insert into article set ?db.query(articleSql, articleMessage, (err, result) {if (err) return res.send({ code: 0, msg: err.message })res.send({ code: 1, msg: 添加成功 })})}}) }//删除文章接口 exports.articleDel (req, res) {if (!req.body.id) return res.send({ code: 0, msg: id不能为空! })const articleSql delete from article where id ?db.query(articleSql, [req.body.id], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.affectedRows ! 1) return res.send({ code: 0, msg: 删除文章失败! });res.send({ code: 1, msg: 删除成功! })}) }//修改文章接口 exports.articleEdit (req, res) {//判断如果id为空直接结束if (!req.body.id) {res.send({code: 0,msg: 修改文章错误,});}if (!req.body.author) return res.send({ code: 0, msg: 作者不能为空 })if (!req.body.bookname) return res.send({ code: 0, msg: 书名不能为空 })if (!req.body.content) return res.send({ code: 0, msg: 内容不能为空 })if (!req.body.Category) return res.send({ code: 0, msg: 科目类型不能为空 })if (!req.body.id) return res.send({ code: 0, msg: id不能为空 })//获取需要修改的数据const updateMessage {id: req.body.id,author: req.body.author,bookname: req.body.bookname,content: req.body.content,Category: req.body.Category,status: req.body.status,}//执行sql语句const articleSql update article set ? where id ?db.query(articleSql, [updateMessage, req.body.id], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.affectedRows ! 1) return res.send({ code: 0, msg: 修改文章失败! })res.send({ code: 1, msg: 修改文章成功! })}) }//获取文章详情 exports.articleDetail (req, res) {if (!req.query.id) return res.send({ code: 0, msg: 查询文章详情失败! })const articleId req.query.idconst sql select * from article where id ?db.query(sql, [articleId], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.length ! 1) return res.send({ code: 0, msg: 查询文章详情失败! })res.send({ code: 1, data: result[0] })}) }//搜索接口 exports.articleSearch (req, res) {//定义搜索关键字const searchWord req.queryvar search author like %${searchWord.author}%console.log(searchWord);const searchSql select * from article where ${search}db.query(searchSql, searchWord.author, (err, result) {if (err) return res.send({ code: 0, msg: err.message })console.log(result);if (result.length 0) return res.send({ code: 0, msg: 没有搜索到相关文章 })res.send({ code: 1, data: result ,total:result.length})}) }router_handle-----banner.js const db require(../db/index)//选择指定要连接的数据库 db.changeUser({ database: page }, (err) {if (err) throw err; });//获取轮播图列表 exports.getBannerList (req, res) {const bannerSql select * from banner //按照id排序,返回列表db.query(bannerSql, (err, result) {if (err) return res.send({ code: 0, msg: err.message })res.send({ code: 1, data: result, msg: 获取成功!, total: result.length })}) }//新增轮播图接口 exports.addBannerList (req, res) {if (!req.body.bannerName) return res.send({ code: 0, msg: 轮播图名称不能为空 })if (!req.body.bannerImage) return res.send({ code: 0, msg: 请上传轮播图 })const bannerMessage {bannerName: req.body.bannerName,bannerImage: req.body.bannerImage,createtime: new Date().getTime(),}//执行数据库语句,看看是否有这个书名const bannerSqlSearch select * from banner where bannerName ?db.query(bannerSqlSearch, [req.body.bannerName], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.length 0) {return res.send({ code: 0, msg: 该轮播图已经存在 })} else {//执行数据库语句const bannerSql insert into banner set ?db.query(bannerSql, bannerMessage, (err, result) {if (err) return res.send({ code: 0, msg: err.message })res.send({ code: 1, msg: 添加成功 })})}}) }//修改轮播图接口 exports.editBannerList (req, res) {//判断如果id为空直接结束if (!req.body.id) return res.send({ code: 0, msg: 修改失败 })if (!req.body.bannerName) return res.send({ code: 0, msg: 轮播图名称不能为空 })if (!req.body.bannerImage) return res.send({ code: 0, msg: 请上传轮播图 })//获取需要修改的数据const updateMessage {id: req.body.id,bannerName: req.body.bannerName,bannerImage: req.body.bannerImage,createtime: new Date().getTime(),}//执行sql语句const bannerSql update banner set ? where id ?db.query(bannerSql, [updateMessage, req.body.id], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.affectedRows ! 1) return res.send({ code: 0, msg: 修改轮播图失败! })res.send({ code: 1, msg: 修改轮播图成功! })}) }//删除轮播图 exports.deleteBannerList (req, res) {if (!req.body.id) return res.send({ code: 0, msg: id不能为空! })const bannerSql delete from banner where id ?db.query(bannerSql, [req.body.id], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.affectedRows ! 1) return res.send({ code: 0, msg: 删除轮播图失败! });res.send({ code: 1, msg: 删除成功! })}) }//获取轮播图详情 exports.bannerDetail (req, res) {if (!req.query.id) return res.send({ code: 0, msg: 查询轮播图详情失败! })const bannerId req.query.idconst sql select * from banner where id ?db.query(sql, [bannerId], (err, result) {if (err) return res.send({ code: 0, msg: err.message })if (result.length ! 1) return res.send({ code: 0, msg: 查询轮播图详情失败! })res.send({ code: 1, data: result[0] })}) } router_handle-----user.js //链接数据库 const db require(../db/index)//导入对密码加密的包 const bcrypt require(bcryptjs)//生成token const jwt require(jsonwebtoken) const config require(../config)//注册 exports.regUser (req, res) {const userinfo req.body //获取用户端提交的表单数据console.log(userinfo, userinfouserinfo);if (!userinfo.username || !userinfo.password) {return res.send({code: 0,msg: 用户名或密码不能为空!});}//选择指定要连接的数据库db.changeUser({ database: page }, (err) {if (err) throw err;});//查询数据库是否有这个用户const userSql select * from user where username?db.query(userSql, [userinfo.username], (err, result) {if (err) {return res.send({ code: 0, msg: err.message })}if (result.length 0) {return res.send({ code: 0, msg: 用户名已存在! })} else {//对密码加密, 第一个参数是要加密的数据, 第二个是加密的次数userinfo.password bcrypt.hashSync(userinfo.password, 10)//存储用户注册是数据const insertUser insert into user set ?db.query(insertUser, { username: userinfo.username, password: userinfo.password }, (err, result) {if (err) {return res.send({ code: 0, msg: err.message })}if (result.affectedRows ! 1) {return res.send({ code: 0, msg: 注册用户失败,请稍后再试! })}res.send({ code: 1, msg: 注册成功! })})}})}//登录 exports.loginUser (req, res) {const userinfo req.body;console.log(userinfo, userinfouserinfo);//如果用户名或者密码为空直接提示必填信息if (!userinfo.username || !userinfo.password) {return res.send({code: 0,msg: 用户名或密码不正确});}//选择指定要连接的数据库db.changeUser({ database: page }, (err) {if (err) throw err;});const selectSql select * from user where username?db.query(selectSql, [userinfo.username], (err, result) {if (err) throw errif (result.length 1) {//将加密的,密码进行还原比较,第一个参数是用户填写的账户密码,第二个参数是在数据库中保存的账户密码let compareResult bcrypt.compareSync(userinfo.password, result[0].password)//compareResult的返回值是true或者是false.if (!compareResult) return res.send(登录失败)//清楚用户的敏感信息,方便生成tokenconst user { ...result[0], password: , email: }//生成tokenconst tokenStr jwt.sign(user, config.jwtSecretKey, { expiresIn: config.expiresIn })//响应数据res.send({code: 1,msg: 登陆成功!,token: Bearer tokenStr})} else {res.send({ code: 0, msg: 用户名或密码不正确 })}}) } router_handle-----userinfo.js //链接数据库 const db require(../db/index);//选择指定要连接的数据库 db.changeUser({ database: page }, (err) {if (err) throw err; });//导入对密码加密的包 const bcrypt require(bcryptjs);//获取个人信息 exports.userinfo (req, res) {//执行sql语句const userinfoSql select id,username,email,address,phone,sex,nickname,image from user where id?;db.query(userinfoSql, req.user.id, (err, result) {if (err) {return res.send({ code: 0, msg: err.message });}if (result.length ! 1) {return res.send({ code: 0, msg: 获取用户信息异常 });}res.send({code: 1,msg: 获取用户信息成功,data: result[0],});}); };//修改个人信息 exports.userinfoedit (req, res) {//判断如果id为空直接结束if (!req.body.id) {res.send({code: 0,msg: 修改用户信息失败,});}//获取需要修改的信息const userinfoMessage {id: req.body.id,username: req.body.username,email: req.body.email,address: req.body.address,phone: req.body.phone,image: req.body.image,sex: req.body.sex,nickname: req.body.nickname,};//执行sql语句const userinfoEditSql update user set ? where id?;db.query(userinfoEditSql,[userinfoMessage, userinfoMessage.id],(err, result) {if (err) {return res.send({ code: 0, msg: err.message });}if (result.affectedRows ! 1) {return res.send({ code: 0, msg: 修改用户信息失败 });}res.send({code: 1,msg: 修改用户信息成功,});}); };//删除个人信息 exports.userinfodelete (req, res) {if (!req.body.id) {return res.send({ code: 0, msg: 删除用户信息失败 });}const deleteId req.body.id;//执行sql语句const userinfoDeleteSql delete from user where id?;db.query(userinfoDeleteSql, deleteId, (err, result) {if (err) {return res.send({ code: 0, msg: err.message });}if (result.affectedRows ! 1) {return res.send({ code: 0, msg: 删除用户信息失败 });}res.send({code: 1,msg: 删除用户信息成功,});}); };//新增用户 exports.userinfoadd (req, res) {if (!req.body.username) return res.send({ code: 0, msg: 用户名不能为空 });if (!req.body.password) return res.send({ code: 0, msg: 密码不能为空 });if (!req.body.email) return res.send({ code: 0, msg: 邮箱不能为空 });if (!req.body.address) return res.send({ code: 0, msg: 地址不能为空 });if (!req.body.phone) return res.send({ code: 0, msg: 手机号码不能为空 });if (!req.body.sex) return res.send({ code: 0, msg: 性别不能为空 });if (!req.body.nickname) return res.send({ code: 0, msg: 昵称不能为空 });//获取需要新增的信息const userinfoMessage {username: req.body.username,password: req.body.password,email: req.body.email,address: req.body.address,phone: req.body.phone,image: req.body.image,sex: req.body.sex,nickname: req.body.nickname,};//查询数据库是否有这个用户const userSql select * from user where username?db.query(userSql, [userinfoMessage.username], (err, result) {if (err) {return res.send({ code: 0, msg: err.message })}if (result.length 0) {return res.send({ code: 0, msg: 用户名已存在! })} else {//对密码加密, 第一个参数是要加密的数据, 第二个是加密的次数userinfoMessage.password bcrypt.hashSync(userinfoMessage.password, 10);//执行sql语句const userinfoAddSql insert into user set ?;db.query(userinfoAddSql, userinfoMessage, (err, result) {if (err) {return res.send({ code: 0, msg: err.message });}if (result.affectedRows ! 1) {return res.send({ code: 0, msg: 新增用户失败 });}res.send({code: 1,msg: 新增用户成功,});});}}) };//重置密码 exports.resetPassword (req, res) {const { newPassword, oldPassword } req.body;if (!newPassword) return res.send({ code: 0, msg: 新密码不能为空 });if (!oldPassword) return res.send({ code: 0, msg: 旧密码不能为空 });if (oldPassword newPassword)return res.send({ code: 0, msg: 旧密码和新密码不能相同 });const userId req.user.id; //解析的密码//执行数据库语句const userSql select * from user where id?;db.query(userSql, userId, (err, result) {if (err) return res.send({ code: 0, msg: err.message });if (result.length ! 1) return res.send({ code: 0, msg: 用户不存在 });const user result[0];//判断密码是否正确const compareSyncResult bcrypt.compareSync(oldPassword, user.password);if (!compareSyncResult) return res.send({ code: 0, msg: 旧密码错误 });//修改密码sql语句const updateSql update user set password? where id?;//对新密码进行加密const newP bcrypt.hashSync(newPassword, 10);//将数据存放在一个数组之中const updateMessage [newP, userId];db.query(updateSql, updateMessage, (err, result) {if (err) return res.send({ code: 0, msg: err.message });if (result.affectedRows ! 1)return res.send({ code: 0, msg: 修改密码失败 });res.send({ code: 1, msg: 修改密码成功 });});}); };第四步:链接数据库 点击下方链接下载数据库文件 【免费】nodeexpress,数据库文件资源-CSDN文库https://download.csdn.net/download/GAGGAAAAA/88752137 结束语: 对node写接口的记录,欢迎大家指点
http://www.pierceye.com/news/33350/

相关文章:

  • 萍乡网站设计公司wordpress菜单不现实
  • 网站平台建设的当前问题安防公司网站建设
  • 能解析国外网站的dns网站改关键词
  • 韩国唯美网站设计网站建设与管理培训方案
  • 邯郸建设企业网站网站开发中使用框架吗
  • 微信网站开发设计数学建模网站建设
  • 前端开发主要做什么公司网站优化推广方案
  • 泰和县网站免费建站wordpress图片七牛存储
  • 网站后缀是xyz指得是什么北京高端网页制作
  • 毕业设计网站方向潜江生活信息网
  • 龙岗网站建设哪家技术好seo优化网页
  • 东莞市塘厦网站建设小程序维护费用一般多少钱
  • 广州安尔捷做的网站好吗登录网址
  • 静态网站系统html引导页源码
  • 三合一网站建设公司网站目录做301
  • asp美食网站源码oa软件有哪些公司
  • 新乡市建设工程网站wordpress语言选项
  • 网站设计需要什么专业网站开发是前端开发吗
  • 站群系统哪个好用wordpress 调用相册
  • 广元网站建设工作室重庆建设工程施工安全管理信息网
  • 快速网站开发课程上海个人网站制作公司
  • 安徽免费网站制作wordpress博客站点统计代码
  • 企业营销型网站公司seo关键词优化举例
  • 宁波网站制作怎样哪些平台可以做推广
  • 秀山微信网站建设镇江公交优化
  • 方案图网站青海省教育厅门户网站学籍查询
  • 汕头做网站优化的公司国内最好用免费建站系统
  • 学做网站要学什么东西深圳做网站优化费用
  • 做网站都需要什么技术wordpress加速cdn
  • 葫芦岛市建设局网站做网站报价明细表