node.js项目实战

node.js项目实战

wish-admin项目
第一次写博客 不多说了 直接开干

首先创建管理员名单数据库表admin
在这里插入图片描述
在这里插入图片描述

命令行生成项目文件
express wish-admin-api

然后安装一下依赖包
npm install async -S mysql2 -S sequelize -S dateformat -S jsonwebtoken -S

修改一下端口号
在这里插入图片描述

明确我们要做的功能一下功能
1.登录
2.许愿列表
3.添加许愿
4.获取单条许愿信息
5.修改许愿信息
6.删除许愿信息
7.管理员列表
8.添加管理员
9.获取单条管理员信息
10.修改管理员信息
11.删除管理员信息
加起来一共11个路由
现来登录模块的路由

在这里插入图片描述

var express = require('express');//引入express对象
var router = express.Router();//引入路由对象


//引入自定义的controllers
var IndexController = require('../controllers/index')
router.post('/login',IndexController.login);//定义登录路由,post请求
module.exports = router;

然后在项目根目录下的routes目录下新建一个wish.js文件,用来存放许愿管理器模块路由
在这里插入图片描述

var express = require('express');
var router = express.Router(); //引入路由对象

//引入自定义的controller

const WishController = require ('../controllers/wish');
router.get('/',WishController.list); //定义许愿列表路由,get请求
router.get('/:id',WishController.info); //定义单条许愿路由,GET请求
router.post('/',WishController.add); //定义添加许愿路由, post请求
router.put('/',WishController.update); //定义修改许愿路由,put请求
router.delete('/',WishController.remove);//定义删除许愿路由,delete请求
module.exports = router;

下一步管理员模块路由在项目根目录的routes目录下新建一个admin.js文件

在这里插入图片描述

var express = require('express')
var router = express.Router();
//老样子引入controller
const AdminController = require ('../controllers/admin');
router.get('/',AdminController.list);
router.get('/:id',AdminController.info);
router.post('/',AdminController.add);
router.put('/',AdminController.update);
router.delete('/',AdminController.remove);

module.exports = router;

要想路由配置生效还需要在app.js,将定义的路由文件引进来进行path配置

在这里添加

var wishRouter = require('./routes/wish')
var adminRouter = require('./routes/admin')

在这里插入图片描述

在这里添加

app.use('/wish',wishRouter)
app.uee('/admin',adminRouter)

写完以后文件目录是这样的
在这里插入图片描述

开始干自定义的方法
common.js中的公共方法

//定义了三个公共方法克隆、校验、返回统一
const async = require('async');
const Constant = require('../constant/constant');
const exportObj = {
    clone,
    checkParams,
    autoFn
};

module.exports = exportobj;
//导出对象,方便其他方法调用
    // 克隆方法,克隆一个对象
    // @param obj
    // @returns {any}
function clone(obj){
    return JSON.parse(JSON.stringify(obj));
}

// 校验参数全局方法
// @param params 请求的参数集
// @param checkArr 需要验证的参数
// @param cb

function checkParams (params,checkArr,cb){
    let flag = true;
    checkArr.forEach(v =>{
        if(!params[v]){
            flag = false;
        }
    });
    if(flag){
        cb(null);
    }else{
        cb(Constant.LACK)
    }
}

// 返回同一方法 返回json格式数据
// @param tasks 当前controllers执行tasks
//@param res 当前controller responese
// @param resObj 当前controller返回json对象

function autoFn(tasks,res,resObj){
    async.auto(tasks,function(err){
        if(!!err){
            console.log(JSON.stringify(err));
            res.json({
                code:err.code || Constant.DEFAULT_ERROR.code,
                msg:err.msg || JSON.stringify(err)
            });
        }else{
            res.json(resObj);
        }
    });
}

除了登录页面外,访问其他页面均需要登陆状态,所以需要色剂一个令牌Token机制,在用户登录成功以后返回Token,前端将其保存,在请求后序接口时带上Token验证是否登录单独定义在Token.js文件中

const jwt = require('jsonwebtoken')
const tokenKey = 'XfzEpWEn?ARD7rHBN';//设置一个秘钥,用来加密和解密Token

const Token = {
    // Token加密方式
    // @param data 需要加密在Token中的数据
    // @param time Token 的过期时间,单位为s
    // @returns {*} 返回一个Token
    encrypt:function(data,time){
        return jwt.sign(data,tokenKey,{expiresIn: time})
    },
    // Token解密方法
    // @param token 加密之后的Token
    // @returns 返回对象
    // {
  {token: boolean (true表示Token合法,false则表示不合法),
    // data: *(解密出来的数据或错误信息)}}
    decrypt:function(token){
        try{
       
最低0.47元/天 解锁文章
NodeJS入门项目案例(Express+Mysql)
11-11
初识NodeJS服务端开发(Express+Mysql)
微信小程序云开发(SpringBoot+node.js项目实战
02-07
微信小程序云开发(SpringBoot+node.js项目实战
构建NodeJS库--前端项目的打包发布
最新发布
带着Bug看世界
04-23 1138
如何初始化配置,以及学习npm配置项;模块类型type配置、main入口文件的配置;webpack是一个用于现代 JavaScript 应用程序的 静态模块打包工具;JavaScript通常需要做语法转化和polyfills以便可以使用高级语法而不必担心浏览器兼容性问题,Babel的作用便在于此,而正好可以与webpack结合使用;eslint一个好的项目离不开代码格式规范;jest用于测试用例。
Node.js与前端开发实战
会思想的苇草i的博客
01-25 4170
在本文中,我们将探讨如何将Node.js与前端开发实战相结合。我们将介绍如何利用Node.js构建强大的后端服务,并探讨如何与前端应用程序进行集成。我们将讨论使用Node.js提供API服务、处理数据和与数据库交互的实际场景。此外,我们还会深入研究前端开发中常用的构建工具、自动化流程和部署技巧,以及如何通过Node.js优化前端开发工作流程。
2024顺丰前端暑期实习面经(已过)(1),2024年最新前端开发工程师面试自我介绍
始飞龙
04-14 364
面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。前端面试题汇总JavaScript性能linux前端资料汇总。
NodeJS开源项目---很强大
zzzkk2009的专栏
12-17 1万+
1.NodeOS NodeOS是采用NodeJS开发的一款友好的操作系统,该操作系统是完全建立在Linux内核之上的,并且采用shell和NPM进行包管理,采用NodeJS不仅可以很好地进行包管理,还可以很好的管理脚本、接口等。目前,Docker和Vagrant都是采用NodeOS的首个版本进行构建的。   2.Noduino 许多硬件黑客希望通过Web页面即可控制他们
NODE.JS项目实战
07-26 3310
一、项目框架的搭建 1.建立项目文件夹 (1)手动在本地建立 (2)在远程仓库创建项目(私有),创建后,将项目文件夹克隆至本地 2.用VSCODE打开项目文件夹 3. 在VSCODE终端执行以下命令 npm init -y npm install koa (基于koa的项目) 4.需求分析 (1) 项目功能描述:文章内容...
实战——NodeJs项目
进击的程序猿
06-20 2万+
NodeJs项目 功能描述 用户登录(基于cookie、session和redis实现登录) 博客的创建、编辑、删除、查询(基于mysql实现数据的增删改查) 通过Nginx的反向代理来解决跨域问题 总体使用的是MVC的设计模式来进行的 项目依赖 nodejs:使用原生nodejs提供的各种模块 mysql:使用mysql包来实现nodejs读取mysql数据库中的数据 redis:使用red...
Node.js】项目开发实战(中)
weixin_44899940的博客
03-23 623
node.js注册接口和登录接口的演示,包括密码的加密解密,token的生成和解析,以及表单的验证
nodejs项目实战
weixin_30677617的博客
10-12 285
1.初始化项目npm init 2.npm install --save express 安装web应用框架 3.yarn add cookies 4.yarn add body-parser 5.yarn add markdown 6.yarn add mongoose 7.yarn add swig 转载于:https://www.cnblogs.com/boonook...
NodeJs-- 新建项目实例
热门推荐
dreamzml的专栏
05-08 4万+
安装Nodejs: 下载地址:http://nodejs.org/download/设置环境变量,例如我将nodejs装在D:/program文件夹下,则设以下为系统环境变量D:\Program\nodejs 安装Express开发框架://命令行输入命令 npm install -g express  新建项目//命令行输入命令 express -t ejs
nodejs 实战
10-26
nodejs 实战nodejs 实战nodejs 实战nodejs 实战nodejs 实战
node.js项目实战教程
01-27
node.js项目实战教程
nodejs:NodeJS示例项目
05-10
节点js NodeJS示例项目
NodeJS入门项目案例(Express+Mysql)服务端开发.zip
05-20
NodeJS入门项目案例(Express+Mysql)服务端开发。 初识NodeJS服务端开发(Express+Mysql) NodeJS Mysql Express
Nodejs实战源码
11-28
Nodejs实战源码,Nodejs实战源码,Nodejs实战源码,Nodejs实战源码
vue.js项目实战,vue.js项目实战pdf下载,JavaScript
09-10
vue实战开发.快速上手.好不容易找到电子版.非PDF版
Node.JS项目实战网盘系统
06-10
Node.JS是一套使用JavaScript语言的后台。它执行Javascript的速度非常快,性能非常好。是近几年来火的公司首选后台语言之一,同时也是前后台人员争先恐后学习的后台语言。网盘,又称网络U盘、网络硬盘,是互联网在线...
Node.js项目实战完整版教学课件汇总
03-22
Node.js项目实战完整版教学课件汇总
node.js mongodb项目实战
05-19
好的,下面我简单介绍一下如何使用 Node.js 和 MongoDB 开发一个简单的项目。 首先,你需要安装 Node.js 和 MongoDB。Node.js 官网提供了安装包和详细的安装说明,MongoDB 的官网也提供了相应的安装包和文档。 接...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • node.js项目实战 1708
  • css处理短文本与长文本 338
  • JavaScript async/await理解 219

分类专栏

  • JavaScript 1篇
  • css3
  • node新手上路 1篇

最新评论

  • node.js项目实战

    fc&&fl: 大佬,因为token的原因,报错{"code":401,"msg":"Token验证失败"},该怎么办啊,救命!

  • node.js项目实战

    ꦿ᭄不羡仙ོ: 怎么运行

  • node.js项目实战

    从零开始的数据猿: 很不错分享~进步的路上一起努力!也期待您的关注和点赞。

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • JavaScript async/await理解
  • css处理短文本与长文本
2021年3篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司郑州网页设计深圳高端网站设计公司思茅关键词排名包年推广价格阜新百度网站优化推荐荆门网站seo优化价格池州网站搜索优化公司黔东南至尊标王山南关键词排名报价吴忠百度网站优化多少钱南昌百度seo哪家好盘锦关键词排名多少钱宜宾关键词按天收费报价诸城百度爱采购石家庄企业网站制作价格永湖网站优化排名哪家好永新英文网站建设德宏阿里店铺运营公司南联网站推广多少钱亳州seo报价大理营销型网站建设价格驻马店网站推广系统多少钱盐城外贸网站设计大芬网站推广方案推荐毕节网站建设设计哪家好柳州SEO按天扣费庆阳模板制作报价赤峰seo排名推荐黄山百度竞价包年推广公司塔城关键词按天计费多少钱株洲SEO按天计费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化