vue項(xiàng)目回顧1【項(xiàng)目結(jié)構(gòu)及框架思路】

趁機(jī)做一個(gè)vue項(xiàng)目回顧,以便以后上手方便氏身,也能鞏固記憶
項(xiàng)目結(jié)構(gòu)如下,一一細(xì)說(shuō)惑畴。


image.png

1.index.html


image.png

2.src/main.js
包含路由蛋欣,數(shù)據(jù)集中管理(store),交互(axios)如贷,移動(dòng)端的滑動(dòng)手勢(shì)組件(alloyfinger)陷虎,公共js方法(Common)等等

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import mint from 'mint-ui'//是餓了么的一個(gè)通用組件,button杠袱,mean尚猿。。
import store from './store'
import axios from 'axios'
import Common from './assets/js/common'
import AlloyFinger from 'alloyfinger'//手勢(shì)控制組件
import AlloyFingerPlugin from 'alloyfinger/vue/alloy_finger_vue'

Vue.use(mint);
Vue.use(AlloyFingerPlugin,{
  AlloyFinger
})
Vue.prototype.common = Common;//引用公共js

Vue.config.productionTip = false
Vue.prototype.$http = axios;
/* eslint-disable no-new */
new Vue({
  el: '#app',//這個(gè)id名要與index.html中的id名一致
  router,
  store,
  components: { App },
  template: '<App/>'
})

3.src/App.vue
單頁(yè)面轉(zhuǎn)換就在這個(gè)mian里面進(jìn)行霞掺,加了transitionName是為了頁(yè)面轉(zhuǎn)換效果更好谊路,css樣式在最下面。還有其他的一些頁(yè)面part菩彬,先引用再在components里放缠劝。至于watch里面的代碼功能是為了根據(jù)退出/前進(jìn)決定滑動(dòng)的css樣式效果潮梯。

<template>
  <div id="app">
    <!--這個(gè)id取啥名兒不重要-->
    <!--<HeadNav></HeadNav>-->
    <div id="main">
      <transition :name="transitionName">
        <keep-alive>
          <router-view></router-view>
        </keep-alive>
      </transition>
      <!--<keep-alive>-->
      <!--<router-view></router-view>-->
      <!--</keep-alive>-->
    </div>
    <Footsong></Footsong>
    <slider></slider>
    <!--歌曲的操作列表-->
    <Ellipsis></Ellipsis>
    <!--收藏到歌單-->
    <WhichSong></WhichSong>
    <!--等待框-->
    <Loading></Loading>
  </div>
</template>

<script>

import 'font-awesome/css/font-awesome.min.css'
import './assets/css/common.css'
import Footsong from './components/footsong'
import Slider from './components/slider'
import Ellipsis from './components/tool/ellipsis'
import WhichSong from './components/tool/whichsongList'
import Loading from './components/tool/loading'
export default {
  name: 'App',
  data(){
    return{
      transitionName:''
    }
  },
  mounted(){
    this.width_s = document.documentElement.clientWidth;

  },
  components:{
   Footsong,Slider,Ellipsis,WhichSong,Loading
  },
  watch: {
    '$route' (to, from) {
      const toDepth = to.path.split('/').length;
      const fromDepth = from.path.split('/').length;
      this.transitionName = toDepth < fromDepth ? 'slide-left' : 'slide-right';
    }
  }
}
</script>

<style>
  .slide-right-enter-active,
  .slide-right-leave-active,
  .slide-left-enter-active,
  .slide-left-leave-active {
    will-change: transform;
    transition: all .5s;
    position: absolute;
  }
  .slide-right-enter {
    opacity: 0;
    transform: translate3d(-100%, 0, 0);
  }
  .slide-right-leave-active {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }
  .slide-left-enter {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }
  .slide-left-leave-active {
    opacity: 0;
    transform: translate3d(-100%, 0, 0);
  }
</style>

4.components文件夾里放各種頁(yè)面組件,assets里是靜態(tài)文件(圖片惨恭,js等)秉馏,router里面是路由跳轉(zhuǎn)index.js文件,store是根據(jù)vuex進(jìn)行數(shù)據(jù)管理的文件脱羡,分了多個(gè)模塊萝究。
5.路由router/index.js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

import Mylist from '../components/mylist'
import SongPage from '../components/songPage'
import VideoPage from '../components/videoPage'
...

const router = new Router({
  routes: [
    {
      path: '/',
      name: 'mylist',
      component: Mylist
    },
    {
      path: '/mylist',
      name: 'mylist',
      component: Mylist
    },
    {
      path: '/songPage',
      name: 'songPage',
      component: SongPage
    }, {
      path: '/videoPage',
      name: 'videoPage',
      component: VideoPage
    }
    ...
  ]
})
export default router

6.組件頁(yè)面components/mylist.vue

<template>
    <div class="my-list" id="my-list" :style="{'width':this.$store.state.width_s+'px'}">
      <HeadNav></HeadNav>
      <!--列表-->
      <ul class="list-row-s">
        <li> <i class="fa fa-code"></i>本地音樂(lè)<span>2</span></li>
        <li> <i class="fa fa-address-book"></i>最近播放<span>23</span></li>
        <li> <i class="fa fa-eye-slash"></i>下載管理<span>3</span></li>
        <li> <i class="fa fa-random"></i>我的電臺(tái)<span>13</span></li>
        <li> <i class="fa fa-backward"></i>我的收藏<span>4</span></li>
      </ul>
      <!--收藏的歌單-->
      <div class="songlist-row-s"  v-finger:swipe="swipeHandler">
        <p class="title"><i class="fa fa-angle-down down"></i>收藏的歌單 <i class="fa fa-cog tool"></i></p>
        <ul class="songlist-row-s">
          <li @click="gofavoriteList()">
            <img src="http://p1.music.126.net/9ES51P3Q9n8FkbE-OEJscQ==/109951163674675114.jpg?param=140y140" alt="">
            <div class="context">
              <div class="text">
                <p class="title">我喜歡的音樂(lè)</p>
                <p class="num">{{songlikelistLength}}首</p>
                <i class="fa fa-ellipsis-v tool"></i>
              </div>
            </div>
          </li>
        </ul>
      </div>
      <!--創(chuàng)建的歌單-->
      <div class="songlist-row-s">
        <p class="title"><i class="fa fa-angle-down down"></i>創(chuàng)建的歌單 <i class="fa fa-cog tool"></i></p>
        <ul class="songlist-row-s">
          <li v-for="(item,k) in songcollectList" @click="gofavoriteList(item)" v-if="k<6">
            <img :src="item.coverImgUrl" alt="">
            <div class="context">
              <div class="text">
                <p class="title">{{item.name}}</p>
                <p class="num">{{item.trackCount}}首</p>
                <i class="fa fa-ellipsis-v tool"></i>
              </div>
            </div>
          </li>
        </ul>
      </div>
    </div>
</template>

<script>
  import axios from 'axios'
  import { mapGetters,mapState,mapActions} from 'vuex'
  import HeadNav from './../components/header/HeadNav'
    export default {
        name: "mylist",
        data(){
          return {
            songlikelistLength:0,
            songcollectList:[]
          }
        },
      mounted(){
          var this_ = this;
          this.common.ajaxGet('https://api.bzqll.com/music/netease/search?key=579621905&s=something&type=list&limit=100&offset=0',function (res) {
            this_.songcollectList = res.data.data.playlists;
          });
          //在config/index.js里有配置api的內(nèi)容,可以與后臺(tái)服務(wù)器锉罐,數(shù)據(jù)庫(kù)連接有關(guān)
        axios.get('/api/favorite').then((res)=>{
          this_.songlikelistLength = res.data.length;
        });


      },
      methods:{
        swipeHandler(e){
          console.log("swipe" + e.direction);
        },
           ...mapActions(['aaFn']),
          gofavoriteList(item_){
          //帶著id跳轉(zhuǎn)到favorite_list頁(yè)面
            this.$router.push({
              name: 'favorite_list',
              params: {
                id:item_
              }
            });
          }
        },
      components:{
        HeadNav
      }
    }
</script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帆竹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脓规,更是在濱河造成了極大的恐慌栽连,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侨舆,死亡現(xiàn)場(chǎng)離奇詭異秒紧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)挨下,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)熔恢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人臭笆,你說(shuō)我怎么就攤上這事叙淌。” “怎么了耗啦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵凿菩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我帜讲,道長(zhǎng)衅谷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任似将,我火速辦了婚禮获黔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘在验。我一直安慰自己玷氏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布腋舌。 她就那樣靜靜地躺著盏触,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赞辩,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天雌芽,我揣著相機(jī)與錄音,去河邊找鬼辨嗽。 笑死世落,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糟需。 我是一名探鬼主播屉佳,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洲押!你這毒婦竟也來(lái)了武花?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诅诱,失蹤者是張志新(化名)和其女友劉穎髓堪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體娘荡,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年驶沼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炮沐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡回怜,死狀恐怖大年,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玉雾,我是刑警寧澤翔试,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站复旬,受9級(jí)特大地震影響垦缅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驹碍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一壁涎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧志秃,春花似錦怔球、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春担汤,著一層夾襖步出監(jiān)牢的瞬間又官,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工漫试, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留六敬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓驾荣,卻偏偏與公主長(zhǎng)得像外构,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子播掷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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