Heim > Web-Frontend > View.js > [Organisation und Teilen] Grundlegende Bedienfähigkeiten für die Vue-Entwicklung, kommen Sie und sammeln Sie sie!

[Organisation und Teilen] Grundlegende Bedienfähigkeiten für die Vue-Entwicklung, kommen Sie und sammeln Sie sie!

青灯夜游
Freigeben: 2022-07-21 20:13:44
nach vorne
1901 Leute haben es durchsucht

Je mehr Fähigkeiten Sie beherrschen, Vue, desto höher wird Ihre Programmiereffizienz sein. Wenn Sie Ihre Arbeit gut machen wollen, müssen Sie zuerst Ihre Werkzeuge schärfen. Dieser Artikel wird Ihnen einige wichtige Vue-Betriebsfähigkeiten vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

[Organisation und Teilen] Grundlegende Bedienfähigkeiten für die Vue-Entwicklung, kommen Sie und sammeln Sie sie!

(Lernvideo-Sharing: vue-Video-Tutorial)

Tastaturereignisse

  • In js binden wir normalerweise ein Ereignis, um den Tastencode zu erhalten, und verwenden dann keyCode im Attribut event, um den zu erhalten Codejs 中我们通常通过绑定一个事件,去获取按键的编码,再通过 event 中的 keyCode 属性去获得编码
  • 如果我们需要实现固定的键才能触发事件时就需要不断的判断,其实很麻烦
let button = document.querySelector('button')

button.onkeyup = function (e) {
    console.log(e.key)
    if (e.keyCode == 13) {
        console.log('我是回车键')
    }
}
Nach dem Login kopieren
  • vue 中给一些常用的按键提供了别名,我们只要在事件后加上响应的别名即可
  • vue 中常见别名有:up/向上箭头down/向下箭头left/左箭头right/右箭头space/空格tab/换行esc/退出enter/回车delete/删除
// 只有按下回车键时才会执行 send 方法
<input v-on:keyup.enter="send" type="text">
Nach dem Login kopieren
  • 对于 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">
Nach dem Login kopieren
  • 对于系统修饰符 ctrlaltshift 这些比较复杂的键使用而言,分两种情况
  • 因为这些键可以在按住的同时,去按其他键,形成组合快捷键
  • 当触发事件为 keydown 时,我们可以直接按下修饰符即可触发
  • 当触发事件为 keyup 时,按下修饰键的同时要按下其他键,再释放其他键,事件才能被触发。
// keydown事件时按下alt键时就会执行send方法
<input v-on:keydown.Alt="send" type="text">

// keyup事件时需要同时按下组合键才会执行send方法
<input v-on:keyup.Alt.y="send" type="text">
Nach dem Login kopieren
  • 当然我们也可以自定义按键别名
  • 通过 Vue.config.keyCodes.自定义键名=键码 的方式去进行定义
// 只有按下回车键时才会执行send方法
<input v-on:keydown.autofelix="send" type="text">
    
// 13是回车键的键码,将他的别名定义为autofelix
Vue.config.keyCodes.autofelix=13
Nach dem Login kopieren

图片预览

  • 在项目中我们经常需要使用到图片预览,viewerjs 是一款非常炫酷的图片预览插件
  • 功能支持包括图片放大、缩小、旋转、拖拽、切换、拉伸等
  • 安装 viewerjs 扩展
npm install viewerjs --save
Nach dem Login kopieren
  • 引入并配置功能
//引入
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, '图片缩放结束');
    }
})
Nach dem Login kopieren
  • 使用图片预览插件
  • 单个图片使用
<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>
Nach dem Login kopieren
  • 多个图片使用
<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>
Nach dem Login kopieren

跑马灯

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

倒计时

  • 对于倒计时技巧,应用的地方很多
  • 比如很多抢购商品的时候,我们需要有一个倒计时提醒用户开抢时间
  • 其实就是每隔一秒钟,去重新计算一下时间,并赋值到 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 + &#39;天&#39; + h + &#39;时&#39; + m + &#39;分&#39; + s + &#39;秒&#39;
            },
            //定时器没过1秒参数减1
            Time() {
                setInterval(() => {
                    this.seconds -= 1
                    this.countDown()
                }, 1000)
            },
        }
    })
</script>

</html>
Nach dem Login kopieren

自定义右键菜单

  • 在项目中,我们有时候需要自定义鼠标右键出现的选项,而不是浏览器默认的右键选项
  • 对于如何实现右键菜单,在 Vue 中其实很简单,只要使用 vue-contextmenujs 插件即可
  • 安装 vue-contextmenujs 插件
npm install vue-contextmenujs
Nach dem Login kopieren
  • 引入
//引入
import Vue from 'vue';
import Contextmenu from "vue-contextmenujs"

Vue.use(Contextmenu);
Nach dem Login kopieren
  • 使用方法
  • 可以使用 <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>
Nach dem Login kopieren

打印功能

  • 对于网页支持打印功能,在很多项目中也比较常见
  • 而 Vue 中使用打印功能,可以使用 vue-print-nb 插件
  • 安装 vue-print-nb 插件
npm install vue-print-nb --save
Nach dem Login kopieren
  • 引入打印服务
import Vue from 'vue'
import Print from 'vue-print-nb'
Vue.use(Print);
Nach dem Login kopieren
  • 使用
  • 使用 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="&#39;#printStart&#39;">打印</button>
Nach dem Login kopieren

JSONP请求

  • jsonp解决跨域 的主要方式之一
  • 所以学会在 vue 中使用 jsonp 其实还是很重要的
  • 安装 jsonp 扩展
npm install vue-jsonp --save-dev
Nach dem Login kopieren
  • 注册服务
// 在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')
Nach dem Login kopieren
  • 使用方法
  • 需要注意的是,在使用 jsonp 请求数据后,回调并不是在 then 中执行
  • 而是在自定义的 callbackName 中执行,并且需要挂载到 window
  • Wenn wir einen festen Schlüssel implementieren müssen, um das Ereignis auszulösen, müssen wir ständig beurteilen, was eigentlich sehr mühsam ist

<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>
Nach dem Login kopieren
vue stellt Aliase für einige häufig verwendete Schlüssel bereit, wir haben gerade Fügen Sie den Antwortalias nach dem Ereignis hinzu. Häufige Aliase in vue sind: oben/oben-Pfeil, unten/unten-Pfeil, links/ Pfeil nach links, Pfeil nach rechts/rechts, Leerzeichen/Leerzeichen, Tab/Zeilenvorschub, esc/Exit code>, <code>enter/Enter, delete/Deleterrreee🎜Für Schlüssel, die in Vue keine Aliase bereitstellen, können Sie die verwenden ursprünglicher key-Wert zum Binden. Der sogenannte key-Wert ist der von event.key erhaltene Wert. code> Wenn der Wert ein einzelner Buchstabe ist, können Sie ihn direkt verwenden. Wenn es sich um einen Kamelnamen handelt, der aus mehreren Wörtern besteht, müssen Sie ihn aufteilen und - verwenden, um 🎜🎜rrreee🎜🎜 zu verbinden Für Systemänderungen Bei der Verwendung komplexerer Tasten wie Strg, Alt und Umschalt gibt es zwei Situationen🎜🎜weil diese Tasten dies können gedrückt und gehalten werden. Drücken Sie gleichzeitig andere Tasten, um eine Tastenkombination zu bilden🎜🎜Wenn das Auslöseereignis keydown ist, können wir den Modifikator direkt drücken, um auszulösen🎜🎜Wenn das Auslöseereignis keyup Wenn Sie die Zusatztaste drücken, müssen Sie gleichzeitig andere Tasten drücken und dann die anderen Tasten loslassen, bevor das Ereignis ausgelöst werden kann. 🎜🎜rrreee🎜🎜Natürlich können wir auch Schlüsselaliase anpassen🎜🎜Über Vue.config.keyCodes, um ihn zu definieren🎜🎜rrreee

Bildvorschau🎜🎜🎜Wir müssen in Projekten häufig die Bildvorschau verwenden. viewerjs ist ein sehr cooles Bildvorschau-Plug-in🎜🎜Die Funktionsunterstützung umfasst Bildvergrößerung, -verkleinerung, Drehen, Ziehen und Wechseln , Dehnen usw. 🎜🎜Installieren Sie die viewerjs-Erweiterung 🎜🎜rrreee🎜🎜Führen Sie die Funktion ein und konfigurieren Sie sie 🎜🎜rrreee🎜🎜Verwenden Sie das Bildvorschau-Plug-in 🎜🎜Für ein einzelnes Bild verwenden🎜🎜rrreee 🎜🎜 Mehrere Bilder verwenden🎜🎜rrreee

Festzelt🎜🎜🎜Dies ist eine unterhaltsame Spezialeffekttechnik🎜🎜Wenn Sie beispielsweise Leute am Flughafen abholen, können Sie das Festzelt verwenden Spezialeffekte auf Ihrem Mobiltelefon, um zum hübschesten Jungen in der Menge zu werden🎜🎜Der Laufschrifteffekt besteht eigentlich darin, den ersten Text zu löschen und ihn zum letzten hinzuzufügen, wodurch der Effekt einer Textbewegung entsteht🎜🎜rrreee

Countdown🎜 🎜🎜Es gibt viele Anwendungen für die Countdown-Technik🎜🎜Wenn zum Beispiel viele Produkte schnell gekauft werden müssen, müssen wir einen Countdown haben, um den Benutzer daran zu erinnern, den Ansturm zu starten🎜🎜In Tatsächlich bedeutet es, die Zeit jede Sekunde neu zu berechnen und sie DOM in 🎜🎜rrreee

Rechtsklickmenü anpassen🎜🎜🎜Im Projekt zuzuweisen , müssen wir manchmal die Optionen anpassen, die mit der rechten Maustaste anstelle der Browser-Standardeinstellung angezeigt werden. Die Rechtsklick-Option🎜🎜Wie man das Rechtsklick-Menü implementiert, ist in Vue eigentlich sehr einfach Verwenden Sie das Plug-in vue-contextmenujs <i class="icon"></i> zum Hinzufügen von Symbolen zu Optionen🎜🎜 Sie können das Tag style verwenden, um den Stil der Option anzupassen 🎜 🎜Sie können das Attribut disabled verwenden, um die Option zu deaktivieren und darauf zu klicken. 🎜🎜Sie können divided:true verwenden, um die Option Unterstreichen festzulegen. 🎜🎜Sie können children verwenden zum Festlegen von Unteroptionen🎜🎜rrreee

Druckfunktion🎜🎜🎜 Unterstützt die Druckfunktion für Webseiten, die auch in vielen Projekten üblich ist🎜 🎜Zur Verwendung der Druckfunktion In Vue können Sie das Plug-in vue-print-nb verwenden🎜🎜Installieren Sie das Plug-in vue-print-nb🎜🎜rrreee🎜🎜Stellen Sie den Druckdienst vor 🎜🎜rrreee 🎜🎜Verwenden🎜🎜Verwenden Sie den Befehl v-print, um die Druckfunktion zu starten🎜🎜rrreee

JSONP-Anfrage🎜🎜🎜jsonp Dies ist eine der Hauptmethoden zur Lösung domänenübergreifender Probleme🎜🎜Daher ist es tatsächlich sehr wichtig zu lernen, wie man jsonp in vue🎜🎜Installieren Sie die <code>jsonp-Erweiterung🎜🎜rrreee🎜🎜Registrierungsdienst🎜🎜rrreee🎜🎜Verwendung🎜🎜Es ist zu beachten, dass nach der Verwendung von jsonp Daten angefordert werden , der Rückruf ist nicht in then 🎜🎜 Stattdessen wird er im benutzerdefinierten <code>callbackName ausgeführt und muss auf dem window-Objekt gemountet werden 🎜🎜 rrreee🎜【Empfehlung für ein entsprechendes Video-Tutorial: 🎜 Vuejs-Einführungs-Tutorial🎜、🎜Erste Schritte mit dem Web-Frontend🎜】🎜

Das obige ist der detaillierte Inhalt von[Organisation und Teilen] Grundlegende Bedienfähigkeiten für die Vue-Entwicklung, kommen Sie und sammeln Sie sie!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
vue
Quelle:juejin.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage