前后端分离方式渲染数据(2018/11/12)

一、前后端分离----渲染数据  总的来说就是在index.js中向某个端口甩出data.json中的数据 然后在.html文件中从这个端口中获取这个数据然后将其遍历到网页中
①先生成express项目
②在bin/www 中查看端口号
③app.js 中的app.use(express.static(path.join(__dirname,'public'))) ; 可以将public文件夹与app.js连接在一起
④模拟一个data.json 数据
⑤在public文件夹中写一个list.html 向后端服务器发送请求  (记得引入jquery.js的文件到javascript文件夹中 如果没有可以根据 cnpm i jquery --save 进行下载 然后在node_modules文件夹中找到并引入) 
⑥检查是否成功引入jquery-->npm start-->  console.log($)
⑦写index.js 用于向某个端口传递json文件中的数据 
⑦向html中写内容  
data.json  //写数据
{
list:[
            {"id":1,"name":"zzz","age":12}
    ],
“count”:1
}
index.js     //甩数据
var express = require('express');
var router = express.Router();
const data = require("../data")//引用data.json中的数据
const fs = require("fs")
 
router.get('/data',(req, res)=>{
  res.json(data)//甩数据到/data端口
});
module.exports = router;
 
list.html    //拿数据 并应用
<script src="/javascripts/jquery.js"></script> //记得要引入jquery
<script src="/javascripts/baiduTemplate.js"></script>//这是百度模板
       </head>
       <body>
              <div id="box">
                     
              </div>
              <script type="text/html" id="tem">
                     <ul>
                           <% for(var i = 0 ; i < list.length ; i++){%>
                           <li><%=list[i].name%></li>
                           <% } %>
                     </ul>
              </script>
              <script type="text/javascript">
                     $.get("http://localhost:3000/data").then((res)=>{//这里的get是从/data端口中拿数据到html页面去用
                           console.log(res.list)//输出从data端口中拿到的所有数据
                           var content =  baidu.template("tem",res);//这个res就是从data.json中拿到的所有数据
                           console.log(content)
                           $("#box").html(content);//向box中添加内容
                     })
              </script>
       </body>
 
 
二、前后端分离-----添加数据
index.js
var express = require('express');
var router = express.Router();
const data = require("../data")
const fs = require("fs")
 
router.get('/data',(req, res)=>{
  res.json(data)
});
router.get("/add/:username",(req,res)=>{ //获取一段网址
       var name = req.params.username; //截取网址中的username部分 相当于$("#username").val()
       data.list.push({
              id:++data.count,
              name:name
       })
       fs.writeFileSync("./data.json",JSON.stringify(data)); //这里用./data是因为真正调用data.json的是app.js
       res.json({ //自定义的
              ret:true, //告诉前端ret是正常的返回  
              data:true //数据也是正常返回
              
       })
})
module.exports = router;
 
add.html
<script src="/javascripts/jquery.js"></script>
       <script src="/javascripts/baiduTemplate.js"></script>
       </head>
       <body>
              <div id="box">
                     <input type="text" name="username" id="username" value="" />
                     <button id="btn">添加</button>
              </div>
              <script type="text/javascript">
                     $("#btn").click(function(){
                            $.get("http://localhost:3000/add/"+$("#username").val()).then((res)=>{//这里的get是在以一串网址的形式向后端传递input框中输入的内容   后端拿到网址后会将其分解 取出自己需要的部分
                           if(res.ret){//ret是后端返回来的东西,如果成功返回了数据 那么跳转页面
                                  location.href="/list.html"
                           }
                     })
                   })
                     
              </script>
       </body>

转载于:https://www.cnblogs.com/zsrTaki/p/11510381.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值