赞
踩
参考连接
NodeJS+express如何新建一个自己需要的项目
$npm install express -g
$npm install express-generator -g
e:
md NodeJSProject //在这里md是创建新的文件并命名
cd NodeJSProject //进去刚刚创建的文件夹
md expressdemo //根据跟人习惯,此步骤可以不操作直接穿件app文件夹,“app”文件名也是自定义哦
cd expressdemo
express app //创建服务器,此处app为项目名称,可自定义
cd 项目目录
npm install
npm start
此时服务器运行在localhost:3000上,但是在bin/www
添加以下内容
//改写
var http = require('http');
var server = http.createServer(app);
server.listen(3000)
实际只要注释掉最后一行代码(module.exports = app),换上自己的监听代码就可以
// module.exports = app;
app.listen(3000,()=>{
console.log('服务器启动成功,监听在3000端口')
})
在项目根目录下运行 node app即可重新运行在3000端口下
1、参考其他mysql安装
2、创建数据库及数据库表
数据库:exapp
表:cate
表结构:
./util/deconfig.js
const mysql= require('mysql') module.exports={ //数据库配置 config:{ host:'localhost', port:'3306', user:'root', password:'1222', database:'exapp' }, //连接数据库,使用mysql连接池 //写一个连接池的对象 sqlConnect:function(sql,sqlArr,callback){ var pool=mysql.createPool(this.config) pool.getConnection((err,conn)=>{ console.log('hello mysql') if (err){ console.log('连接失败') return } //事件驱动回调 conn.query(sql,sqlArr,callback); //释放数据库连接 conn.release() }) } }
在项目目录里创建util目录及相应的数据库配置
编辑路由router/index.js
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // res.render('index', { title: 'Express' }); //测试一下 let sql="select * from cate" let sqlArr=[] let callBack=(err,data)=>{ if (err){ console.log('连接出错了') }else{ res.send({ 'list':data }) } } dbconfig.sqlConnect(sql,sqlArr,callBack) }); module.exports = router;
访问localhost:3000获得数据
新添./controller/cateController.js文件
//获取分类 var dbconfig = require('../util/dbconfig') getCate=(req,res)=>{ let sql="select * from cate" let sqlArr=[] let callBack=(err,data)=>{ if (err){ console.log('连接出错了') }else{ res.send({ 'list':data }) } } dbconfig.sqlConnect(sql,sqlArr,callBack) } module.exports={//将getCate方法暴露出去 getCate }
重新改造router/index.js文件
var express = require('express');
var router = express.Router();
var cate= require('../controller/cateController')
/* GET home page. */
router.get('/', cate.getCate);
module.exports = router;
访问localhost:3000得到同样的访问结果
数据库表:
controller/cateController.js
//获取指定分类的文章列表 getPostCate=(req,res)=>{ let {id}=req.query;//对象解析处id字段 var sql=`select * from post where cate_id=?` var sqlArr=[id] let callBack=(err,data)=>{ if (err){ console.log('连接出错了') }else{ res.send({ 'list':data }) } } dbconfig.sqlConnect(sql,sqlArr,callBack) }
router/index.js
var express = require('express');
var router = express.Router();
var cate= require('../controller/cateController')
/* GET home page. */
router.get('/', cate.getCate);
//获取post路由
router.get('/getPostCate', cate.getPostCate);
module.exports = router;
创建新的路由控制逻辑
controller/UserController.js
//导入数据库对象 var dbconfig = require('../util/dbconfig') //生成随机验证码 function rand(min,max){ return Math.floor(Math.random()*(max-min))+min } //模拟发送验证码 sendCode=(req,res)=>{ let phone=req.body.phone let code=rand(1000,9999) res.send({ 'code':200, 'msg':'发送成功' }) console.log(code) } module.exports={ sendCode }
创建路由
./router/users.js
var express = require('express');
var router = express.Router();
var User= require('../controller/UserController')
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/sendCode', User.sendCode);
module.exports = router;
userController.js
//导入数据库对象 var dbconfig = require('../util/dbconfig') //生成随机验证码 function rand(min,max){ return Math.floor(Math.random()*(max-min))+min } let validatePhoneCode=[] let sendCodeP=(phone)=>{ for (let item of validatePhoneCode){ if (phone==item.phone){ return true } } return false } //模拟发送验证码 sendCode=(req,res)=>{ let phone=req.query.phone if (sendCodeP(phone)){ res.send({ code:400, msg:'已经发送过验证码,稍后再发' }) } let code=rand(1000,9999) validatePhoneCode.push({ phone:phone, code:code }) console.log(validatePhoneCode) res.send({ 'code':200, 'msg':'发送成功' }) console.log(code) } module.exports={ sendCode }
router/user.js
var express = require('express');
var router = express.Router();
var User= require('../controller/UserController')
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/sendCode', User.sendCode);
module.exports = router;
在postman里测试连接
userController.js
//导入数据库对象 var dbconfig = require('../util/dbconfig') //生成随机验证码 function rand(min,max){ return Math.floor(Math.random()*(max-min))+min } let validatePhoneCode=[] let sendCodeP=(phone)=>{ for (let item of validatePhoneCode){ if (phone===item.phone){ return true } } console.log('before false') return false } //验证码匹配 let findCodeAndPhone=(phone,code)=>{ for (let item of validatePhoneCode){ if (phone==item.phone && code==item.code){ return 'login' } } return 'error' } //模拟发送验证码 sendCode=(req,res)=>{ let phone=req.query.phone if (sendCodeP(phone)){ res.send({ code:400, msg:'已经发送过验证码,稍后再发' }) } let code=rand(1000,9999) validatePhoneCode.push({ phone:phone, code:code }) console.log(validatePhoneCode) res.send({ 'code':200, 'msg':'发送成功' }) console.log(code) } //验证码登录 codePhoneLogin=(req,res)=>{ let {phone,code}=req.query //验证该手机号是否发送过验证码 if(sendCodeP(phone)){ //验证码和手机号时候匹配 let status=findCodeAndPhone(phone,code) if (status=='login'){ //登录成功 res.send({ code:200, msg:'登录成功' }) }else if (status=='error'){ //登录失败 res.send({ code:400, msg:'登录失败' }) } }else{ //登录失败 res.send({ code:400, msg:'未发送验证码' }) } } module.exports={ sendCode, codePhoneLogin }
./router/user.js
var express = require('express');
var router = express.Router();
var User= require('../controller/UserController')
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/sendCode', User.sendCode);
router.get('/codePhoneLogin', User.codePhoneLogin);
module.exports = router;
测试:注册测试的路径是不一样的
先测试这个端口
localhost:3000/users/sendCode?phone=12545482556
获得随机验证码4385
在测试端口
localhost:3000/users/codePhoneLogin?phone=12545482556&code=4385
获得登录信息
以后P8-P21不看了,老师讲得是在太无趣了
贴个地址
https://www.bilibili.com/video/BV1A7411N7KZ?p=8&spm_id_from=pageDriver
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。