vue--使用vue過程中所遇問題的解決方法

2.Axio表單請求

const axiosForm = (params, url) => {
  return new Promise(function (resolve, reject) {
    axios({
      url: url,
      method: 'post',
      data: params,
      transformRequest: [function (data) {
        let ret = ''
        for (let it in data) {
          ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
        }
        return ret
      }],
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    }).then(function (response) {
      resolve(response.data)
    }).catch(function (error) {
      reject(error)
    });
  })
}

3.vue-cli 3.0集成sass/scss到vue項目

vue-cli 3提供了兩種方式集成sass/scss:

  • 創建項目的時候選擇預處理器sass
  • 手動安裝sass-loader
    (1)方式一:
  • 在構建項目的時候,移動上下鍵選擇“Manually select features”,手動選擇創建項目的特性,
$ vue create vuedemo
? Please pick a preset: (Use arrow keys)
default (babel, eslint)
> Manually select features
  • 移動上下鍵在CSS Pre-processors,按提示點擊空格鍵選擇CSS-processors,然後再選擇第一個SCSS/SASS作爲我們的CSS預處理器,最後完成後項目會幫我們安裝sass-loader node-sass
? Check the features needed for your project: (Press <space> to select, <a> to t
oggle all, <i> to invert selection)
>( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 ( ) Router
 ( ) Vuex
 (*) CSS Pre-processors
 ( ) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): (Use arrow keys)
> SCSS/SASS
  LESS
  Stylus

(2)方式二:

  • 安裝
npm install -D sass-loader node-sass
  • 使用
<style lang="scss">
$color = yellow;
</style>

感謝★,°:.☆( ̄▽ ̄)/$:.°★碼經筆記

4.scss與sass的不同寫法

scss:與css類似

<style lang="scss">
	h1 {
	  color: red;
	}
</style>

sass:不能使用大括號,使用回車和至少兩個空格來區分選擇器和規則

<style lang="sass">
h1 
  color: red

</style>

如果你使用了lang=“sass”,卻使用了大括號{},那就會報如下錯誤:
在這裏插入圖片描述

5.vue路由傳遞並獲取參數(參數爲對象)

傳遞參數方式一:

<router-link 
    :to="{
        path: 'yourPath', 
        params: { 
            name: 'name', 
            dataObj: data
        },
        query: {
            name: 'name', 
            dataObj: data
        }
    }">
</router-link>

傳遞參數方式二:

<template>
    <button @click="sendParams">點擊傳遞參數</button>
</template>
<script>
  export default {
      data () {
      return {
        msg: 'xxxxx'
      }
    },
    methods: {
      sendParams () {
        this.$router.push({
            path: 'yourPath', 
            name: '需要跳轉的那個路由名稱',
            params: { 
                name: 'name', 
                dataObj: this.msg
            }
        })
      }
    }
  }
</script>
  • path -> 是要跳轉的路由路徑,也可以是路由文件裏面配置的 name 值,兩者都可以進行路由導航
  • params -> 是要傳送的參數,參數可以直接key:value形式傳遞
  • query -> 是通過 url 來傳遞參數的同樣是key:value形式傳遞

獲取參數:

<template>
    <h3>msg</h3>
</template>
<script>
  export default {
    data () {
      return {
        msg: ''
      }
    },
    methods: {
      getParams () {
        // 取到路由帶過來的參數 
        let routerParams = this.$route.params.dataobj
        // 將數據放在當前組件的數據內
        this.msg = routerParams
      }
    },
    watch: {
    // 監測路由變化,只要變化了就調用獲取路由參數方法將數據存儲本組件即可
      '$route': 'getParams'
    }
  }
</script>

6.webpack指令

  1. 刪除全局webpack-cli:
    npm uninstall -g webpack-cli
  2. 刪除本地webpack-cli:
    npm uninstall webpack-cli
  3. 刪除全局webpack
    npm uninstall -g webpack
  4. 刪除本地webpack
    npm un webpack
  5. 全局安裝webpack:(官網不推薦)
    npm install --global webpack
  6. 本地安裝webpack:
    npm install --save-dev webpack
  7. 本地安裝webpack -cli (使用 webpack 4+ 版本)
    npm install --save-dev webpack-cli

檢查webpack是否安裝成功,出現版本號爲成功。
如果是全局安裝則:webpack -v
如果是本地安裝則:node_modules.bin\webpack -v (注意是斜杆的方向)

7.解決vue中console.log打印報錯問題

報錯:error: Unexpected console statement (no-console) at src\App.vue:29:5:、
在根目錄創建.eslintrc.js文件
內容:

module.exports = {
    root: true,
    env: {
      node: true
    },
    'extends': [
      'plugin:vue/essential',
      'eslint:recommended'
    ],
    rules: {
      'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
      'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
    },
    parserOptions: {
      parser: 'babel-eslint'
    }
  }

8.獲取自定義屬性

<div v-for="item in list" :key="item.id" :data-id="item.id" @click="col($event)">

col(){
  console.log(e.target.getAttribute('data-id'))
}

9.axios的跨域解決方法

假設你請求的完整接口地址爲:
http://xxxxxx.cn:8321/api/AgriBaseService/queryAgriBaseGoods
那麼在根目錄創建vue.config.js文件,添加配置信息如下:

module.exports = {
  publicPath: "./",
  assetsDir: "assets",
  devServer: {
    port: 8080,
    open: true, //配置自動啓動瀏覽器
    proxy: {
      '/api': {
        target: 'http://xxxxxx.cn:8321/api/', //對應自己的接口
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

最終請求的接口被代理爲:
http://localhost:8080/api/AgriBaseService/queryAgriBaseGoods

10.vue頁面跳轉的兩種方式

  1. 標籤跳轉
<router-link to='two.html'><button>點我到第二個頁面</button></router-link>
  1. 點擊事件跳轉
 <button @click="hreftwo" class="test-one">點我到第二個頁面</button>
      
methods:{ //跳轉頁面
 hreftwo(){
     this.$router.push({ path:'/two.html'  })
  }
}

11.vue請求服務器圖片403報錯

在這裏插入圖片描述
解決辦法:

在index.html中的head中添加
<meta name="referrer" content="no-referrer" />
就可以了

12.data中如何正確定義圖片路徑

export default {
  data() {
    return {
    imgSrc: '../../assets/images/icon_favorites.png',//錯誤,圖片無法顯示
    imgSrc: require('../../assets/images/icon_favorites.png'),//正確
    }
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章