1. 程式人生 > >2018.11.8 晚上 vue-cli腳手架工具的使用

2018.11.8 晚上 vue-cli腳手架工具的使用

最經常的使用的是利用mui做底部的導航欄 利用mint-ui可以製作輪播圖,頭部標籤等

  這裡要注意的是:mint-ui一定要記得匯入樣式  在寫輪播圖的時候高度一定要記得寫出來 預設是沒有高度的

    mui:要把相應的lib包複製到相應的路徑下

//匯入mint-ui 這個是按需匯入mint-ui
import { Header,Swipe, SwipeItem } from 'mint-ui';
import "mint-ui/lib/style.css"  //引入檔案的樣式 可以設定輪播圖的樣式為橫向的 輪播圖記得寫高
Vue.component(Header.name, Header);
Vue.component(Swipe.name, Swipe); //輪播圖
Vue.component(SwipeItem.name, SwipeItem);



//進行匯入miui  記得把 lib複製到目錄中去
import './lib/MUI/css/mui.css'
import './lib/MUI/css/icons-extra.css'

assets放的是圖片類的資源

components放的是一些小的元件

App.vue放的是專案中放的是專案最原始的頁面

以 .vue結尾的稱為單檔案元件

路由就是根據網址的不同返回不同的內容給使用者 router-view顯示的是當前路由地址對應的內容

@表示src這個目錄

在一個組建當中要申明對一個子元件的引用的時候:

  1.首先要進行匯入

  2.然後在進行註冊到頁面中去

  3.然後在template裡面進行展示

<template>
    //這裡面進行展示就好啦
    <div>
        <home-header></home-header>
        <home-swier></home-swier>
        <home-icons></home-icons>
    </div>
</template>
<script>
//這邊要宣告對子元件的引用 
    // 首先先進行匯入
    import HomeHeader from './component1/Header';
    import HomeSwier from './component1/Swier';
    import HomeIcons from './component1/Icons';
    //然後在進行註冊到home中去
    //最後在template裡面進行展示元件<home-header></home-header><home-swier></home-swier><home-icons></home-icons>
export default {
    name:'home',
    components: {
        HomeHeader,
        HomeSwier,
        HomeIcons
    }
}

父元件向子元件傳值的詳細步驟:

  1.首先使用axios傳送ajax請求得到資料 具體程式碼如下:

//首先定義一個生命週期函式 一旦掛載頁面就會立即執行
mounted () {
    this.getHomeInfo();
}
//然後在methods裡面進行定義相應的方法
methods: {
    getHomeInfo() {
        axios.get('api/index.json').then(this.getHomeInfoSucc)
    },
    getHomeInfoSucc(res){ //這邊是接收後端傳遞過來的資料
        res=res.data
        if(res.ret&&res.data){ //判斷是否有值 是否正確
            this.swiperList=res.data.swiperList; //得到資料
        }
    }
}

   這裡要注意的是vue-cli腳手架工具提供了一個配置後臺代理的功能

   需要我們自己配置一個 vue.config.js的檔案 這個是webpack自己提供的我們只需要使用即可

//下面是進行配置方向代理的結構非常重要
module.exports = {
    devServer: {
      proxy: {
          'api': { //如果請求路徑是以api開頭的話 改下面的配置
              target: 'http://localhost:8080/', //轉發埠
              ws: true, // 是否啟用websockets
              changOrigin: true, //開啟代理:在本地會建立一個虛擬服務端,然後傳送請求的資料,並同時接收請求的資料,這樣服務端和服務端進行資料的互動就不會有跨域問題
              pathRewrite: {
                  '^/api' : '/mock'//所有的請求路徑要是以 /api開頭的話就會被轉發到 /mock目錄下
              }
          }
      }
    }
  }

  2.得到相應的json資料之後,定義一個用來存放資料的空陣列 有點像java裡面定義一個空的陣列啊 字串什麼的 swiperList:[] 字串的話:city:'';

//在data裡面進行定義一個用來存放資料的空陣列 到時候通過data裡面的資料 傳遞到子元件裡面進行展示
data () {
    return {
        wriperList:[], //定義一個用來存放資料的空陣列
    }
}

  3.然後在展示的template裡面對相應繫結相應的屬性 因為父元件向子元件傳值都是靠繫結屬性來實現的 父元件向子元件進行傳值 通過屬性來進行 引號裡面的值就是data裡面的 :是用來繫結屬性的

  <home-swier :swiperList="swiperList"></home-swier>

  4.然後在子元件裡面進行接收父親傳遞過來的資料 最後使用v-for=""迴圈展示在頁面上

//接收父親傳遞過來的資料
props: {
    swiperList:Array; //設定傳遞過來的資料型別是Array型別
}
//然後在頁面上迴圈展示就好了
<template>
    <div>
        <mt-swipe :auto="3000">
            <mt-swipe-item 
            v-for="item of swiperList" :key="item.id">
                <img :src="item.imgUrl" alt="">
            </mt-swipe-item>
        </mt-swipe>
    </div>
</template>

怎麼定義一個新的元件並且點選相應的位置跳轉到這個路由頁面呢???

  1.首先現在router.js裡面進行定義一個相應的路由連線 這樣只要router-link匹配上就可以了

//@表示src下面的路徑 進行匯入路由
import City from '@/components/city/City' //@表示src資料夾下面
Vue.use(Router)


//設定相應的路由
export default new Router({
  routes: [
    {
      path: '/', //這個是根路徑
      name: 'home',
      component: Home
    },
    {
      path: '/citys',  //path匹配得到的路徑 展示對應的component元件 要與相應的 router-link to="/citys" 相匹配就行了
      name: 'City',
      component: City
    },  
  ]
})

2.在要跳轉的位置用router-link標籤包起來

<template>
    <div>
        <div class="header">
            <input type="text" placeholder="輸入城市/景點/遊玩主題">
            <div class="search"></div>
            <router-link to="/citys">  <!--點選這邊就會跳轉到上面的citys路由介面-->
            <div class="header-right" v-for="item of city" :key="item.id">
                    <span>{{item.name}}</span>
                    <img src="@/images/sanjiao.png" alt="">
            </div>
            </router-link>
        </div>
    </div>
</template>

完畢

還要注意的是 如果在template裡面某段程式碼不能執行 

  v-if="list.length"   //如果長度為0的話是不會執行的但是儘量不要在template裡面進行邏輯的處理

  可以使用具算屬性:

  computed: {showSwiper () {return this.length}}   上面就可以在直接寫成 v-if="showSwiper" 就行了