当前位置: 首页 > 后端技术 > Node.js

Node项目评分系统(三)——Web开发

时间:2023-04-03 20:57:33 Node.js

数据库设计完成后,就可以开始项目开发,真正开始写代码了。这里使用expressweb框架生成项目目录,大大简化了HTTP方法和路由访问的实现过程。安装express模块??后,建议同时安装express-generator项目生成器,快速生成express项目的初始目录和必要文件。npminstall--saveexpressnpminstallexpress-generator-g注意:express-generator模块需要全局安装。安装express-generator生成器后,在项目目录下运行express-e命令生成express项目目录。例如:express-e./test01命令是在当前目录下创建一个名为test01的项目目录,里面有ejs模板引擎。创建完成后,进入项目目录并安装依赖包,执行以下命令:cd./test01&&npminstall安装完成后,执行命令npmstart,启动一个NodeWeb项目,打开浏览器输入http://localhost:3000,你可以看到快递给你准备的主页。数据库方式由于这里使用的是MySQL数据库,所以需要在Node项目中安装MySQL模块才能使用MySQL数据库。使用npm包管理器很容易安装。npminstallmysql--save开始一个项目,最好先完成数据库相关的功能。由于项目比较简单,只是对message和vote这两个表的操作,所以我把所有的数据库连接都写在了一个文件-db.js中(新建一个db文件夹,在里面新建一个db.js),查看MySQL模块的README文档,你大概知道如何使用该模块。附言。在安装新模块而不使用它的情况下,最好浏览一下模块中的README文档。虽然大部分都是英文的,但总比各种百度好。--过来人的建议看完文档,使用最简单的连接方式,开始在db.js中写代码:varmysql=require('mysql');varoptions={host:'localhost',user:'lupeng',password:'080910',database:'vote'}//获取数据库对象functiongetConn(){varclient=mysql.createConnection(options);returnclient;}//获取管理员账号exports.getAdmin=function(callback){varclient=getConn();varstatement='selectusername,passwordfromuserwhereId=1';客户端查询(语句,函数(错误,行,字段){回调(错误,行);});client.end();}这里只是举例获取管理员账号的方法。其他获取数据库的方法都可以写在这个db.js文件中,这里不再赘述,后面会附上项目代码。查看。路由方法express提供了一种非常简单的路由写法。这里使用HTTP协议GET/、/show、/login、/admin、/add、/edit获取首页、查看页、登陆页、后台首页、添加页和编辑页。然后使用POST/实现投票;使用/del实现删除;使用/edit提交更新;使用/add实现添加主题等。我觉得这里的代码很乱,需要重新设计和重写,这里就不贴了。在路由方法中,有一个简单的过滤器需要实现,即当用户登录后台时,需要对session进行一次save和get,证明你是管理员。这里我也采用了一个简单的express中间件来实现,即在访问/admin的时候,需要验证seesion,看下面的简要代码:/*登录权限*/router.use(function(req,res,next){db.getAdmin(function(errs,rows){if(errs){res.render('error',{message:errs,error:{}});}else{varusername=rows[0].username;varpassword=rows[0].password;if(req.session&&req.session.username==username&&req.session.password==password){next();}else{res.render('login',{title:'后台登录',info:'请登录'});}}});});这个中间件放在访问/admin的路由上,所有对/admin的访问请求都需要经过这个中间件来验证session是否存在,大致实现了一个管理员验证的功能。当然,这里还需要用到express-session模块,安装即可,在app.js中简单配置即可。下面是这里的简单配置://sessionconfigapp.set('trustproxy',1);app.use(session({secret:'keyboardcat',resave:false,saveUninitialized:true,cookie:{maxAge:1000*60*60*1}}));由于没有注销功能,会话设置了1小时的过期时间。大致的项目实现流程写到这里。详情请参考项目源码-vote-node-Coding.net或vote-node-Github.com。由于是第一次尝试使用Node来写web项目,写得不好还请见谅,以后有可能进一步完善项目。