nuxt.js、koa2項目踩坑

一、在用vue寫項目時,寫組件必須寫上name屬性,且在引用組件時,組件名首字母大寫,且在模板結構中首字母小寫,必須是這樣寫纔可以。組件名首字母大寫,模板中用首字母與後面名字用-分隔都不可以。代碼如下:

組件:

<template>
  <div>
    <ul class="navlist">
      <li v-for="(item,idx) in navlist" :key="idx">
        <a :class="idx===0?'cur':''" :href="item.url">{{item.name}}</a>
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  name: 'e-nav'
}

引用組件的父組件:

<el-col :span="19">
            <enav/>
          </el-col>



import Enav from '../components/index/header/nav'
export default {
  components: {
    Enav
  },
  data() {
    return {

    }
  }
}
</script>

二、在pages頁面組件中,如果需要更改引用的components中組件的樣式時,直接在頁面組件中的style標籤中寫是不起作用的。因爲nuxt.js先運行middleware。生命週期如下圖所示:

 

 

 

 

解決方法:是不引用公共的頭部的組件,在頁面組件中單獨寫頭部的dom結構,或者另外再建個組件,把搜索框去掉。問題得到解決,但是對於在頁面組件中不能更改引用的組件的樣式還是有點疑惑。。。。。

三、當部署到服務器上時,運行npm run build會出現Nuxt Fatal Error, Error: Cannot import module '@nuxt/core'這個錯誤,

解決辦法:重新把項目目錄刪除,從gitlab上拉取一份新的,重新npm install ,再運行竟然好了。我想應該是有些包沒安裝成功導致的。

參考鏈接:https://cmty.app/nuxt/nuxt.js/issues/c9236

四、寫nuxt.js項目時,用到的最多的就是組件,一般在頁面組件中引入components中的組件,然後通過props把數據傳遞到子組件中。例:

//頁面組件中引入Garousel這個子組件,通過:carousel-list這個自定義指令將carouselList數據傳遞到子組件
<div class="gardenia_carousel">
          <gcarousel :carousel-list="carouselList"/>
        </div>


components: {
    Gcarousel
  },
  async asyncData(context) {
    try {
      let { status, data } = await context.$axios.get(`/gardenia/menu?id=50`)
      let menu = data.menu.resources
      if (status === 200) {
        
        //輪播圖
        let paramsCarousel = {
          classifyOneId: menu[8].id,
          // classifyTwoId: menu[8].resources[0].id,
          limitSize: 3,
          orderType: 2,
          coType: 8
        }
        let carouselList = await context.$axios.post(`/gardenia/home`, paramsCarousel)
        return {
          menu,
          carouselList: carouselList.data.data
        }
      }
    } catch (err) {
      console.log("err:===", err)
    }
  },


//在Gcarousel組件中這樣寫:
<div id="carousel-example-generic" class="carousel slide gardenia_slider" data-ride="carousel">
      <div class="carousel-inner" role="listbox">
        <div
          class="item"
          v-for="(item,idx) in carouselList"
          :key="idx"
          :class="idx===0? 'active':''"
        >
          <div class="row">
            <div class="col-xs-12 col-sm-6 col-md-7">
              <a :href="item.coLink" target="_blank">
                <img :src="item.coCoverImg" alt="banner">
              </a>
            </div>
            <div class="col-xs-12 col-sm-6 col-md-5">
              <div class="carousel-caption">
                <h2 class="swiper_title">
                  <a :href="item.coLink" target="_blank">井岡山勝利會師</a>
                </h2>
                <p class="swiper_intro">
                  <a :href="item.coLink" target="_blank">{{item.coItdc}}</a>
                </p>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- Controls -->
      <a
        class="left carousel-control"
        href="#carousel-example-generic"
        role="button"
        data-slide="prev"
      >
        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a
        class="right carousel-control"
        href="#carousel-example-generic"
        role="button"
        data-slide="next"
      >
        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>


<script>
export default {
  name: 'e-nav',
  props: { carouselList: Array },
  data() {
    return {
    }
  },
  created() {
  }
}
</script>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章