vue : 数据交互 get+post+jsonp (es6 / body-parser / bootstrap)

vue-resource

  • 特点:
    • 体积小
      • 压缩后大约12KB
    • 支持主流浏览器
      +不支持IE9以下的浏览器
    • 支持promise
      • promise 为es6的异步计算
    • 支持拦截器
      • 拦截器可以在请求发送前和发送后做一些操作

服务器 express + ejs + body-parser

想要请求数据,必然少不了服务器

准备工作
  1. 准备需要的文件 bootstrap.css + vue.js + vue-resource.js
  2. 初始化文件,生成packge.json文件,记录线上和线下所需的插件等
  npm init --y
  1. 下载服需要的插件 : npm/ cnpm 等
  • node :自带的包管理器
  • install :下载
  • --save :在package.json中存储为线上需要的插件
  • --save-dev : 在package.json中存储为线下需要的插件
  • express :基于node.js 平台,快速、开放、极简的文本开发框架
  • ejs :通过数据和模板,可以生成HTML标记文本,可以同时运行在客户端和服务器端,0 学习成本
  • body-parser :配合post 通过req.body获取前端的请求数据
  • node .\app.js : 开启服务器,链接端口为listen设置的值
    • 注意 :只要更改app.js ,都需要重新开启服务器
 npm install --save-dev express ejs body-parser
  1. 创建一个服务器文件 app.js 和 index.html文件
// 创建 app.js 
touch app.js 
// 创建 index.html
touch index.html

最终的文件目录为


最终文件目录.png
  1. html 页面准备
//  html 页面就不赘述了......
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="bootstrap.css">
</head>
<body>
    <div id="app">
        1111
    </div>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
    <script>
        
    </script>
</body>
</html>
  1. app.js 准备
// 引入express
const express = require('express');
// 引入 body-parser 插件,
const bodyParser = require('body-parser');
// 调用express
const app = express();
// 设置HTML模本
app.engine('html',require('ejs').renderFile);
// 中间件 : 设置静态资源文件夹
app.use(express.static('./'));
// 中间件 : 设置bodyParser
app.use(bodyParser.json());
// 链接服务器端口
app.listen(3000);


// 路由  req:存储的为用户发送的请求数据,res:存储的为服务器响应给用户的数据
app.get('/',(req,res)=>{
    /*
    * end : 只能发送字符串
    * send : 发送字符串 和 对象
    * render : 渲染页面
    */
    res.render('index');
});

  1. node .\app.js 开启服务器,并在浏览器访问localhost:3000 ,页面正常显示出 1111,证明成功
准备工作到此结束,下面开始正式代码,直接上代码了
html 页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="bootstrap.css">
</head>
<body>
    <div id="app">
        <div class="container" :style="{padding: '20px'}">
            <div class="getdata">
                <button type="button" class="btn btn-info btn-lg" @click="get">getData</button>
                <h4>{{gs}}</h4>
            </div>
            <div class="posdata">
                <button type="button" class="btn btn-info btn-lg" @click="post">postData</button>
                <h4>{{ps}}</h4>
            </div>
            <div class="jsonptdata">
                <button type="button" class="btn btn-info btn-lg" @click="jsonp">jsonptData</button>
                <h4>{{ss}}</h4>
            </div>
        </div>
    </div>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
                gs: '',
                ps: '',
                ss: ''
            },
            methods: {
                get(){
                    this.$http.get('/get',{
                        params: {name:"dandan",sex:"gril"}
                    }).then(res=>{
                        this.gs = res.body;
                    })
                },
                post(){
                    this.$http.post('/post',{name:"dandan",sex:"gril"})
                        .then(res=>{
                            this.ps = res.body;
                        })
                },
                jsonp(){
                    this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
                        params:{
                            wd:'dandan'
                        },
                        jsonp: 'cb'
                    }).then(res=>{
                        this.ss = res.body.s;
                    })
                }
            }
        })
    </script>
</body>
</html>
app.js 页面
// 引入express
const express = require('express');
// 引入 body-parser 插件,
const bodyParser = require('body-parser');
// 调用express
const app = express();
// 设置HTML模本
app.engine('html',require('ejs').renderFile);
// 中间件 : 设置静态资源文件夹
app.use(express.static('./'));
// 中间件 : 设置bodyParser
app.use(bodyParser.json());
// 链接服务器端口
app.listen(3001);


// 路由  req:存储的为用户发送的请求数据,res:存储的为服务器响应给用户的数据
app.get('/',(req,res)=>{
    /*
    * end : 只能发送字符串
    * send : 发送字符串 和 对象
    * render : 渲染页面
    */
    res.render('index');
});

// get : req.query 获取前端传入的请求数据
app.get('/get',(req,res)=>{
    // console.log(req.query);
    res.send('这是get请求的数据')
});

/*
* post 
* 想要通过req.body获取数据需要配合 body-parser 插件
*/
app.post('/post',(req,res)=>{
    // console.log(req.body);
    res.send('这是post请求的数据');
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270