国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

這篇具有很好參考價值的文章主要介紹了vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

  產(chǎn)品背景介紹

  我所做的這個項目,剛開始是沒有移動端需求的,等PC端做完了上線使用了幾個月后,突然有一天產(chǎn)品經(jīng)理找到我說是要做一個在PC端添加一個快速注冊入口,用手機微信掃二位碼進入移動端注冊頁面,用戶注冊。

所以本次需求就是在PC端添加一個tool-tip氣泡型彈出二維碼,再開發(fā)一個移動端注冊頁面。

  起初我是在PC項目中引入vant新加了一個模塊來存放移動注冊頁面和注冊成功頁面的,然后想使用postcss-px-to-viewport的exclude和include屬性配置來區(qū)分PC和移動頁面,避免樣式干擾。

然而,是我天真了,看網(wǎng)上各種postcss-px-to-viewport的exclude和include的配置,更換各個版本以及相似的更新版本,都不能完美做到兼容移動端和PC端,我就放棄了移動pc放在一個項目中了,最終只能單獨的把移動頁面單獨摘出來成立一個單獨項目跑,坑爹啊。

  1. 表單密碼可見切換以及不讓輸入漢字空格

代碼實現(xiàn):

<van-field
? ? ? ? ? ? ? :required="true"
? ? ? ? ? ? ? v-model="registerForm.password"
? ? ? ? ? ? ? :type="switchPassType ? 'text' : 'password'"
? ? ? ? ? ? ? name="password"
? ? ? ? ? ? ? label="登錄密碼"
? ? ? ? ? ? ? placeholder="請輸入登錄密碼"
? ? ? ? ? ? ? :right-icon="switchPassType ? 'eye' : 'closed-eye'"
? ? ? ? ? ? ? @click-right-icon="switchPassType = !switchPassType"
? ? ? ? ? ? ? :rules="rules.password"
? ? ? ? ? ? ? :update:model-value="registerForm.password=registerForm.password.replace(/[\u4e00-\u9fa5/\s+/]/ig,'')"
? ? ? ? ? ? />
?
備注:密碼這塊雖然有些網(wǎng)上搜到的讓用vant 自帶的digit屬性讓只能輸入數(shù)字,但這個不符合產(chǎn)品需求,密碼應為數(shù)字、字母、特殊符號都可輸入。
使用van-field自帶的update:model-value方法進行漢字、空格校驗,親測有效。
?

  2. 移動端頁面出現(xiàn)X軸滾動條問題

1) 在index.html文件中添加
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover"/>
2) 在公共樣式中修改html、body設置的樣式
html {
? ? overflow-y: scroll;
}

:root {
? ? overflow-y: auto;
? ? overflow-x: hidden;
}

:root body {
? ? position: absolute;
}

body {
? ? width: 100%;
? ? margin: 0;
? ? padding: 0;
? ? overflow: hidden;
}

  3.使用postcss-px-to-viewport做適配出現(xiàn)的問題

使用教程我就不贅述了,網(wǎng)上一大片,說點有用的
1)兼容vant的375設置
在你的vue.config.js文件中添加如下代碼:
css: {
? ? loaderOptions: {
? ? ? postcss: {
? ? ? ? postcssOptions: (loaderContext) => {
? ? ? ? ? return {
? ? ? ? ? ? plugins: [
? ? ? ? ? ? ? ["autoprefixer"],
? ? ? ? ? ? ? // vant px轉(zhuǎn)vw。參坑:單獨寫在postcss.config.js中無法解析vant內(nèi)部樣式
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "postcss-px-to-viewport": {
? ? ? ? ? ? ? ? ? unitToConvert: "px",
? ? ? ? ? ? ? ? ? viewportWidth: loaderContext.resourcePath.includes("vant") ? 375 : 750,
? ? ? ? ? ? ? ? ? // viewportWidth: 750, ?// 視窗的寬度,對應的是我們設計稿的寬度,一般是750
? ? ? ? ? ? ? ? ? // viewportHeight: 1334, // 視窗的高度,根據(jù)750設備的寬度來指定,一般指定1334,也可以不配置
? ? ? ? ? ? ? ? ? unitPrecision: 6, // 指定`px`轉(zhuǎn)換為視窗單位值的小數(shù)位數(shù)
? ? ? ? ? ? ? ? ? propList: ["*"],
? ? ? ? ? ? ? ? ? viewportUnit: "vw", //指定需要轉(zhuǎn)換成的視窗單位,建議使用vw
? ? ? ? ? ? ? ? ? fontViewportUnit: "vw",
? ? ? ? ? ? ? ? ? selectorBlackList: [], // 如['.ignore'], 可以指定不轉(zhuǎn)換為視窗單位的類,可以自定義,可以無限添加,建議定義一至兩個通用的類名
? ? ? ? ? ? ? ? ? minPixelValue: 1, // 小于或等于`1px`不轉(zhuǎn)換為視窗單位,你也可以設置為你想要的值
? ? ? ? ? ? ? ? ? mediaQuery: true, // 允許在媒體查詢中轉(zhuǎn)換`px`
? ? ? ? ? ? ? ? ? exclude: [],
? ? ? ? ? ? ? ? ? landscape: false
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? },
? ? ? ? ? ? ],
? ? ? ? ? };
? ? ? ? },
? ? ? },
? ? },
? }
代碼目錄:

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

?文章來源地址http://www.zghlxwxcb.cn/news/detail-416234.html

備注:其中的exclude屬性不知道樹我本人寫的有問題還是怎么的,想用它處理views目錄下的特定目錄文件總是不生效,include就更別說了,各種版本、各種寫法都換過了沒啥nuan用。

  4.檢測是否是移動端打開跳轉(zhuǎn)不同路由

1)路由處理

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

export const ISMOBILE = function () {

? ? let flag = navigator.userAgent.match(
? ? ? ? /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
? ? );
? ? return flag;
};

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

  5.?DatePicker日期選擇器默認選中當前日期

在這塊有2個坑:

1)它的年份默認最小2013,不能像elementui的日期選擇器一樣自由選擇,所以,使用時你可以使用min-date屬性設置最小年月日。

2)默認選中當前年月日,

currentDate使用計算屬性獲取,
備注:月日不足2位要用0補齊,不然獲取到的當前年月日不對

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

/**獲取當前日期回填 */
const currentDate = computed(() => {
? const nowDate = myDate.toLocaleDateString().split("/");
? if (nowDate[1].length < 2) {
? ? nowDate[1] = "0" + nowDate[1];
? }
? if (nowDate[2].length < 2) {
? ? nowDate[1] = "0" + nowDate[2];
? }
? return nowDate;
});

?  6. 表單校驗添加

1)一定要給van-form中添加ref屬性,在van-field中使用name作為校驗標識,使用rules屬性添加校驗規(guī)則。

備注:想要對一個字段進行不同校驗以及不同提示,只能使用嵌套校驗,對message提示語進行變量賦值。

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

?

?  7.文件上傳預覽刪除

直接上代碼,很明了:

vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄

// 上傳圖片、上傳文件校驗大小和格式
const beforeRead = (file) => {
? const correctFormat = ["jpg", "jpeg", "png", "bmp"];
? const isArray = Object.prototype.toString.call(file) === "[object Array]";
? const isLimit50M = 1024 * 1024 * 6; // 是否大于50M
? if (isArray) {
? ? const sizes = file.map((item) => item.size);
? ? if (sizes.some((item) => item > isLimit50M)) {
? ? ? showNotify({ type: "warning", message: "大小不能超過6M" });
? ? ? return false;
? ? }
? ? const types = file.map(
? ? ? ({ name }) => name.slice(name.lastIndexOf(".") + 1) // 后綴
? ? );
? ? if (!types.every((item) => correctFormat.includes(item))) {
? ? ? showNotify({ type: "warning", message: "請上傳jpg/jpeg/png/bmp" });
? ? ? return false;
? ? }
? } else {
? ? if (file.size > isLimit50M) {
? ? ? showNotify({ type: "warning", message: "大小不能超過6M" });
? ? ? return false;
? ? }
? ? const type = file.name.slice(file.name.lastIndexOf(".") + 1);
? ? if (!correctFormat.includes(type)) {
? ? ? showNotify({ type: "warning", message: "請上傳jpg/jpeg/png/bmp" });
? ? ? return false;
? ? }
? }
? return true;
};

// 文件上傳
const fileUpload = (data, key, id, file) => {
? fileUploadApi(data)
? ? .then((res) => {
? ? ? if (res.status === 1) {
? ? ? ? res.data.key = new Date().getTime();
? ? ? ? res.data.url = res.data.attachPreviewUrl;
? ? ? ? res.data.percent = 100;
? ? ? ? res.data.status = "success";
? ? ? ? res.data.name = res.data.attachSrcName;
? ? ? ? res.data.uid = id;
? ? ? ? registerForm[key] = [];
? ? ? ? registerForm[key].push(res.data);
? ? ? ? file.status = "success";
? ? ? ? showNotify({ type: "success", message: "上傳成功" });
? ? ? ? return true;
? ? ? } else {
? ? ? ? file.status = "failed";
? ? ? ? showNotify({ type: "danger", message: "上傳失敗,請重新上傳" });
? ? ? ? return false;
? ? ? }
? ? })
? ? .catch((err) => {
? ? ? showNotify({ type: "danger", message: err.message });
? ? ? return false;
? ? });
};
/**文件上傳動作 */
const myBeforeRead = (file, field) => {
? if (beforeRead(file)) {
? ? file.status = "uploading";
? ? file.message = "上傳中...";
? ? uploadData.file = file;
? ? uploadData.field = field;
? ? const form = new FormData();
? ? const keys = Object.keys(uploadData);
? ? keys.forEach((key) => {
? ? ? form.append(key, uploadData[key]);
? ? });
? ? // 后臺接口
? ? if (fileUpload(form, uploadData.field, file.lastModified, file)) {
? ? ? return true;
? ? } else {
? ? ? return false;
? ? }
? } else {
? ? return false;
? }
};
/**文件刪除動作 */
const delImg = (file, field) => {
? registerForm[field] = [];
? proxy.$refs.registerFormRef.validate(field);
};

?

到了這里,關(guān)于vue3+vant創(chuàng)建移動端項目,實戰(zhàn)項目常見采坑記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • Vue項目實戰(zhàn)——【基于 Vue3.x + Vant UI】實現(xiàn)一個多功能記賬本(登錄注冊頁面,驗證碼)

    Vue項目實戰(zhàn)——【基于 Vue3.x + Vant UI】實現(xiàn)一個多功能記賬本(登錄注冊頁面,驗證碼)

    系列內(nèi)容 參考鏈接 基于 Vue3.x + Vant UI 的多功能記賬本(一) 項目演示,涉及知識點 基于 Vue3.x + Vant UI 的多功能記賬本(二) 搭建開發(fā)環(huán)境 基于 Vue3.x + Vant UI 的多功能記賬本(三) 開發(fā)導航欄及公共部分 項目演示 Vue3 + Vant UI_多功能記賬本 1、登錄注冊頁面 頁面設計,頁面

    2024年02月03日
    瀏覽(172)
  • Vue項目實戰(zhàn)——【基于 Vue3.x + Vant UI】實現(xiàn)一個多功能記賬本(開發(fā)導航欄及公共部分)

    Vue項目實戰(zhàn)——【基于 Vue3.x + Vant UI】實現(xiàn)一個多功能記賬本(開發(fā)導航欄及公共部分)

    系列內(nèi)容 參考鏈接 基于 Vue3.x + Vant UI 的多功能記賬本(一) 項目演示,涉及知識點 基于 Vue3.x + Vant UI 的多功能記賬本(二) 搭建開發(fā)環(huán)境 Vue3 + Vant UI_多功能記賬本 1、底部導航欄 components 文件夾下,創(chuàng)建 NavBar.vue 組件 NavBar.vue 詳細內(nèi)容請看代碼和注釋 van-tabbar-item 為標簽欄

    2024年02月02日
    瀏覽(95)
  • 【Vue】Vue2創(chuàng)建移動端項目實戰(zhàn)教程,創(chuàng)建移動端項目保姆級教程,設置axios,utils工具包,vue.fonfig.js配置項 (下)

    【Vue】Vue2創(chuàng)建移動端項目實戰(zhàn)教程,創(chuàng)建移動端項目保姆級教程,設置axios,utils工具包,vue.fonfig.js配置項 (下)

    這里是創(chuàng)建移動端項目 【Vue】Vue2.x創(chuàng)建項目全程講解,保姆級教程,手把手教,Vue2怎么創(chuàng)建項目(上) 【Vue】Vue2創(chuàng)建移動端項目實戰(zhàn)教程,創(chuàng)建移動端項目保姆級教程,接上一篇創(chuàng)建Vue2項目(中) 【Vue】Vue2創(chuàng)建移動端項目實戰(zhàn)教程,創(chuàng)建移動端項目保姆級教程,設置ax

    2024年02月13日
    瀏覽(25)
  • vue3+vant+cropper.js實現(xiàn)移動端圖片裁剪功能

    最近做項目中遇到一個需求,需要對海報圖片按照一定的比例進行裁剪并上傳到oss。一開始這個需求思路有兩個,使用canvas原生或者尋找現(xiàn)成的第三方庫,對比了一番覺得canvas實現(xiàn)時間耗費較長,且秉承著不重復造輪子的原則(其實是菜)。 在進行技術(shù)調(diào)研后,決定使用vu

    2024年02月01日
    瀏覽(30)
  • 【Vue H5項目實戰(zhàn)】從0到1的自助點餐系統(tǒng)—— 搭建腳手架(Vue3.2 + Vite + TS + Vant + Pinia + Node.js)

    【Vue H5項目實戰(zhàn)】從0到1的自助點餐系統(tǒng)—— 搭建腳手架(Vue3.2 + Vite + TS + Vant + Pinia + Node.js)

    H5 項目基于 Web 技術(shù),可以在智能手機、平板電腦等移動設備上的瀏覽器中運行,無需下載和安裝任何應用程序,且H5 項目的代碼和資源可以集中在服務器端進行管理,只需更新服務器上的代碼,即可讓所有顧客訪問到最新的系統(tǒng)版本。 本系列將以肯德基自助點餐頁面為模板

    2024年02月13日
    瀏覽(133)
  • 個人博客-SpringBoot+Vue3項目實戰(zhàn)(3)Springboot+Mybatis創(chuàng)建后端項目

    個人博客-SpringBoot+Vue3項目實戰(zhàn)(3)Springboot+Mybatis創(chuàng)建后端項目

    ?????? 大家好,我是搞前端的半夏 ??,一個熱愛寫文的前端工程師 ??. 如果喜歡我的文章,可以關(guān)注 ? 點贊 ?? 一起學習交流前端,成為更優(yōu)秀的工程師~ 更多故事—點我探索新世界! ?????? 本專欄以搭建一個個人博客為目標,從前后端開發(fā)的開發(fā),云服務的配置

    2023年04月10日
    瀏覽(27)
  • Vant簡介及創(chuàng)建Vue項目并使用Vant

    Vant簡介及創(chuàng)建Vue項目并使用Vant

    ???????????????????????????????????? 文檔網(wǎng)站(國內(nèi)) ?? 文檔網(wǎng)站(GitHub) Vant 是一個輕量、可定制的移動端組件庫,于 2017 年開源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社區(qū)團隊維護React 版本和支付寶小程序版本。 ?? 性

    2024年02月04日
    瀏覽(22)
  • vue3+vite+vant4手機端項目實錄

    vue3+vite+vant4手機端項目實錄

    目錄 一、項目介紹 二、項目的搭建 1.vite的安裝 2.啟動vite項目 ?3.vant4的引入與使用 3.1安裝指令 npm i vant 3.2引入vant4 4.路由router的引入 4.1安裝指令 4.2路由配置 5.路徑別名設置 6.json-server 6.1json-server安裝 6.2json-server啟動項配置 6.3啟動命令:npm run mock 7.axios請求數(shù)據(jù) 7.1安裝axios依

    2024年02月03日
    瀏覽(96)
  • uniapp+vue3項目中使用vant-weapp

    uniapp+vue3項目中使用vant-weapp

    創(chuàng)建項目 通過vue-cli命令行創(chuàng)建項目 Vue3/Vite版要求 node 版本 ^14.18.0 || =16.0.0 uni-app官網(wǎng) (dcloud.net.cn) 打開項目 點擊頂部菜單欄終端/新建終端 執(zhí)行安裝依賴指令 安裝vant-weapp 引入vant-weapp 在? /src目錄下 創(chuàng)建? wxcomponents ?目錄 復制node_modules/@vant/weapp/dist文件夾到 wxcomponents文件夾

    2024年02月13日
    瀏覽(780)
  • vue3+vant自動導入+pina+vite+js+pnpm搭建項目框架

    要搭建一個使用Vue 3、Vant組件庫、Pina狀態(tài)管理、Vite作為構(gòu)建工具、JavaScript語言、pnpm作為包管理工具的項目框架,可以按照以下步驟進行操作: 這將生成一個 package.json 文件。 至此,你已經(jīng)搭建好了一個使用Vue 3、Vant組件庫、Pina狀態(tài)管理、Vite作為構(gòu)建工具、JavaScript語言、

    2024年04月14日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包