全棧開(kāi)發(fā)學(xué)習(xí)(Node+Vue+Mongodb)(十)——后臺(tái)數(shù)據(jù)展示到移動(dòng)端頁(yè)面

本專(zhuān)題文章共十篇寄雀,已完結(jié)秧均,后續(xù)有補(bǔ)充會(huì)實(shí)時(shí)更新窖张。

1 后臺(tái)數(shù)據(jù)錄入

  • 錄入后臺(tái)數(shù)據(jù)的各種分類(lèi)(手動(dòng))

  • 爬取官網(wǎng)的數(shù)據(jù)

    Chrome 里console中輸入:

    $$('選擇器') =》

    $$('選擇器 ').map(el=>el.innerHTML) =》

    *.slice(5) * //跳過(guò)5條數(shù)據(jù)

  • 在數(shù)據(jù)庫(kù)中引入所有模型 椭岩,在server里安裝:npm i require-all

    在db.js中引入

     require('require-all')(__dirname + '/../models') //引用了models里所有js
    
  • 在移動(dòng)端接口文件下通過(guò)js的方式直接錄入

    創(chuàng)建init接口

     router.get('/news/init', async (req, res) => {
        const parent = await Category.findOne({
          name: '新聞分類(lèi)'
        })
        const cats = await Category.find().where({     
          parent: parent
        }).lean()  //獲取分類(lèi)践叠,取json格式
      //爬取的數(shù)據(jù)粘貼在這里
        const newsTitles = ["鳳求凰&“.................]
        
        //循環(huán)newsTitles 得到對(duì)象數(shù)組
        const newsList = newsTitles.map(title => {
      //隨機(jī)取分類(lèi)
          const randomCats = cats.slice(0).sort((a, b) => Math.random() - 0.5)
          return {
            categories: randomCats.slice(0, 2),  //對(duì)應(yīng)的分類(lèi)
            title: title
          }
        })
    
         await Article.deleteMany({})       //將數(shù)據(jù)庫(kù)所有內(nèi)容清空
         await Article.insertMany(newsList) //插入newsList數(shù)據(jù)
        res.send(newsList)
      })
    

    ps:注意,要批量向后臺(tái)導(dǎo)入數(shù)據(jù)時(shí)要先在瀏覽器調(diào)用一下這個(gè)init接口膊存,否則不會(huì)執(zhí)行插入語(yǔ)句也就沒(méi)有導(dǎo)入數(shù)據(jù)的效果导而。

2 數(shù)據(jù)接口

新建get接口忱叭,用于前端調(diào)用

router.get('/news/list',async(req,res)=>{
    const parent=await Category.findOne({
        name:'新聞分類(lèi)'
    })
      /*聚合查詢(xún)*/
    const cats = await Category.aggregate([
        { $match: { parent: parent._id } },  //過(guò)濾數(shù)據(jù),條件查詢(xún)上級(jí)分類(lèi)
        {
          /*能夠查詢(xún)出每個(gè)分類(lèi)底下的所有文章*/
          $lookup: {         //關(guān)聯(lián)查詢(xún)
            from: 'articles',  //從Article模型中查詢(xún)
            localField: '_id', 
            foreignField: 'categories',  //外鍵
            as: 'newsList'  //命名為newsList
          }
        },
        {
            $addFields: {
              newsList: { $slice: ['$newsList', 5] }  //只取每個(gè)分類(lèi)底下的5個(gè)文章數(shù)據(jù)
            }
          }
        ])
         /*新增熱門(mén)分類(lèi)今艺,其中的文章從其他的分類(lèi)中獲取得到*/
        const subCats = cats.map(v => v._id)  //子分類(lèi)是之前的那4個(gè)分類(lèi)
        //在4個(gè)類(lèi)別前加上“熱門(mén)”分類(lèi)
        cats.unshift({
          name: '熱門(mén)',
          newsList: await Article.find().where({
            categories: { $in: subCats }
          }).populate('categories').limit(5).lean()
        })
        //獲取熱門(mén)分類(lèi)里的文章的原分類(lèi)
        cats.map(cat => {
          cat.newsList.map(news => {
            news.categoryName = (cat.name === '熱門(mén)')   
              ? news.categories[0].name : cat.name
            return news
          })
          return cat
        })
        res.send(cats)
  })

3 數(shù)據(jù)展示

移動(dòng)端數(shù)據(jù)展示的方法和之前后臺(tái)管理界面的類(lèi)似韵丑,此處不再贅述

  • 在web中安裝axios并引入模塊

    import axios from 'axios'
    Vue.prototype.$http =axios.create({
      baseURL:process.env.VUE_APP_API_URL || '/web/api'
    })
    
  • methods

     async fetchNewsCats(){
            const res =await this.$http.get('news/list')
            this.newsCats=res.data
          }
    

4 其他細(xì)節(jié)問(wèn)題

  • swiper

    • 英雄板塊告訴隨元素內(nèi)容多少變化

       <swiper ref="list"  :options="{autoHeight:true}" >
      
    • 導(dǎo)航高亮跟隨swiper而變化

       <swiper ref="list" @slide-change="()=>active=$refs.list.swiper.realIndex">
      
  • 英雄技能點(diǎn)擊跳轉(zhuǎn)到對(duì)應(yīng)描述

    <!-- skills -->
          <div class="skills bg-white mt-4">
               <div class="d-flex jc-around">
                    <img 
                         class="icon"
                         @click="currentSkillIndex=i"
                         :class="{active:currentSkillIndex===i}"
                         :src="item.icon" alt="" 
                         v-for="(item,i) in model.skills" :key="item.name"/>
                </div>
                    <div v-if="currentSkill">
                         <div class="d-flex pt-4 pb-2 ml-2">   
                            <h3 class="m-0">{{currentSkill.name}}</h3>
                                <span class="text-grey ml-4">
                              (冷卻值:{{currentSkill.delay}} 消耗:{{currentSkill.cost}})
                                 </span>
                          </div>
                             <p class="ml-2">{{currentSkill.description}}</p>
                                <div class="border-bottom"></div>
                                   <p class="text-grey">小提示:{{currentSkill.tips}}</p>
                                </div>
                             </div>
    <!-- end of skills -->
    
    computed:{
             currentSkill(){
                 return this.model.skills[this.currentSkillIndex]
             }
         }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市虚缎,隨后出現(xiàn)的幾起案子撵彻,更是在濱河造成了極大的恐慌,老刑警劉巖实牡,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陌僵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡创坞,警方通過(guò)查閱死者的電腦和手機(jī)拾弃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摆霉,“玉大人,你說(shuō)我怎么就攤上這事奔坟⌒埃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵咳秉,是天一觀的道長(zhǎng)婉支。 經(jīng)常有香客問(wèn)我,道長(zhǎng)澜建,這世上最難降的妖魔是什么向挖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮炕舵,結(jié)果婚禮上何之,老公的妹妹穿的比我還像新娘。我一直安慰自己咽筋,他們只是感情好溶推,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奸攻,像睡著了一般蒜危。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睹耐,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天辐赞,我揣著相機(jī)與錄音,去河邊找鬼硝训。 笑死响委,一個(gè)胖子當(dāng)著我的面吹牛新思,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晃酒,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼表牢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了贝次?” 一聲冷哼從身側(cè)響起崔兴,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛔翅,沒(méi)想到半個(gè)月后敲茄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡山析,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年堰燎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笋轨。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秆剪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爵政,到底是詐尸還是另有隱情仅讽,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布钾挟,位于F島的核電站洁灵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掺出。R本人自食惡果不足惜徽千,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汤锨。 院中可真熱鬧双抽,春花似錦、人聲如沸闲礼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)位仁。三九已至柑贞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聂抢,已是汗流浹背钧嘶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琳疏,地道東北人有决。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓闸拿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親书幕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子新荤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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