本来打算增删改查是web开发中最常见的操作,所以下面的文章将演示如何使用node+mysql搭建一个简单的网站.所需知识本教程不涉及express等web框架,但请确保你对node+mysql等有基本的了解。需求分析本网站有两个页面,首页和子页面。首页:如下图,首页上方是一个查看档案的按钮,点击进入子页面。上半部分是一张表,有日期、耗时、描述三个字段。每列有两个操作,可以归档和删除。存档的记录将从首页消失,并显示在子页面中。单击删除将完全删除该列。下方是用户输入并提交的表单,提交的记录出现在表单的上方。子页面:如下图所示,子页面的上半部分是一个表,里面有日期、时间、描述三个字段。每列只有一个操作。单击删除将完全删除该列。下方有一个返回按钮,点击返回首页。项目目录在根目录下创建app.js,app.js负责创建http服务器、页面路由控制、登录数据库等功能。在根目录下新建一个lib文件夹,在lib下新建timetrack.js,负责解析post请求。与数据库交互(增删改查),返回服务端渲染的html给客户端等功能安装node的mysql数据库,命令如下:npminstallmysql--save最后目录如下:工具准备mysql数据库:5.7.22节点版本:10.4.1工作台:6.3社区数据库部分首先,打开工作台,登录,新建数据库worklist和新建sql选项卡,输入以下命令即可创建一个表,用于存储本项目涉及的数据。--sql脚本CREATETABLEIFNOTEXISTS工作(idINT(10)NOTNULLAUTO_INCREMENT,hoursDECIMAL(5,2)DEFAULT0,dateDATE,archivedINT(1)DEFAULT0,descriptionLONGTEXT,PRIMARYKEY(id));这样,数据库部分就准备好了。编码首先,在app.js中输入如下代码:lethttp=require('http')letwork=require('./lib/timetrack')letmysql=require('mysql')vardb=mysql.createConnection({host:'127.0.0.1',user:'@yourusername',//你的数据库用户名password:'@yourpassword',//你的数据库密码database:'worklist'})varserver=http.createServer((req,res)=>{switch(req.method){case'POST':switch(req.url){case'/':work.add(db,req,res)breakcase'/archive':work.archive(db,req,res)breakcase'/delete':work.delete(db,req,res)break}breakcase'GET':switch(req.url){case'/':工作。show(db,res)breakcase'/archived':work.showArchived(db,res)break}break}})console.log('服务器启动...')server.listen(3000,'127.0.0.1')接下来在lib目录下的timetrack.js中输入如下代码:varqs=require('querystring')//1showexports.show=function(db,res,showArchived){让archiveValue=(showArchived)?1:0分贝。query('SELECT*FROMworkWHEREarchived=?ORDERBYdateDESC',[archiveValue],function(err,rows){if(err){throwerr}if(showArchived){//子页面html=(showArchived)?'':' 日期(YYYY-MM-DD): 耗时: 描述:
'html+=exports.workHitlistHtml(rows)html+='
'html+=exports.workHitlistHtml(rows)html+=exports.workFormHtml()}exports.sendHtml(res,html)})}//显示上半部分--listexports.workHitlistHtml=function(rows){varhtml=''for(variinrows){html+='
'返回html}//Showbottomhalf--submitexports.workFormHtml=function(){varhtml=''html+=' '}html+=''+rows[i].date+' 'html+=''+rows[i].hours+' 'html+=''+行[i].description+' 'if(!rows[i].archived){html+=''+exports.workArchiveForm(rows[i].id)+' '}html+=''+exports.workDeleteForm(rows[i].id)+' 'html+='
'+'
