#NodeJs从0到搭建一个网站
这篇记载了我用Nodejs的过程, 从安装到完成一个投 票网站的过程。目前使用的框架是(express + mysql) ##Nodejs环境准备
1、 windows版本的下载直接安装。我安装的版本是V5.9.0 属于测试版本。
执行 node -v //查看版本信息
v5.9.0
2、 在内网安装各模块需要使用到的包。PS:因为目前在公司使用内网无法进行 npm安装 只能够在互联网将包安装好了再传到内网来。Nodejs找包的顺序是:先到本地目录下寻找node_module 找不到再到系统环境变量的目录下寻找。安装包过程如下: - 在互联网机器上某个目录下执行 npm install xxx
//安装模块到当前文件下下面 如果要全局可用则执行npm install -g xxx
- 该模块以及相关的依赖包会安装到当前目录的node_module模块下面, 将此包复制到内网。 - 在需要使用的项目里添加该模块即可 PS:如果需要使用全局的变量则应该修改环境变量 npm config get prefix
可以通过npm config set prefix 'D:\node_prefix'
设置全局变量。这里要注意, 修改完成后一定要注意修改环境变量path, 将之前对应的环境变量路径修改成现有的环境变量路径 ##Express Helloworld var express = require('express'); var app = express(); app.listen(3000); 就简单几行就起来了, 绑定3000端口。 ##Express vote 首先确定业务场景1、一个首页展示所有的衣服以供选择。2、用户点击衣服可以投票
-
确定用户url 1、“/” 对应首页。2、“/vote/*.json”用户投票的url
-
明确使用的模板引擎。如下图:
//设置ejs模板引擎 以及后缀名 目录等 app.set('views', path.join(__dirname, 'views')); app.engine('.html', require('ejs').__express); app.set('view engine', 'html');
-
设置静态目录以及post的 bod解析器, 因为自从express 4后面body-parser从 express独立出来。
-
设置路由, 将当前路由设置好
app.get('/', routes); app.post('/vote/*.json', voteroutes);
##Express Vote_Router 在express中最重要的就是设置路由, 路由决定了业务的拓展。下面先看app.get('/', routes);
/* GET home page. */
router.get('/', function(req, rsp, next) {
//var ip = getClientIp(req).split(":");
//获取当前用户IP
var ip = util.getIp(req);
//获取当前用户是否投过票, 如果已经投过票, 那么就不让他继续投票
dao.query("select voterip, res from tshirtvote where 1 = 1 and voterip = '" + ip +"'", function cb(err, res, fields){
if (err) {
//res.render('index', { title: 'Express' });
rsp.send("系统错误");
return ;
}
console.log(res);
console.log( res.length);
if (res && res.length > 0) {
rsp.render('index', { isvoted: true, title:"有结果蚂蚁文化衫投票"});
}else{
rsp.render('index', { isvoted: false ,title:"无结果蚂蚁文化衫投票"});
}
});
});
//这里看一下具体的业务处理方法
/* GET home page. */
voterouter.post('/vote/vote.json', function(req, rsp, next) {
var ip = util.getIp(req);
//获取参数 这里注意 获取post参数 这个必须安装 body-parser 并且必须显示的调用 app.use(bodyparser.urlencoded({extended: true}));
var param = req.body;
//插入数据
dao.query("insert into tshirtvote (username, usercode, contact, buyno, voterip, res, createtime,size) values ('"+ param["username"] +"', '"+ param["usercode"] +"', '"+ param["contact"] +"' , '"+ param["buyno"] +"'," +
"'"+ ip +"', '"+ param["no"] +"',0, '"+ param["size"] +"')", function cb(err, res, fields){
if (err) {
rsp.send("系统错误");
return ;
}
rsp.send({"status":"OK"});
});
});