node从接口到前端调用

先看下项目搭建出来的目录,如果你还不会搭建可以看我的上篇博客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和/inde/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("网络异常,请稍后再试!")
    }
})

行啦,到此就结束,个人感觉还有可以完善的地方,结构还需优化

猜你喜欢

转载自blog.csdn.net/qq_37291064/article/details/90240531
今日推荐