博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node项目之评分系统(三)- Web开发
阅读量:6256 次
发布时间:2019-06-22

本文共 2615 字,大约阅读时间需要 8 分钟。

在数据库设计完成之后,就可以开始项目开发了,实实在在的编写代码了。

生成项目目录

这里使用的是express Web框架,于是大大简化了HTTP方法以及路由访问的实现过程。安装完express模块后,建议同时装上express-generator项目生成器,快捷生成express项目初始目录及必要文件。

npm install --save expressnpm install express-generator -g

注意:express-generator模块需要全局安装。

安装完express-generator生成器后,在项目目录下,运行express -e命令,即可生成express项目目录。

例如:express -e ./test01 命令就是在当前目录下创建一个以ejs模版引擎的名叫test01的项目目录。

创建完之后,进入项目目录并安装依赖包,执行如下命令:

cd ./test01 && npm install

安装完之后,执行命令npm start,一个Node Web项目就启动了,打开浏览器输入http://localhost:3000就可以看到express为你准备的首页了。

数据库方法

由于这里使用的是MySQL数据库,Node项目中需要安装MySQL模块以便使用MySQL数据库。使用npm包管理器很容易就能安装完成。

npm install mysql --save

开始一个项目,最好是先把数据库相关功能完成,由于项目简单,仅仅是表message以及vote两个表的操作,于是数据库的连接我全部写在了一个文件上了 - db.js(新建db文件夹,在其中新建db.js),查看MySQL模块的README文档,大概知道了该模块的使用方法。

PS. 在安装了新的模块而不会用的情况下,最好是把模块里的README文档浏览一遍,虽然大部分是英文的,但是好过各种百度。

-- 过来人忠告

看完文档,使用了最简单的连接方式,在db.js中开始编写代码:

var mysql = require('mysql');var options = {  host: 'localhost',  user: 'lupeng',  password: '080910',  database: 'vote'}// 获取数据库对象function getConn (){  var client = mysql.createConnection(options);  return client;}// 得到管理员帐户exports.getAdmin = function(callback){  var client = getConn();  var statement = 'select username,password from user where Id = 1';  client.query(statement, function(errs,rows,fields){    callback(errs,rows);  });  client.end();}

这里只是贴上了获取管理员账户的方法示例,其他获取数据库的方法可以都写在这个db.js的文件里,这里就不多赘述,后面会附上项目代码自行查看。

路由方法

express提供了非常简单的路由编写方式,这里分别使用了HTTP协议GET//show/login/admin/add以及/edit来分别获得首页、查看页、登陆页、后台首页、添加页以及编辑页。然后使用POST/来实现投票;使用/del来实现删除;使用/edit来提交更新;使用/add来实现添加主题等。

这里的代码我自认为写的非常的乱,需要好好设计以及重新编写,这里就不贴出来。

在路由方法里有个简易的过滤器需要实现,也就是在用户登陆后台的时候,需要session的一个保存以及获取,来证明你是管理员。这里我同样采取了一个简单的express中间件来实现了,也就是在访问/admin的时候,需要验证seesion,见下面简要代码:

/* 登陆权限 */router.use(function (req, res, next) {  db.getAdmin(function (errs, rows) {    if (errs) {      res.render('error', {        message: errs,        error: {}      });    } else {      var username = rows[0].username;      var password = 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中简单配置即可。以下是这里的简要配置:

// session configapp.set('trust proxy', 1);app.use(session({  secret: 'keyboard cat',  resave: false,  saveUninitialized: true,  cookie: {    maxAge: 1000*60*60*1  }}));

由于没有做登出功能,session设置了失效时间为1个小时。

大概的项目实现过程就写到这里,详细可以看下该项目源代码 - or 。

由于初次尝试使用Node写一个Web项目,写的不好的地方请见谅,后续有可能对该项目进行进一步完善。

转载地址:http://bqxsa.baihongyu.com/

你可能感兴趣的文章
如何从零安装Mysql
查看>>
Appium简介及工作原理
查看>>
更换笔记本内存:自己动手修电脑(一)
查看>>
区分扫描枪输入和键盘输入的实现
查看>>
【mongdb主从复制和同步】
查看>>
下载文件downloadFile
查看>>
cf-Round542-Div2-B(贪心)
查看>>
日志挖掘(logminer)
查看>>
LaTeX技巧005:定制自己炫酷的章节样式实例
查看>>
1_NAT模式和桥接模式下的网络配置
查看>>
EF架构~为EF DbContext生成的实体添加注释(T5模板应用)
查看>>
【转】VLAN原理详解
查看>>
python --- json模块和pickle模块详解
查看>>
idea中artifacts、facets、modules是什么意思?
查看>>
FUCKED-BUG之临时对象的生死
查看>>
SP2 PRIME1 - Prime Generator
查看>>
创建和编辑 crontab 文件
查看>>
钉钉发消息
查看>>
20172309_《程序设计与数据结构(下)》_课堂测试修改报告。
查看>>
(二十九)方法调用之解析
查看>>