完整的無限懶加載demo(后臺到前臺)

原創(chuàng)聲明

本文系作者辛苦碼字所得,歡迎分享和轉載,但請在明顯位置注明作者的如下信息:
筆名:來碗雞蛋面
簡書主頁:http://www.reibang.com/u/4876275b5a73
郵箱:job_tom@foxmail.com
CSDN ID:tom_wong666

demo目標:

實現(xiàn)完整的懶加載demo,包括后臺服務器數(shù)據(jù)到前臺展示。

提示:

文末有彩彈蟋定,如果急于看結果的同學可以直接到移步到最后一段。

環(huán)境:

win10+XAMPP(開啟Apache和MySql)+VSCode

框架:

Vue

基本思路:

一草添,搭建數(shù)據(jù)庫---MySql驶兜;

二,查詢數(shù)據(jù)庫數(shù)據(jù)并返回到前端---php远寸;

三抄淑,前端請求獲取數(shù)據(jù)---js vue axios;

四驰后,前端展示數(shù)據(jù)肆资,并依據(jù)頁面滾動情況反復觸發(fā)請求獲取更多數(shù)據(jù)---html css js vue-infinite-scroll;

具體實現(xiàn):

一灶芝,搭建數(shù)據(jù)庫---MySql:


#重建數(shù)據(jù)庫newxiaoa

    SET NAMES UTF8;

    DROP DATABASE IF EXISTS newxiaoa;

    CREATE DATABASE newxiaoa CHARSET=UTF8;

    USE newxiaoa;

#欄目1 

    #創(chuàng)建表content:

    #cid--內(nèi)同容排序id

    #content--主內(nèi)容塊

    #isDel--是否刪除

    #isDan--是否是危險內(nèi)容

    CREATE TABLE content(

        cid INT PRIMARY KEY AUTO_INCREMENT,

        content VARCHAR(1024) NOT NULL,

        isDel INT NOT NULL DEFAULT 0,

        isDan INT NOT NULL DEFAULT 1

    );

#插入一段測試內(nèi)容-1

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花郑原,被同班的女漢子知道了唉韭,

    連忙請她保密,本以為向來爽朗不羈的她是不屑告密的犯犁,

    結果丫飛快的把我出賣了属愤。 后來想想,也可能是我拜托她的方式不對酸役,

    不該說什么這是男人之間的約定住诸。',

        0,

        0

);    

#插入一段測試內(nèi)容-2

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花,被同班的女漢子知道了簇捍,

    連忙請她保密只壳,本以為向來爽朗不羈的她是不屑告密的,

    結果丫飛快的把我出賣了暑塑。 后來想想吼句,也可能是我拜托她的方式不對,

    不該說什么這是男人之間的約定事格。',

        0,

        0

); 

#插入一段測試內(nèi)容-3

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花惕艳,被同班的女漢子知道了,

    連忙請她保密驹愚,本以為向來爽朗不羈的她是不屑告密的远搪,

    結果丫飛快的把我出賣了。 后來想想逢捺,也可能是我拜托她的方式不對谁鳍,

    不該說什么這是男人之間的約定。',

        0,

        0

); 

#插入一段測試內(nèi)容-4

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花劫瞳,被同班的女漢子知道了倘潜,

    連忙請她保密,本以為向來爽朗不羈的她是不屑告密的志于,

    結果丫飛快的把我出賣了涮因。 后來想想,也可能是我拜托她的方式不對伺绽,

    不該說什么這是男人之間的約定养泡。',

        0,

        0

); 

#插入一段測試內(nèi)容-5

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花,被同班的女漢子知道了奈应,

    連忙請她保密澜掩,本以為向來爽朗不羈的她是不屑告密的,

    結果丫飛快的把我出賣了杖挣。 后來想想肩榕,也可能是我拜托她的方式不對,

    不該說什么這是男人之間的約定程梦。',

        0,

        0

); 

#插入一段測試內(nèi)容-6

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花点把,被同班的女漢子知道了,

    連忙請她保密屿附,本以為向來爽朗不羈的她是不屑告密的郎逃,

    結果丫飛快的把我出賣了。 后來想想挺份,也可能是我拜托她的方式不對褒翰,

    不該說什么這是男人之間的約定。',

        0,

        0

);    

#插入一段測試內(nèi)容-7

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花匀泊,被同班的女漢子知道了优训,

    連忙請她保密,本以為向來爽朗不羈的她是不屑告密的各聘,

    結果丫飛快的把我出賣了揣非。 后來想想,也可能是我拜托她的方式不對躲因,

    不該說什么這是男人之間的約定早敬。',

        0,

        0

); 

#插入一段測試內(nèi)容-8

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花,被同班的女漢子知道了大脉,

    連忙請她保密搞监,本以為向來爽朗不羈的她是不屑告密的,

    結果丫飛快的把我出賣了镰矿。 后來想想琐驴,也可能是我拜托她的方式不對,

    不該說什么這是男人之間的約定秤标。',

        0,

        0

); 

#插入一段測試內(nèi)容-9

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花绝淡,被同班的女漢子知道了,

    連忙請她保密抛杨,本以為向來爽朗不羈的她是不屑告密的够委,

    結果丫飛快的把我出賣了。 后來想想怖现,也可能是我拜托她的方式不對茁帽,

    不該說什么這是男人之間的約定。',

        0,

        0

); 

#插入一段測試內(nèi)容-10

INSERT INTO content VALUES(

    '',

    '中學時暗戀班花屈嗤,被同班的女漢子知道了潘拨,

    連忙請她保密,本以為向來爽朗不羈的她是不屑告密的饶号,

    結果丫飛快的把我出賣了铁追。 后來想想,也可能是我拜托她的方式不對茫船,

    不該說什么這是男人之間的約定琅束。',

        0,

        0

);                                 

二扭屁,查詢數(shù)據(jù)庫數(shù)據(jù)并返回到前端---php:


<?php

  //允許跨域請求

  header('Access-Control-Allow-Origin:*');

  //鏈接數(shù)據(jù)庫

  $conn=mysqli_connect("127.0.0.1","root","","newxiaoa",3306);

  //設置數(shù)據(jù)庫字符集

  $sql="SET NAMES UTF8";

  //鏈接數(shù)據(jù)庫并設置

  mysqli_query($conn,$sql);

  //獲取前臺發(fā)來的cid

  $cid=$_REQUEST["cid"];

  //定義查詢語句

  $find="SELECT content FROM content WHERE cid=$cid AND isDel=0";

  //執(zhí)行查詢語句

  $res=mysqli_query($conn,$find);

  //抓取查詢到的信息

  $row=mysqli_fetch_row($res);

  //定義返回值并賦值和拋出

  $output=[];

  $output[]=["code"=>200,"data"=>$row];

  echo json_encode($output);

三,前端請求獲取數(shù)據(jù)---js vue axios涩禀;

1料滥,安裝axios

//安裝:
npm install --save axios vue-axios
//main.js設置
import axios from 'axios'
Vue.prototype.$http = axios
//組件內(nèi)使用
this.$http.post('http://127.0.0.1/main.php?cid=1')

 .then(res=>{

   //驗證是否成功獲取數(shù)據(jù)

   console.log(res);

   }).catch(error=>{

   //數(shù)據(jù)錯誤時的異常處理

   console.log(error);
})

2,頁面內(nèi)請求和處理數(shù)據(jù):

  methods:{
    //定義請求函數(shù)
    async fetch(){
      //請求數(shù)據(jù)
      const res = await this.$http.get('http://127.0.0.1/main.php?cid='+this.num);
      //定義數(shù)據(jù)格式
      const contentAdd=[
        {
          header:{},
          body:{
            article:"",
          },
          footer:{
            viewNum:999,
            commentNum:888,
          }
        },
      ];
      //賦值
      contentAdd[0].body.article=res.data[0].data[0];
      //判斷是否是第一次請求
      if(!this.content.length){
        //首次直接賦值
        this.content=contentAdd;
      }else{
        //以后獲取的拼接上去
        this.content=this.content.concat(contentAdd);  
      }
    }
  },

四艾船,前端展示數(shù)據(jù)葵腹,并依據(jù)頁面滾動情況反復觸發(fā)請求獲取更多數(shù)據(jù)---html css js vue-infinite-scroll:

1,配置vue-infinite-scroll

//安裝
npm i vue-infinite-scroll -D
//main.js中通過如下方式注冊全局引用
import infiniteScroll from 'vue-infinite-scroll'
Vue.use(infiniteScroll)
//頁面中使用

<div 

v-infinite-scroll="loadMore" 

infinite-scroll-disabled="switchForMore" 

infinite-scroll-distance="20">

  vue-infinite-scroll示例

</div>

2屿岂,vue-infinite-scroll的參數(shù)說明:

v-infinite-scroll="loadMore" 中的loadMore事件綁定處理函數(shù)践宴,在達到條件(滾動到一定像素)時觸發(fā)此函數(shù)。

infinite-scroll-disabled="switchForMore" 中的switchForMore===true阻止觸發(fā)loadMore爷怀,反之不阻止阻肩;

3,數(shù)據(jù)獲取的this.fetch()函數(shù)的觸發(fā)時機:

//時機1:dom掛載時 
 mounted() {
    this.fetch();
  },
//時機2:頁面滾動時
  methods:{
    loadMore(){
      alert('觸發(fā)loadMore'+this.num);
      this.num+=1;
      //數(shù)據(jù)庫目前只有10條數(shù)據(jù),mounted時已加載一條了
      if(this.num>9){
        this.switchForMore=true;
        return;  
      }     
      this.fetch();
    },
}

以上可以運行的代碼地址如下霉撵,可以直接clone到本地參考磺浙,vue的部分在home.vue和main.js里面,sql在main.sql里面徒坡,php的在main.php里面撕氧。

demo的github地址:https://github.com/tom-wong666/xiaoa.git

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喇完,隨后出現(xiàn)的幾起案子伦泥,更是在濱河造成了極大的恐慌,老刑警劉巖锦溪,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件不脯,死亡現(xiàn)場離奇詭異,居然都是意外死亡刻诊,警方通過查閱死者的電腦和手機防楷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來则涯,“玉大人复局,你說我怎么就攤上這事∷谂校” “怎么了亿昏?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長档礁。 經(jīng)常有香客問我角钩,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任递礼,我火速辦了婚禮惨险,結果婚禮上,老公的妹妹穿的比我還像新娘脊髓。我一直安慰自己平道,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布供炼。 她就那樣靜靜地躺著,像睡著了一般窘疮。 火紅的嫁衣襯著肌膚如雪袋哼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天闸衫,我揣著相機與錄音涛贯,去河邊找鬼。 笑死蔚出,一個胖子當著我的面吹牛弟翘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骄酗,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稀余,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了趋翻?” 一聲冷哼從身側響起睛琳,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎踏烙,沒想到半個月后师骗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡讨惩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年辟癌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荐捻。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡黍少,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靴患,到底是詐尸還是另有隱情仍侥,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布鸳君,位于F島的核電站农渊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砸紊,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一传于、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醉顽,春花似錦沼溜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唆涝,卻和暖如春找都,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廊酣。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工能耻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亡驰。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓晓猛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凡辱。 傳聞我的和親對象是個殘疾皇子戒职,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 基于Vue的一些資料 內(nèi)容 UI組件 開發(fā)框架 實用庫 服務端 輔助工具 應用實例 Demo示例 element★...
    嘗了又嘗閱讀 1,149評論 0 1
  • 簡說Vue (組件庫) https://github.com/ElemeFE/element" 餓了么出品的VUE...
    Estrus丶閱讀 1,634評論 0 1
  • UI組件 element - 餓了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的組...
    魯大師666閱讀 43,391評論 5 97
  • UI組件 element- 餓了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的組件庫 m...
    35eeabfa0772閱讀 3,268評論 7 12
  • UI組件 element- 餓了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的組件庫 m...
    小姜先森o0O閱讀 9,476評論 0 72