您好,登錄后才能下訂單哦!
今天小編給大家分享一下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> <h4>{{ msg }}</h4> </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);
使用方法
可以使用 <i class="icon"></i>
可以給選項添加圖標
可以使用 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開發必備的操作技巧實例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。