【整理分享】Vue開發必備的操作技巧,快來收藏吧!
掌握多一門技巧,Vue 程式效率就高一分,工欲善其事,必先利其器。這篇文章為大家整理分享一些必備Vue 的操作技巧,希望對大家有幫助!
(學習影片分享:vue影片教學)
鍵盤事件
- 在
js
中我們通常透過綁定一個事件,去取得按鍵的編碼,再透過event
中的keyCode
屬性去獲得編碼 - 如果我們需要實作固定的鍵才能觸發事件時就需要不斷的判斷,其實很麻煩
let button = document.querySelector('button') button.onkeyup = function (e) { console.log(e.key) if (e.keyCode == 13) { console.log('我是回车键') } }
-
#vue
中給一些常用的按鍵提供了別名,我們只要在事件後面加上回應的別名即可 -
vue
中常見別名有:up/向上箭頭
、down/向下箭頭
、left/左箭頭
、right/右箭頭
、space/空格
、tab/換行
、esc/退出
、enter/回車
、delete/刪除
##
// 只有按下回车键时才会执行 send 方法 <input v-on:keyup.enter="send" type="text">
- 對於
- Vue
中未提供別名的鍵,可以使用原始的
key值去綁定,所謂
key值就是
event.key所獲得的值
如果 - key
值是單字母的話直接使用即可,如果是由多個單字組成的駝峰命名,就需要將其拆開,用
-連接
// 只有按下q键时才会执行send方法 <input v-on:keyup.Q="send" type="text"> // 只有按下capslock键时才会执行send方法 <input v-on:keyup.caps-lock="send" type="text">
- 對於系統修飾符
- ctrl
、
alt、
shift這些比較複雜的鍵使用而言,分兩種情況
因為這些鍵可以在按住的同時,去按其他鍵,形成組合快捷鍵 - 當觸發事件為
- keydown
時,我們可以直接按下修飾符即可觸發
當觸發事件為 - keyup
時,按下修飾鍵的同時要按下其他鍵,再釋放其他鍵,事件才能被觸發。
// keydown事件时按下alt键时就会执行send方法 <input v-on:keydown.Alt="send" type="text"> // keyup事件时需要同时按下组合键才会执行send方法 <input v-on:keyup.Alt.y="send" type="text">
- 當然我們也可以自訂按鍵別名
- 透過
- Vue.config.keyCodes.自訂鍵名=鍵碼
的方式去進行定義
// 只有按下回车键时才会执行send方法 <input v-on:keydown.autofelix="send" type="text"> // 13是回车键的键码,将他的别名定义为autofelix Vue.config.keyCodes.autofelix=13
- 在專案中我們經常需要使用到圖片預覽,
- viewerjs
是一款非常酷的圖片預覽外掛程式
功能支援包括圖片放大、縮小、旋轉、拖曳、切換、拉伸等 - #安裝
- viewerjs
擴充功能
npm install viewerjs --save
- 引入並配置功能
//引入 import Vue from 'vue'; import 'viewerjs/dist/viewer.css'; import Viewer from 'v-viewer'; //按需引入 Vue.use(Viewer); Viewer.setDefaults({ 'inline': true, 'button': true, //右上角按钮 "navbar": true, //底部缩略图 "title": true, //当前图片标题 "toolbar": true, //底部工具栏 "tooltip": true, //显示缩放百分比 "movable": true, //是否可以移动 "zoomable": true, //是否可以缩放 "rotatable": true, //是否可旋转 "scalable": true, //是否可翻转 "transition": true, //使用 CSS3 过度 "fullscreen": true, //播放时是否全屏 "keyboard": true, //是否支持键盘 "url": "data-source", ready: function (e) { console.log(e.type, '组件以初始化'); }, show: function (e) { console.log(e.type, '图片显示开始'); }, shown: function (e) { console.log(e.type, '图片显示结束'); }, hide: function (e) { console.log(e.type, '图片隐藏完成'); }, hidden: function (e) { console.log(e.type, '图片隐藏结束'); }, view: function (e) { console.log(e.type, '视图开始'); }, viewed: function (e) { console.log(e.type, '视图结束'); // 索引为 1 的图片旋转20度 if (e.detail.index === 1) { this.viewer.rotate(20); } }, zoom: function (e) { console.log(e.type, '图片缩放开始'); }, zoomed: function (e) { console.log(e.type, '图片缩放结束'); } })
- 使用圖片預覽外掛程式
- 單一圖片使用
<template> <div> <viewer> <img :src="cover" style="cursor: pointer;" height="80px"> </viewer> </div> </template> <script> export default { data() { return { cover: "//www.autofelix.com/images/cover.png" } } } </script>
- 多個圖片使用
<template> <div> <viewer :images="imgList"> <img v-for="(imgSrc, index) in imgList" :key="index" :src="imgSrc" /> </viewer> </div> </template> <script> export default { data() { return { imgList: [ "//www.autofelix.com/images/pic_1.png", "//www.autofelix.com/images/pic_2.png", "//www.autofelix.com/images/pic_3.png", "//www.autofelix.com/images/pic_4.png", "//www.autofelix.com/images/pic_5.png" ] } } } </script>
- 這是一款好玩的特效技巧
- 例如你在機場接人時,可以使用手機跑馬燈特效,成為人群中最靚的仔
- 跑馬燈特效其實就是將最前面的文字刪除,加到最後一個,這樣就形成了文字移動的效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>跑马灯</title> <style type="text/css"> #app { padding: 20px; } </style> </head> <body> <div id="app"> <button @click="run">应援</button> <button @click="stop">暂停</button> <h3>{{ msg }}</h3> </div> </body> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.0/dist/vue.min.js"></script> <script> new Vue({ el: "#app", data: { msg: "飞兔小哥,飞兔小哥,我爱飞兔小哥~~~", timer: null // 定时器 }, methods: { run() { // 如果timer已经赋值就返回 if (this.timer) return; this.timer = setInterval(() => { // msg分割为数组 var arr = this.msg.split(''); // shift删除并返回删除的那个,push添加到最后 // 把数组第一个元素放入到最后面 arr.push(arr.shift()); // arr.join('')吧数组连接为字符串复制给msg this.msg = arr.join(''); }, 100) }, stop() { //清除定时器 clearInterval(this.timer); //清除定时器之后,需要重新将定时器置为null this.timer = null; } } }) </script> </html>
- 對於倒數計時技巧,應用的地方很多
- 比如很多搶購商品的時候,我們需要有一個倒數計時提醒用戶開搶時間
- 其實就是每隔一秒鐘,去重新計算一下時間,並賦值到
- DOM
中
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>倒计时</title> </head> <body> <div id="app"> <div>抢购开始时间:{{count}}</div> </div> </body> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.0/dist/vue.min.js"></script> <script> new Vue({ el: "#app", data() { return { count: '', //倒计时 seconds: 864000 // 10天的秒数 } }, mounted() { this.Time() //调用定时器 }, methods: { // 天 时 分 秒 格式化函数 countDown() { let d = parseInt(this.seconds / (24 * 60 * 60)) d = d < 10 ? "0" + d : d let h = parseInt(this.seconds / (60 * 60) % 24); h = h < 10 ? "0" + h : h let m = parseInt(this.seconds / 60 % 60); m = m < 10 ? "0" + m : m let s = parseInt(this.seconds % 60); s = s < 10 ? "0" + s : s this.count = d + '天' + h + '时' + m + '分' + s + '秒' }, //定时器没过1秒参数减1 Time() { setInterval(() => { this.seconds -= 1 this.countDown() }, 1000) }, } }) </script> </html>
- 在專案中,我們有時需要自訂滑鼠右鍵出現的選項,而不是瀏覽器預設的右鍵選項
- 對於如何實作右鍵選單,在
- Vue
中其實很簡單,只要使用
vue-contextmenujs外掛程式即可
安裝 - vue-contextmenujs
外掛程式
npm install vue-contextmenujs
- 引入
//引入 import Vue from 'vue'; import Contextmenu from "vue-contextmenujs" Vue.use(Contextmenu);
- #使用方法
- 可以使用
可以為選項新增圖示
可以使用- style
標籤自訂選項的樣式
可以使用 - disabled
屬性禁止選項可以點選
可以使用 - divided:true
設定選項的底線
可以使用 - children
設定子選項
<style> .custom-class .menu_item__available:hover, .custom-class .menu_item_expand { background: lightblue !important; color: #e65a65 !important; } </style> <template> <div style="width:100vw;height:100vh" @contextmenu.prevent="onContextmenu"></div> </template> <script> import Vue from 'vue' import Contextmenu from "vue-contextmenujs" Vue.use(Contextmenu); export default { methods: { onContextmenu(event) { this.$contextmenu({ items: [ { label: "返回", onClick: () => { // 添加点击事件后的自定义逻辑 } }, { label: "前进", disabled: true }, { label: "重载", divided: true, icon: "el-icon-refresh" }, { label: "打印", icon: "el-icon-printer" }, { label: "翻译", divided: true, minWidth: 0, children: [{ label: "翻译成中文" }, { label: "翻译成英文" }] }, { label: "截图", minWidth: 0, children: [ { label: "截取部分", onClick: () => { // 添加点击事件后的自定义逻辑 } }, { label: "截取全屏" } ] } ], event, // 鼠标事件信息 customClass: "custom-class", // 自定义菜单 class zIndex: 3, // 菜单样式 z-index minWidth: 230 // 主菜单最小宽度 }); return false; } } }; </script>
- 對於網頁支援列印功能,在許多專案中也較常見
- 而Vue 中使用列印功能,可以使用
- vue-print-nb
外掛程式
安裝 - vue-print-nb
外掛程式
npm install vue-print-nb --save
- 引入列印服務
import Vue from 'vue' import Print from 'vue-print-nb' Vue.use(Print);
- 使用
- 使用
- v-print
指令即可啟動列印功能
<div id="printStart"> <p>红酥手,黄縢酒,满城春色宫墙柳。</p> <p>东风恶,欢情薄。</p> <p>一怀愁绪,几年离索。</p> <p>错、错、错。</p> <p>春如旧,人空瘦,泪痕红浥鲛绡透。</p> <p>桃花落,闲池阁。</p> <p>山盟虽在,锦书难托。</p> <p>莫、莫、莫!</p> </div> <button v-print="'#printStart'">打印</button>
- jsonp
是
解決跨域的主要方式之一
所以學會在 - vue
中使用
jsonp其實還是很重要的
#安裝 - jsonp
擴充功能
npm install vue-jsonp --save-dev
- #註冊服務
// 在vue2中注册服务 import Vue from 'vue' import VueJsonp from 'vue-jsonp' Vue.use(VueJsonp) // 在vue3中注册服务 import { createApp } from 'vue' import App from './App.vue' import VueJsonp from 'vue-jsonp' createApp(App).use(VueJsonp).mount('#app')
- 使用方法
- 需要注意的是,在使用
- jsonp
請求資料後,回呼並不是在
then中執行
而是在自訂的 - callbackName
中執行,並且需要掛載到
window物件上
<script> export default { data() {...}, created() { this.getUserInfo() }, mounted() { window.jsonpCallback = (data) => { // 返回后回调 console.log(data) } }, methods: { getUserInfo() { this.$jsonp(this.url, { callbackQuery: "callbackParam", callbackName: "jsonpCallback" }) .then((json) => { // 返回的jsonp数据不会放这里,而是在 window.jsonpCallback console.log(json) }) } } } </script>
以上是【整理分享】Vue開發必備的操作技巧,快來收藏吧!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 <script> 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 <router-link to="/"> 組件window.history.back(),方法選擇取決於場景。

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。
