vue項(xiàng)目小結(jié)

1.項(xiàng)目打包的時(shí)候棒假,遇到如下報(bào)錯(cuò)

image.png

問(wèn)題原因
optimize-css-assets-webpack-plugin 這個(gè)版本很高条辟,在4.0以上
但是webpack的版本在4.0以下弹渔,
而optimize-css-assets-webpack-plugin的v4.0.0需要webpack v4胳施。

解決方法
降低 optimize-css-assets-webpack-plugin 的版本

npm instal --save-dev optimize-css-assets-webpack-plugin@3.2.0

2.在v-for循環(huán)中,需要對(duì)每條數(shù)據(jù)中的值進(jìn)行處理

<li v-for="item in dataList">
 <image src="imgUrl(item.url)"/>
</li>

imgUrl(data){
if(data){
return 'http://'+data
}else{
return  data
}
}

3.vue中導(dǎo)出組件

export { default as AppMain } from './AppMain'
export { default as Navbar } from './Navbar'
export { default as Settings } from './Settings'
export { default as Sidebar } from './Sidebar/index.vue'
export { default as TagsView } from './TagsView/index.vue'

在使用的頁(yè)面直接 import {AppMain,Settings } from ”@/components“

4.一些好用的插件

screenfull 全屏插件 npm install --save screenfull
showdown 可以編譯markdown語(yǔ)法
tui-editor 富文本編輯器 npm install --save tui-editor
npm run preview -- --report

Vue Baidu Map Vue Baidu Map是基于Vue 2.x的百度地圖組件肢专。

中文文檔 | github地址 | 在線預(yù)覽

image.png

Cube-UI手機(jī)端UI框架

滴滴 WebApp 團(tuán)隊(duì) 實(shí)現(xiàn)的 基于 Vue.js 實(shí)現(xiàn)的精致移動(dòng)端組件庫(kù)
中文文檔 | github地址 | 在線預(yù)覽
組件樣式豐富舞肆,里面還有表單驗(yàn)證,這是我看到它的優(yōu)點(diǎn)之一博杖,因?yàn)榇蟛糠值膗i框架在表達(dá)驗(yàn)證這塊椿胯,要么就很簡(jiǎn)略,而且大部么都?jí)焊鶝](méi)有表單驗(yàn)證的

v-charts基于 Vue2.0 和 echarts 封裝的 v-charts 圖表組件剃根,只需要統(tǒng)一提供一種對(duì)前后端都友好的數(shù)據(jù)格式設(shè)置簡(jiǎn)單的配置項(xiàng)哩盲,便可輕松生成常見的圖表

中文文檔 | github地址 | 在線預(yù)覽

image.png

5.當(dāng)組件第二次進(jìn)入的時(shí)候,不會(huì)觸發(fā)created,mounted

創(chuàng)建編輯的頁(yè)面使用的是同一個(gè) component狈醉,默認(rèn)情況下這兩個(gè)頁(yè)面切換時(shí)并不會(huì)觸發(fā) vue 的 created 或者 mounted 鉤子廉油,官方說(shuō)你可以通過(guò) watch $route 的變化來(lái)進(jìn)行處理,但說(shuō)真的還是蠻麻煩的苗傅。后來(lái)發(fā)現(xiàn)其實(shí)可以簡(jiǎn)單的在 router-view 上加上一個(gè)唯一的 key抒线,來(lái)保證路由切換時(shí)都會(huì)重新渲染觸發(fā)鉤子了。這樣簡(jiǎn)單的多了渣慕。

<router-view :key="key"></router-view>

computed: {
  key() {
    // 只要保證 key 唯一性就可以了嘶炭,保證不同頁(yè)面的 key 不相同
    return this.$route.fullPath
  }
 }

6.媒體查詢media query

``用media query做了一點(diǎn)簡(jiǎn)單的響應(yīng)式布局``

手機(jī)等小屏幕手持設(shè)備
@media only screen and (min-width: 320px) and (max-width: 768px) {
    css...
    當(dāng)設(shè)備寬度  在  320px和768px之間時(shí),執(zhí)行當(dāng)前的css
}

平板
@media not screen and (min-width: 769px) and (max-width: 992px) {
    css...
    當(dāng)設(shè)備寬度  不在  769px和992px范圍內(nèi),執(zhí)行當(dāng)前的css
}
pc客戶端、桌面
@media only screen and (min-width: 993px) and (max-width: 1200px) {
    css...
    當(dāng)設(shè)備寬度  在  769px和992px范圍內(nèi),執(zhí)行當(dāng)前的css
}
大屏設(shè)備
@media only screen and (min-width: 1200px) {
    css...
    當(dāng)設(shè)備寬度  大于  1200px時(shí),執(zhí)行當(dāng)前的css
}
image.png

7.路由常見配置(須知)

//當(dāng)設(shè)置 true 的時(shí)候該路由不會(huì)再側(cè)邊欄出現(xiàn) 如401逊桦,login等頁(yè)面眨猎,或者如一些編輯頁(yè)面/edit/1
hidden: true // (默認(rèn) false)

//當(dāng)設(shè)置 noRedirect 的時(shí)候該路由在面包屑導(dǎo)航中不可被點(diǎn)擊
redirect: 'noRedirect'

//當(dāng)你一個(gè)路由下面的 children 聲明的路由大于1個(gè)時(shí),自動(dòng)會(huì)變成嵌套的模式--如組件頁(yè)面
//只有一個(gè)時(shí)强经,會(huì)將那個(gè)子路由當(dāng)做根路由顯示在側(cè)邊欄--如引導(dǎo)頁(yè)面
//若你想不管路由下面的 children 聲明的個(gè)數(shù)都顯示你的根路由
//你可以設(shè)置 alwaysShow: true宵呛,這樣它就會(huì)忽略之前定義的規(guī)則,一直顯示根路由
alwaysShow: true

name: 'router-name' //設(shè)定路由的名字夕凝,一定要填寫不然使用<keep-alive>時(shí)會(huì)出現(xiàn)各種問(wèn)題
meta: {
  roles: ['admin', 'editor'] //設(shè)置該路由進(jìn)入的權(quán)限宝穗,支持多個(gè)權(quán)限疊加
  title: 'title' //設(shè)置該路由在側(cè)邊欄和面包屑中展示的名字
  icon: 'svg-name' //設(shè)置該路由的圖標(biāo)
  noCache: true //如果設(shè)置為true,則不會(huì)被 <keep-alive> 緩存(默認(rèn) false)
  breadcrumb: false // 如果設(shè)置為false码秉,則不會(huì)在breadcrumb面包屑中顯示
}

如下圖例子:

{
  path: '/permission',
  component: Layout,
  redirect: '/permission/index', //重定向地址逮矛,在面包屑中點(diǎn)擊會(huì)重定向去的地址
  hidden: true, // 不在側(cè)邊欄線上
  alwaysShow: true, //一直顯示根路由
  meta: { roles: ['admin','editor'] }, //你可以在根路由設(shè)置權(quán)限,這樣它下面所以的子路由都繼承了這個(gè)權(quán)限
  children: [{
    path: 'index',
    component: ()=>import('permission/index'),
    name: 'permission',
    meta: {
      title: 'permission',
      icon: 'lock', //圖標(biāo)
      role: ['admin','editor'], //或者你可以給每一個(gè)子路由設(shè)置自己的權(quán)限
      noCache: true // 不會(huì)被 <keep-alive> 緩存
    }
  }]
}

8.去掉vue項(xiàng)目中的#

browserHistory : 似我們通常的頁(yè)面訪問(wèn)路徑转砖,并沒(méi)有 #须鼎,但要通過(guò)服務(wù)端的配置鲸伴,能夠訪問(wèn)指定的 url 都定向到當(dāng)前頁(yè)面,從而能夠進(jìn)行前端的路由管理
hashHistory: 以 # 后面的路徑進(jìn)行處理晋控,通過(guò) HTML 5 History 進(jìn)行前端路由管理

1.配置vue頁(yè)面

default new Router({
  mode: 'history', 
})

2.在nginx中配置

location / {
  try_files $uri $uri/ /index.html;
}
image.png

或者在Apatch配置

IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

8.跨域問(wèn)題解決方法

1.cors

我最推薦的也是我工作中在使用的方式就是: cors 全稱為 Cross Origin Resource Sharing(跨域資源共享)汞窗。
這種方案對(duì)于前端來(lái)說(shuō)沒(méi)有什么工作量,和正常發(fā)送請(qǐng)求寫法上沒(méi)有任何區(qū)別赡译,工作量基本都在后端這里仲吏。
每一次請(qǐng)求,瀏覽器必須先以 OPTIONS 請(qǐng)求方式發(fā)送一個(gè)預(yù)請(qǐng)求(也不是所有請(qǐng)求都會(huì)發(fā)送 options蝌焚,展開介紹 點(diǎn)我)裹唆,通過(guò)預(yù)檢請(qǐng)求從而獲知服務(wù)器端對(duì)跨源請(qǐng)求支持的 HTTP 方法。在確認(rèn)服務(wù)器允許該跨源請(qǐng)求的情況下只洒,再以實(shí)際的 HTTP 請(qǐng)求方法發(fā)送那個(gè)真正的請(qǐng)求许帐。推薦的原因是:只要第一次配好了,之后不管有多少接口和項(xiàng)目復(fù)用就可以了毕谴,一勞永逸的解決了跨域問(wèn)題成畦,而且不管是開發(fā)環(huán)境還是正式環(huán)境都能方便的使用

2.nginx

      upstream local{
          server www.lh.com:2000;
      }

       location /apis {
          proxy_set_header Host $host;
          proxy_set_header   x-forwarded-for  $remote_addr;
          proxy_set_header   X-Real-IP        $remote_addr;
          rewrite  ^.+apis/?(.*)$ /$1 break;  //這個(gè)路徑重寫,千萬(wàn)別忘了
          include  uwsgi_params;
          proxy_pass http://local;
       }

9.解決vue項(xiàng)目打包后部署在二級(jí)目錄涝开,導(dǎo)致靜態(tài)資源相對(duì)引用路徑錯(cuò)誤問(wèn)題

比如 :項(xiàng)目根目錄為http://meeting.333job.com
根目錄下有兩個(gè)文件夾
一個(gè)test(測(cè)試環(huán)境)夾:http://meeting.333job.com/test羡鸥,
一個(gè)prod(正式環(huán)境)文件:http://meeting.333job.com/prod
我的根據(jù)不同環(huán)境打包之后,分別丟進(jìn)對(duì)應(yīng)的文件夾

一般情況下忠寻,我們npm run build打包惧浴,生成的靜態(tài)資源文件,引入路徑,如下圖1所示

圖1

打包后的資源使用了絕對(duì)根目錄路徑奕剃,因此將項(xiàng)目部署到特定目錄比如test文件夾下衷旅,其引入的資源路徑將無(wú)法被正確解析
圖2

解決方法

按照如圖所示,配置build文件夾下面的webpack.base.conf.js


圖3

打包測(cè)試環(huán)境,dist文件中引入靜態(tài)資源路徑也會(huì)發(fā)生改變


圖3

我們運(yùn)行測(cè)試環(huán)境的項(xiàng)目纵朋,加載的資源路徑也會(huì)變成相應(yīng)的路徑


圖4

10.前端設(shè)置withCredentials導(dǎo)致出現(xiàn)跨域報(bào)錯(cuò)

image.png
image.png

11.單獨(dú)修改某個(gè)頁(yè)面的全局樣式

mounted(){
  document.querySelector('.ant-layout-content').setAttribute('style', 'padding-top:0')
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柿顶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子操软,更是在濱河造成了極大的恐慌嘁锯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聂薪,死亡現(xiàn)場(chǎng)離奇詭異家乘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)藏澳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門仁锯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人翔悠,你說(shuō)我怎么就攤上這事业崖∫懊ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵双炕,是天一觀的道長(zhǎng)狞悲。 經(jīng)常有香客問(wèn)我,道長(zhǎng)妇斤,這世上最難降的妖魔是什么摇锋? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮趟济,結(jié)果婚禮上乱投,老公的妹妹穿的比我還像新娘咽笼。我一直安慰自己顷编,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布剑刑。 她就那樣靜靜地躺著媳纬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪施掏。 梳的紋絲不亂的頭發(fā)上钮惠,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音七芭,去河邊找鬼素挽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛狸驳,可吹牛的內(nèi)容都是我干的预明。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼耙箍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼撰糠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辩昆,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阅酪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后汁针,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體术辐,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年施无,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了术吗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帆精,死狀恐怖较屿,靈堂內(nèi)的尸體忽然破棺而出隧魄,到底是詐尸還是另有隱情,我是刑警寧澤隘蝎,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布购啄,位于F島的核電站,受9級(jí)特大地震影響嘱么,放射性物質(zhì)發(fā)生泄漏狮含。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一曼振、第九天 我趴在偏房一處隱蔽的房頂上張望几迄。 院中可真熱鬧,春花似錦冰评、人聲如沸映胁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)解孙。三九已至,卻和暖如春抛人,著一層夾襖步出監(jiān)牢的瞬間弛姜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工妖枚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廷臼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓绝页,卻偏偏與公主長(zhǎng)得像荠商,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抒寂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • ## 框架和庫(kù)的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**结啼。> > 庫(kù)(lib...
    Rui_bdad閱讀 2,890評(píng)論 1 4
  • 響應(yīng)式布局的理解 響應(yīng)式開發(fā)目的是一套代碼可以在多種終端運(yùn)行,適應(yīng)不同屏幕的大小,其原理是運(yùn)用媒體查詢,在不同屏幕...
    懶貓_6500閱讀 780評(píng)論 0 0
  • vue-cli搭建項(xiàng)目 確保安裝了node與npm 再目標(biāo)文件夾下打開終端 執(zhí)行cnpm i vue-cli -g...
    Akiko_秋子閱讀 3,212評(píng)論 1 22
  • 寫在開頭 先說(shuō)說(shuō)為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,273評(píng)論 4 31
  • 偶然得一佳句郊愧,深覺有理深刻,不禁感慨一二: 以前以為堅(jiān)持就是永不動(dòng)搖井佑,現(xiàn)在才明白属铁,堅(jiān)持猶豫著退縮著...
    蘇蘇大哈閱讀 2,359評(píng)論 2 4