先看下项目搭建出来的目录,如果你还不会搭建可以看我的上篇博客node项目搭建
bin\www为我的项目入口,启动执行的是
当然也可以是node app.js
public里面放引用文件,当然我这里还用了sass,这可能是个笨方法,node应该提供的有相应的方法,暂时先不研究了;views里面放的就是网页啦;routes放接口啦,蛮重要的,我这里connect配置的就是数据库的信息,index.js里面放的接口,因为现在接口还不多,所以就都在index.js里面写的,你可以新建多个js来写多个接口,在app.js里面调用就可以了,具体实现流程见下:
1、新建config文件夹用来放一些公共配置文件,新建connect.js配置数据库公共信息
var mysql=require("mysql");
exports.connect=function(sql,param,callback){
var db=mysql.createConnection({
host:'xxx',//数据库地址
port:'3306',/*数据库端口,一般就是这个*/
user:'root',/*数据库用户名,一般就是这个*/
password:'数据库密码.',
database:'数据库名字'
});
db.connect();
db.query(sql,param,callback);
db.end();
};
2、routes文件夹下的index.js,调用数据库连接,写接口
var express = require('express');
var router = express.Router();
var db=require("../config/connect.js");/*调用数据库,注意路径的写法,node里面的路径和平时的有点不一样,包括html里面的路径*/
/* GET home page. 即入口页面,这个不能去掉*/
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
/*下面为接口*/
router.get("/index/assemble",function(req,res){
/*sql,本来想写个简单的示例,想想放这里以后还可以翻阅下*/
db.connect("select goods_id,goods_img,goods_now_price,groupPrice from m_shop_goods where type = 2 and is_tuijian = 0 and endTime>DATE_FORMAT(NOW(),'%Y-%c-%e %k:%I:%s')",function(error,data){
//console.log(data); //这一句是打印在cmd中的
res.send(data);//这一句是返回给前端的
});
});
router.get("/index/video",function(req,res){
db.connect("select m.a_id,m.title,m.img,m.count,u.username,u.img as userimg from m_activity m left join m_user u on m.user_id=u.user_id where m.is_del = 1 and m.tag like '%精选%' order by m.sort desc",function(error,data){
res.send(data);
});
});
});
module.exports = router;
备注sql:endTime>DATE_FORMAT(NOW(),’%Y-%c-%e %k:%I:%s,
获取数据库当前日期之前的数据
select m.a_id,m.title,m.img,m.count,u.username,u.img as userimg from m_activity m left join m_user u on m.user_id=u.user_id where m.is_del = 1 and m.tag like '%精选%' order by m.sort desc
两张表联合查询并返回指定字段,即小于endTime字段的数据
好啦,这里就写出来了两个接口,/index/hot和/index/sale,接口我都说出来了后面是不是知道怎么调用了,来看一下吧
3、app.js入口文件写入此接口
var indexRouter = require('./routes/index');
app.use('/', indexRouter);/*因为默认调用index.js,所以“/”就可以了,如果要调用其他js比如user.js,“/user”就可以了*/
4、在views文件对应的页面调用,我这里是index.html,就简单的写个模板吧
$.ajax({
type:'get',
url:'http://localhost:3000/index/assemble',//这个地方最好写成index/assemble,这样放线上了也不用再改前缀了
success:function(data){
var hotHtml = '';
if(data && data.length>0){
console.log(data);
for(var i = 0;i<data.length;i++){
hotHtml += '<div class="swiper-slide">'
+'<img src="'+data[i].goods_img+'" class="img-width"/>'
+'</div>';
}
}
},
error:function(err){
alert("网络异常,请稍后再试!")
}
})
行啦,到此就结束,初次捣鼓还有很多可以完善的地方,结构还需优化