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閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374