前端小白項目vue h5總結(jié)

前言:我為什么要寫這個筆記,第一是給自己的經(jīng)驗做一個積累,第二是總結(jié)自己遇到的問題,填過的坑以后不要在填哈哈~~~。


項目名稱:遠(yuǎn)程認(rèn)證 開發(fā)工具vscode? ?框架? vue+vant? h5?

第一步:使用vue 腳手架工具 vue-cli 創(chuàng)建項目? 網(wǎng)上有很多教程可以搜。

?1.安裝node.js

?安裝后可以打開cmd 輸入node -v 顯示版本號,說明安裝成功

?2.安裝webpack??

?打開cmd 輸入npm install webpack -g全局安裝

?3.安裝vue-cli?

npm install? vue-cli -g

4.創(chuàng)建項目

vue init webpack (項目名稱)

有點不全,照這個樣子,enter下去就可以創(chuàng)建一個vue項目

5.開發(fā)工具打開,控制臺npm run dev 運行就可以看到以下這個頁面


看到這個頁面表示運行成功

第二步,安裝自己所要用到的插件,ui框架。

1.因為做h5要考慮到自適應(yīng),安裝一個px自動轉(zhuǎn)換成rem 的插件。

2. 下載 npm i lib-flexible --save 在 main.js 引入 import 'lib-flexible/flexible'

3. index.html? 通過meta標(biāo)簽,設(shè)置設(shè)備寬度以及縮放比例? ?<meta name="viewport" content="width=device-width, initial-scale=1.0">

4.npm install px2rem-loader?

在build文件中找到util.js,將px2rem-loader添加到cssLoaders中

const px2remLoader = {

? ? loader: 'px2rem-loader',

? ? options: {

? ? ? remUnit: 37.5

? ? }

? }

在generateLoaders方法中添加px2remLoader

const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader] 這是我項目中的可以拿去替換

這句很重要,不加的話,px轉(zhuǎn)換不了

5.安裝后 可以npm run dev 運行就ok了

?6. 安裝組件庫我這里用到的是vant

?#通過 npm 安裝npm i vant -S

?npm i babel-plugin-import -D? 按需加載


后續(xù)要用到的例如鍵盤、下拉菜單、input,按照官方文檔操作就好了

寫到這里,來說說我遇到的坑

坑1. 關(guān)于input? file 上傳圖片

需要實現(xiàn)的效果是(點擊一張圖片就是我上傳圖片要顯示的位置),要做一個類型判斷,只有類型為true的時候,彈出一個提示框,提示框里面的按鈕,就會拉取文件上傳,當(dāng)?shù)诙蝸韉iv點擊上傳的時候要去掉提示。

首先是樣式,我用的是一個div 包裹著 input 和img 給input設(shè)置定位和寬、高,讓它完全覆蓋掉圖片的位置,再設(shè)置透明度,就OK了。

如果這個時候我只寫input 的change事件的話,就會遇到,提示和判斷都不執(zhí)行,因為input 直接就觸發(fā)了拉取上傳文件的操作,所以我把提示和判斷的事件寫在了外層的div的click上,當(dāng)我點擊div時,就會觸發(fā)直接兩個事件,這樣肯定是不對的,最開始我想的是給div 做 一個默認(rèn)行為的阻止(.prevent),和只能執(zhí)行一次(.once)這樣的話第一次可以達(dá)到效果,但是還存在問題。

解決辦法:給div做事件,在它的事件里面,先做判斷,在做提示,在通過this.$ref去觸發(fā)input的事件,這樣就OK了。

坑2. input file 打開相機和相冊

這樣寫:<input?type="file"?accept="image/png,image/jpeg,image/jpg"? ?capture="camera">

在安卓里只能調(diào)取相冊? ?ios只能調(diào)取相機,為了解決這個問題,我找了好久的解決辦法終于找到了

解決辦法:<input type="file" ref="textfile"? accept="image/*"@change="fileChange" style="opacity: 0;/>就ok了

坑3.input 拍照無法上傳,相冊上傳OK。

又遇到這個問題的時候,我真的是很崩潰了,到處百度,有的說 要壓縮后上傳,但是我問過后臺我是不是要壓縮才能上傳,后臺說不用,百度其余的也沒有說遇到過這個問題,問了朋友 叫我用vant里面的文件上傳,我試了,也是上傳不了,作為一個沒有經(jīng)驗的我,開始慌了,不知道怎么辦了。這個時候我想到會不會是后臺限制了上傳的文件大小。

解決辦法:后臺更改我上傳大小的限制就OK了,如果上傳的太慢,記得做一個加載中的動畫,不要讓用戶覺得無任何響應(yīng)而去一直點。

坑4.鍵盤的定位,遇上樣式兼容

?關(guān)于style樣式: 鍵盤我用的是vant里面的鍵盤,樣式的話,自己修改就可以了,修改組件的樣式時可以重寫一個<style>修改組件的樣式</style>? ?因為<style scoped></style>只能對這個頁面有用對引入的組件是無效的,當(dāng)然<style></style>里在修改樣式會變?yōu)槿?,也就是另一個vue文件里面用的時候會影響樣式。

建議使用<style scoped>? 寫在這里面? 使用 >>> 穿透來修改? ? .包裹組件的div(是你自己寫)>>> .組件的class? ? ? ? ? </style>這樣就OK了,而且另一個頁面使用時候不會有影響,但是如果這個樣式你每個頁面都會用到,建議寫在<style></style>里,這樣就不會寫重復(fù)的樣式了。

關(guān)于鍵盤定位:因為這個定位是組件寫了positon:fixed固定定位所以屏幕太小,或者瀏覽器打開,鍵盤會遮擋你上面的東西,瀏覽器的底部工具欄也會把你的鍵盤往上擠導(dǎo)致樣式與設(shè)計圖不一致。

解決辦法,給頁面高度最外層的div的高度100%改成100vh利用媒體查詢,來設(shè)置css就OK了,具體就要細(xì)調(diào)了。

還有補一個?this.$route.query.name;可以獲取地址帶的參數(shù) 例如:http://.....?id=66;? this.$route.query.id就可以在

created() {

? ?打印? (this.$route.query.id);? 控制臺就可以看見你拿到的id了

? },

坑5.input 單選框,樣式對不齊旁邊的文字,當(dāng)然這個樣式在ios上對齊的時候,安卓上可能對不齊我用的辦法是,我當(dāng)時沒有找到合適的辦法就把input變成div這樣就好調(diào)整啦。

這個項目就告一段落了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容