隨着網絡時代的快速發展,前端開發不僅僅是做出漂亮的頁面就可以了,還要會一點后端語言,那么后端語言有Java,php,node.js最常見,那我們應該學哪一種呢,為了讓我們自己更好的學習,我推薦選擇node.js。
下面是我開發時做個小測試;
測試項目目錄

app.js
//1, npm i express -S //2, npm i body-parser -S var express=require('express'); // var router = express.Router(); var app =express(); var bodyParser=require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); // const querystring = require("querystring"); //設置跨域訪問 app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By",' 3.2.1'); res.header("Content-Type", "application/json;charset=utf-8"); next(); }); //創建數據庫連接對象 const mysql = require('mysql'); const conn = mysql.createConnection({ host: '127.0.0.1',//數據庫地址 user: 'root',//賬號 password: 'root',//密碼 database: 'nodeproject',//庫名 multipleStatements: true, //允許執行多條語句 timezone:"08:00"//數據庫處理時間 }) //開始鏈接數據庫 conn.connect(function(err){ if(err){ console.log(`mysql連接失敗: ${err},正在重新連接!`); // setTimeout(function(){autoConnect(connect);},2000); //2s重新連接 }else{ console.log("mysql連接成功!"); } }); //全部列表查詢 app.get('/api/getlist',function(req,res){ let sqlQuery="select * from user_info"; conn.query(sqlQuery, (err, results) => { if (err) return res.json({ err_code: 1, message: '暫無數據', affextedRows: 0 }) res.json({ err_code: 200, message: results, affextedRows: results.affextedRows }) }) }); //按條件查詢 app.get('/api/getlistdetl', (req, res) => { const name = req.query.name const sqlStr = 'select * from user_info where name=?' conn.query(sqlStr, name, (err, results) => { if (err) return res.json({ err_code: 1, message: '查無此人', affextedRows: 0 }) res.json({ err_code: 200, message: results, affextedRows: results.affextedRows }) }) }) //添加用戶數據 app.post('/api/userInfo', (req, res) => { const username = req.body.name const age = req.body.age const sex = req.body.sex const addr = req.body.addr const tel = req.body.tel // const all=querystring.stringify({name:username,age:age,sex:sex}) // console.log(username) // const sqlStr = 'INSERT INTO user_info SET ?' const sqlStr = 'insert into user_info set ?' conn.query(sqlStr, {name:username,age:age,sex:sex,addr:addr,tel:tel}, (err, results) => { if (err) return res.json({ err_code: 1, message: err, affectedRows: 0 }) res.json({ err_code: 0, message: '添加成功', affectedRows: results.affectedRows }) }) }) //用戶注冊 app.post('/api/user/register',(req,res)=>{ const username=req.body.username const password=req.body.password const repassword = req.body.repassword const registerDate=new Date() // const sqlStr='INSERT INTO register SET ?' const sqlStr='insert into register set ?' // const sqlStr1='SELECT * FROM register WHERE username = ?' const sqlStr1='select * from register where username = ?' conn.query(sqlStr1,username,(err,results)=>{ if(err) return res.json({err_code:1,message:err,affectedRows:0}) // 數據不存在 就注冊成功 if (results.length == 0 ) { //判斷兩次密碼是否一致 if(password !=repassword){ return res.json({err_code:201,message:'兩次輸入的密碼不一致',affectedRows:0}) } // 把新用戶插入數據庫 conn.query(sqlStr,{username:username,password:password,repassword:repassword,registerDate:registerDate}, (err, results)=> { // console.log(sqlStr) if(err){ throw err }else{ // res.end(JSON.stringify({status:'100',msg:'注冊成功!'})); res.json({err_code:0,message:'注冊成功',affectedRows:results.affectedRows}) } }) } else{ // 數據存在就注冊失敗 // res.end(JSON.stringify({status:'101',msg:'該用戶名已經被注冊'})); res.json({err_code:101,message:'該用戶名已經被注冊',affectedRows:0}) } }) }) //用戶登錄 app.post('/api/user/login',(req,res)=>{ const username=req.body.username const password=req.body.password const sqlStr='select * from register where username=? and password=?' conn.query(sqlStr,[username,password],(err,results)=>{ // console.log(results) if(err) return res.json({err_code:1,message:err,affectedRows:0}) // if(null != results) return res.json({err_code:401,message:'用戶不存在',affectedRows:0}) if(results.length == 0){ res.json({err_code:301,message:'用戶名或密碼錯誤',affectedRows:0}) }else{ res.json({err_code:0,message:'登錄成功,正在跳轉...',affectedRows:results.affectedRows,user_info:results}) } }) }) //獲取商品列表 app.get('/api/goods/goodsList',(req,res)=>{ const sqlStr='select * from goods_info' conn.query(sqlStr,(err,results)=>{ if(err) return res.json({err_code:1,message:err,affectedRows:0}) res.json({err_code:0,message:'ok',goodsList:results}) }) }) //獲取訂單信息 app.get('/api/order/order_info',(req,res)=>{ const sqlStr='select * from order_info' conn.query(sqlStr,(err,results)=>{ if(err) return res.json({err_code:1,message:err,affectedRows:0}) res.json({err_code:0,message:'ok',order_info:results,affectedRows:results.affectedRows}) }) }) //新訂單插入數據 app.post('/api/order/into_order',(req,res)=>{ // const ordernum=req.body.ordernum const ordernum=new Date().getTime()+req.body.customerid const goodsname=req.body.goodsname const orderdate=new Date() const customerid=req.body.customerid const flownumber=new Date().getTime() const sqlStr='insert into order_info set ?' conn.query(sqlStr,{ordernum:ordernum,goodsname:goodsname,orderdate:orderdate,customerid:customerid,flownumber:flownumber},(err,results)=>{ if(err) return res.json({err_code:1,message:err,affectedRows:0}) res.json({err_code:0,message:'下單成功',affectedRows:results.affectedRows}) }) }) //成功接單 // app.post('/api/order/success',(req,res)=>{ // const status=req.body.status // const sqlStr='update order_info set status=1 where status=0' // conn.query(sqlStr,{status:status},(err,results)=>{ // if(err) return res.json({err_code:1,message,err,affectedRows:0}) // res.json({err_code:0,message:'接單成功',affectedRows:results.affectedRows}) // }) // }) /* 時間格式化 */ Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小時 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } //配置服務端口 var server = app.listen(3002, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://localhost', host, port); })
項目源碼:https://github.com/DreamS001/nodeProject.git
