掌握多一門技巧,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>
- 對於
- Vue
中未提供別名的鍵,可以使用原始的
key值去綁定,所謂
key值就是
event.key所獲得的值
如果 - key
值是單字母的話直接使用即可,如果是由多個單字組成的駝峰命名,就需要將其拆開,用
-連接
// 只有按下q键时才会执行send方法 <input> // 只有按下capslock键时才会执行send方法 <input>
- 對於系統修飾符
- ctrl
、
alt、
shift這些比較複雜的鍵使用而言,分兩種情況
因為這些鍵可以在按住的同時,去按其他鍵,形成組合快捷鍵 - 當觸發事件為
- keydown
時,我們可以直接按下修飾符即可觸發
當觸發事件為 - keyup
時,按下修飾鍵的同時要按下其他鍵,再釋放其他鍵,事件才能被觸發。
// keydown事件时按下alt键时就会执行send方法 <input> // keyup事件时需要同时按下组合键才会执行send方法 <input>
- 當然我們也可以自訂按鍵別名
- 透過
- Vue.config.keyCodes.自訂鍵名=鍵碼
的方式去進行定義
// 只有按下回车键时才会执行send方法 <input> // 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="/static/imghwm/default1.png" data-src="cover" class="lazy" alt="【整理分享】Vue開發必備的操作技巧,快來收藏吧!" > </viewer> </div> </template> <script> export default { data() { return { cover: "//www.autofelix.com/images/cover.png" } } } </script>
- 多個圖片使用
<template> <div> <viewer> <img src="/static/imghwm/default1.png" data-src="imgSrc" class="lazy" alt="【整理分享】Vue開發必備的操作技巧,快來收藏吧!" > </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>跑馬燈
- 這是一款好玩的特效技巧
- 例如你在機場接人時,可以使用手機跑馬燈特效,成為人群中最靚的仔
- 跑馬燈特效其實就是將最前面的文字刪除,加到最後一個,這樣就形成了文字移動的效果
nbsp;html> <meta> <title>跑马灯</title> <style> #app { padding: 20px; } </style> <div> <button>应援</button> <button>暂停</button> <h3 id="msg">{{ msg }}</h3> </div> <script></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>倒數計時
- 對於倒數計時技巧,應用的地方很多
- 比如很多搶購商品的時候,我們需要有一個倒數計時提醒用戶開搶時間
- 其實就是每隔一秒鐘,去重新計算一下時間,並賦值到
- DOM
中
nbsp;html> <meta> <title>倒计时</title> <div> <div>抢购开始时间:{{count}}</div> </div> <script></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>自訂右鍵選單
- 在專案中,我們有時需要自訂滑鼠右鍵出現的選項,而不是瀏覽器預設的右鍵選項
- 對於如何實作右鍵選單,在
- 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></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> <p>红酥手,黄縢酒,满城春色宫墙柳。</p> <p>东风恶,欢情薄。</p> <p>一怀愁绪,几年离索。</p> <p>错、错、错。</p> <p>春如旧,人空瘦,泪痕红浥鲛绡透。</p> <p>桃花落,闲池阁。</p> <p>山盟虽在,锦书难托。</p> <p>莫、莫、莫!</p> </div> <button>打印</button>JSONP請求
- 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中文網其他相關文章!

Vue.js是前端框架,後端框架用於處理服務器端邏輯。 1)Vue.js專注於構建用戶界面,通過組件化和響應式數據綁定簡化開發。 2)後端框架如Express、Django處理HTTP請求、數據庫操作和業務邏輯,運行在服務器上。

Vue.js與前端技術棧緊密集成,提升開發效率和用戶體驗。 1)構建工具:與Webpack、Rollup集成,實現模塊化開發。 2)狀態管理:與Vuex集成,管理複雜應用狀態。 3)路由:與VueRouter集成,實現單頁面應用路由。 4)CSS預處理器:支持Sass、Less,提升樣式開發效率。

Netflix選擇React來構建其用戶界面,因為React的組件化設計和虛擬DOM機制能夠高效處理複雜界面和頻繁更新。 1)組件化設計讓Netflix將界面分解成可管理的小組件,提高了開發效率和代碼可維護性。 2)虛擬DOM機制通過最小化DOM操作,確保了Netflix用戶界面的流暢性和高性能。

Vue.js被開發者喜愛因為它易於上手且功能強大。 1)其響應式數據綁定係統自動更新視圖。 2)組件系統提高了代碼的可重用性和可維護性。 3)計算屬性和偵聽器增強了代碼的可讀性和性能。 4)使用VueDevtools和檢查控制台錯誤是常見的調試技巧。 5)性能優化包括使用key屬性、計算屬性和keep-alive組件。 6)最佳實踐包括清晰的組件命名、使用單文件組件和合理使用生命週期鉤子。

Vue.js是一個漸進式的JavaScript框架,適用於構建高效、可維護的前端應用。其關鍵特性包括:1.響應式數據綁定,2.組件化開發,3.虛擬DOM。通過這些特性,Vue.js簡化了開發過程,提高了應用性能和可維護性,使其在現代Web開發中備受歡迎。

Vue.js和React各有優劣,選擇取決於項目需求和團隊情況。 1)Vue.js適合小型項目和初學者,因其簡潔和易上手;2)React適用於大型項目和復雜UI,因其豐富的生態系統和組件化設計。

Vue.js通過多種功能提升用戶體驗:1.響應式系統實現數據即時反饋;2.組件化開發提高代碼復用性;3.VueRouter提供平滑導航;4.動態數據綁定和過渡動畫增強交互效果;5.錯誤處理機制確保用戶反饋;6.性能優化和最佳實踐提升應用性能。

Vue.js在Web開發中的角色是作為一個漸進式JavaScript框架,簡化開發過程並提高效率。 1)它通過響應式數據綁定和組件化開發,使開發者能專注於業務邏輯。 2)Vue.js的工作原理依賴於響應式系統和虛擬DOM,優化性能。 3)實際項目中,使用Vuex管理全局狀態和優化數據響應性是常見實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

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

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中