>首页> IT >

世界消息!【整理分享】Vue开发必备的操作技巧,快来收藏吧!

时间:2022-07-21 20:57:04       来源:转载
掌握多一门技巧,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 方法
对于 Vue中未提供别名的键,可以使用原始的 key值去绑定,所谓 key值就是 event.key所获得的值如果 key值是单个字母的话直接使用即可,如果是由多个单词组成的驼峰命名,就需要将其拆开,用 -连接
// 只有按下q键时才会执行send方法// 只有按下capslock键时才会执行send方法
对于系统修饰符 ctrlaltshift这些比较复杂的键使用而言,分两种情况因为这些键可以在按住的同时,去按其他键,形成组合快捷键当触发事件为 keydown时,我们可以直接按下修饰符即可触发当触发事件为 keyup时,按下修饰键的同时要按下其他键,再释放其他键,事件才能被触发。
// keydown事件时按下alt键时就会执行send方法// keyup事件时需要同时按下组合键才会执行send方法
当然我们也可以自定义按键别名通过 Vue.config.keyCodes.自定义键名=键码的方式去进行定义
// 只有按下回车键时才会执行send方法    // 13是回车键的键码,将他的别名定义为autofelixVue.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, "图片缩放结束");    }})
使用图片预览插件单个图片使用
 <script>export default {  data() {    return {      cover: "//www.autofelix.com/images/cover.png"    }  }}</script>
多个图片使用
 <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>

跑马灯

这是一款好玩的特效技巧比如你在机场接人时,可以使用手机跑马灯特效,成为人群中最靓的仔跑马灯特效其实就是将最前面的文字删除,添加到最后一个,这样就形成了文字移动的效果
        跑马灯        

{{ msg }}

<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>

倒计时

对于倒计时技巧,应用的地方很多比如很多抢购商品的时候,我们需要有一个倒计时提醒用户开抢时间其实就是每隔一秒钟,去重新计算一下时间,并赋值到 DOM
        倒计时    
抢购开始时间:{{count}}
<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>

自定义右键菜单

在项目中,我们有时候需要自定义鼠标右键出现的选项,而不是浏览器默认的右键选项对于如何实现右键菜单,在 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设置子选项
<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指令即可启动打印功能

红酥手,黄縢酒,满城春色宫墙柳。

东风恶,欢情薄。

一怀愁绪,几年离索。

错、错、错。

春如旧,人空瘦,泪痕红浥鲛绡透。

桃花落,闲池阁。

山盟虽在,锦书难托。

莫、莫、莫!

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>

【相关视频教程推荐:vuejs入门教程、web前端入门】

以上就是【整理分享】Vue开发必备的操作技巧,快来收藏吧!的详细内容,更多请关注php中文网其它相关文章!

关键词: 可以使用 触发事件 右键菜单