vue實際開發(fā)中的問題

一右犹、前言

從杭州回武漢這邊快兩個月了急侥,入職不久就讓我單獨開發(fā)一個簡易的系統(tǒng)砌滞,只要求用vue完成,從開始寫到現(xiàn)在已經(jīng)快一個月了坏怪,需求基本已經(jīng)能夠?qū)崿F(xiàn)了贝润,第一次實際上手vue,確實是碰到不少問題陕悬,記錄一下

二题暖、項目簡介

本項目使用vue+element-ui+axios+vuex+NProgress

三按傅、問題

1.如何設(shè)置組件背景(不污染其他組件)

data() {
      return {
        //圖片url地址,使用require引入防止生產(chǎn)環(huán)境路徑出現(xiàn)問題
        bgUrl: require('../assets/img/login/web_login_bg.jpg'),
      }
 },
    //進入時渲染
    beforeRouteEnter(to, from, next) {
      next((vm) => {
        document.querySelector('html').style.cssText = `
        background: url(${vm.bgUrl}) center no-repeat;
        background-size: cover;
        background-attachment: fixed;
      `
      })
    },
     //離開時銷毀
    beforeRouteLeave(to, from, next) {
      document.querySelector('html').style.cssText = `background: #ffffff;`
      next()
},

ts版(如果vue3時記得寫在setup函數(shù)外哦捉超,見問題2):

  /**
   * 路由守衛(wèi)胧卤,當(dāng)進入此路由時觸發(fā)
   * 在此處用于更換背景圖片
   * @param {object} to       即將要進入的目標(biāo)路由對象
   * @param {object} from     當(dāng)前導(dǎo)航正要離開的路由
   * @param {Function} next   一定要調(diào)用該方法來 resolve 這個鉤子。執(zhí)行效果依賴 next 方法的調(diào)用參數(shù)拼岳。
   */
  beforeRouteEnter(_to:Object,_from:Object,next:any):void {
    window.sessionStorage.clear()
    // 因為此時組件實例化還沒創(chuàng)建枝誊,不能訪問this,通過 `vm` 訪問組件實例
    next(() => {
      const html: any = document.querySelector('html')
      html.style.cssText = `
        background: url(${require('../../assets/img/login/web_login_bg.jpg')}) center no-repeat;
        background-size: cover;
        background-attachment: fixed;
      `
    })
  },

2.在谷歌中如何調(diào)試vue代碼

在項目中的vue.config.js中新增如下配置即可(如沒有此文件,新建一個)

module.exports = {
  //谷歌調(diào)試代碼
  configureWebpack: {
    devtool: 'source-map'
  },
}

3.axios解決跨域

問題:網(wǎng)絡(luò)請求時出現(xiàn)以下錯誤:(跨域問題這里不詳細(xì)說惜纸,自己查一下)

解決:因為axios中只能使用get和post方法來進行請求數(shù)據(jù)叶撒,沒有提供jsonp等方法進行跨域訪問數(shù)據(jù),所以使用代理服務(wù)器進行訪問耐版,在vue.config.js中新增如下配置,:

module.exports = {
 devServer: {
    /* 自動打開瀏覽器 */
    open: true,
    /* 設(shè)置為0.0.0.0則所有的地址均能訪問 */
    host: '0.0.0.0',
    port: 9090,
    https: false,
    hotOnly: false,
    /* 使用代理 */
    proxy: {
      //實際請求時祠够,這里會去你的url中匹配'/api',并將其替換成下面代理服務(wù)器的地址
      '/api': {
        /* 目標(biāo)代理服務(wù)器地址 */
        target: '代理服務(wù)器地址',
        /* 允許跨域 */
        changeOrigin: true,
      },
    },
  },
}

4.axios的封裝(另外使用了nprogress)

(1)在src中新建一個文件夾network粪牲,文件夾中新建一個request.js文件
(2)新增如下配置:

// 'use strict';
import axios from 'axios';
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import store from '../store/index'
axios.defaults.timeout = 5000
axios.defaults.withCredentials = true
//攔截器
axios.interceptors.request.use(config => {
  NProgress.start()
  // 請求頭默認(rèn)攜帶token
  config.headers.Authorization = "Bearer " + sessionStorage.getItem('AccessToken')
  return config
}, error => {
  return Promise.reject(error)
})
// 響應(yīng)器
axios.interceptors.response.use(config => {
  NProgress.done()
  return config
})
// 封裝的post請求
export function post(url, data) {
  return axios({
    url: url,
    baseURL: 'http:',
    method: 'post',
    data: data
  })
}
// 封裝的get請求
export function get(url, params) {
  return axios({
    url,
    params: params
  })
}

(3).具體使用

import { post } from '../network/request'
export default {
mounted() {
      post('目標(biāo)url地址', Data)
              .then((ress, err) => {
               //請求成功數(shù)據(jù)處理         
               }
              .catch((err) => {
                console.log(err)
                this.$message.error('請求失敗!')
              })
    },
}

5.動態(tài)引入組件:

根據(jù)zjName返回出來的組件動態(tài)渲染組件古瓤,同樣可使用props以及emit

<template>
    <component :is="zjName">
    </component>
</template>

computed: {
    zjName() {
      var str
      if () {
        str = () => import('組件路徑')
       }
      else  if(){
        str = () => import('組件路徑')
       }
 }

6.生產(chǎn)環(huán)境去掉console打印(不使用webpack等第三方插件)

(1)新建一個RemoveConsole.js文件,添加如下代碼

export function rewirteLog() {
  console.log = (function (log) {
      return process.env.NODE_ENV == 'development'? log : function() {}
  }(console.log))
}

(2)main.js中引入并運行

import {rewirteLog} from './utils/RemoveConsole'
rewirteLog()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腺阳,一起剝皮案震驚了整個濱河市落君,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亭引,老刑警劉巖绎速,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異焙蚓,居然都是意外死亡纹冤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門主届,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赵哲,“玉大人,你說我怎么就攤上這事君丁》愣幔” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵绘闷,是天一觀的道長橡庞。 經(jīng)常有香客問我,道長印蔗,這世上最難降的妖魔是什么扒最? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮华嘹,結(jié)果婚禮上吧趣,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好强挫,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布岔霸。 她就那樣靜靜地躺著,像睡著了一般俯渤。 火紅的嫁衣襯著肌膚如雪呆细。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天八匠,我揣著相機與錄音絮爷,去河邊找鬼。 笑死梨树,一個胖子當(dāng)著我的面吹牛坑夯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抡四,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼渊涝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了床嫌?” 一聲冷哼從身側(cè)響起跨释,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厌处,沒想到半個月后鳖谈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡阔涉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年缆娃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰排。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡贯要,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出椭住,到底是詐尸還是另有隱情崇渗,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布京郑,位于F島的核電站宅广,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏些举。R本人自食惡果不足惜跟狱,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一户魏、第九天 我趴在偏房一處隱蔽的房頂上張望驶臊。 院中可真熱鬧挪挤,春花似錦、人聲如沸关翎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春樊诺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顿膨。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工取劫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像晴玖,于是被迫代替她去往敵國和親琅催。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345