想知道如何在Vue3中使用这些东西吗,其实只需要.....

Vue2 与vue3 最大的区别是vue2使用选项类型api,对比vue3合成型api。
旧得选项型api在代码里分割了不同得属性:data,computed,methods等;
新得合成型api能让我们使用方法来分割,相比于旧的API使用属性来分组,这样代码会更加简便和整洁。

想学习更多,请关注个人微信GZH:Magic全靠想象

1、vue3中是setup()方法

  1. 在vue2.x的版本中,主要是使用data()来存放数据,method()来存放方法
<script>
    export default {
        data(){
            return {
                data1:value
            }
        },
        method:{
            m1(){
                return value;
            }
        }
    }
</script>
  1. 在vue3.x的版本中,使用了setup()方法来代替vue2.x中的data()和method()方法
<script>
    import {ref} from 'vue'
    export default {
        setup(){
            // 给变量赋初始值
            let data1 = value.ref();
            // 单个方法
            let m1 = ()=>{
                return value;
            }
            // 不论是方法,还是变量,都需要return才可以在html中使用
            return {
                data1,m1
            }
        }
    }
</script>
  1. 也可以将上面的方法封装起来

封装出来的方法也需要将变量进行return,并且要在setup中进行接收,然后再在setup中进行return才可以使用


<script>
    import {ref} from 'vue';
	// 对特定的方法或者变量进行封装
	const packMethod = ()=>{
        // 单个方法
        let m1 = ()=>{
            return value;
        }
        // 这里同样需要返回方法,或者变量
        return {
            m1
        }
    }
    export default {
        setup(){
            // 给变量赋初始值
            let data1 = value.ref(),{m1} = packMethod();
            
            // 不论是方法,还是变量,都需要return才可以在html中使用,包括装返回的变量和方法
            return {
                data1,m1
            }
        }
    }
</script>

2、vue3中slot具名插槽的使用方法

vue3.x中的插槽与vue2.x中的有两个不同,默认的插槽可以和2.x中一样使用

1、父组件中使用组件指定插槽由 slot=“插槽名称” ----> v-slot:插槽名称

2、在指定标签外面需要包裹一对template标签

3、v-slot:插槽名称需要在template中使用

// 组件代码  组件名称:child
<template>
    <div class="child">
    	<slot name="child_slot"></slot>
    </div>
</template>
<script>
	export default {

	}
</script>
// 引用组件的代码
<template>
	<div class="parent">
        <child>
        	<!--使用teplate来包裹,每一个插槽都需要使用-->
        	<template v-slot:child_slot>
        		<span>我是组件插槽</span>
        	</template>
        </child>
    	
    </div>
</template>
<script> 
	export default {
		components:{
            // 引入组件
            child
        }
	}
</script>

3、vue3中store和router的导入和使用

在vue2.x中可以直接使用 . r o u t e r 或者 .router或者 .router或者.store来获取vuex和router的信息数据

vue3.x中需要直接引入相关方法,并且通过userStore()和userRouter()来使用

1、使用vuex:

import {useStore} from 'vuex';
let store = useStore();

2、使用router:

import {useRouter} from 'vue-router';
let router = useRouter();

4、vue3中router-view的使用

在vue3.x中,修改了transition和keep-alive的使用规则

需要改成下面这样,不允许transition和keep-alive包裹router-view,

<router-view v-slot="{ Component }">
  <transition>
    <component :is="Component" />
  </transition>
</router-view>

以下代码可以直接使用,直接代替原来的<router-view / >

<router-view v-slot="{ Component }">
  <keep-alive>
    <component :is="Component" />
  </keep-alive>
</router-view>

但是在进行路由跳转的时候,会有一个页面同时出现两个router-view的情况,需要在transition标签中添加mode

mode:

xxxxxxxxxx /** * @param {Object} th this * @param {Object} msg 显示内容 * @param {Object} time 显示时间 /export function comitLayer(th,msg,time){ th.KaTeX parse error: Expected '}', got 'EOF' at end of input: …ut(()=>{ th.store.commit(“updateLayer”,{layerFlag:false}) },th.$store.state.layer.time1000)}javascript

2、in-out:先进入后离开

5、vue3中使用highlight.js代码块

通过npm下载highlight.js

npm install --save highlight.js
npm install --save @highlightjs/vue-plugin

在main.js中引入

# --- 文件src/main.ts | src/main.js 
# highlight 的样式,依赖包,组件
import 'highlight.js/styles/atom-one-dark.css'
import 'highlight.js/lib/common'
import hljsVuePlugin from '@highlightjs/vue-plugin'

import { computed, createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)

// 引入代码高亮,并进行全局注册
app.use(hljsVuePlugin)
app.mount('#app')

页面中使用

<!-- 把数据绑定到 `code` 属性-->
<highlightjs autodetect :code="code" />
<!--或者直接将显示的代码写到 `code`中 -->
<highlightjs language='javascript' code="var x = 5;" />

6、在Vue3中使用v-md-editor

下载相关模块

npm i @kangc/v-md-editor@next -S

在main.js中引入,使用代码块之前需要引入highlight,需要先安装highlight模块

// 引入hightlight高亮代码的所有语言
import hljs from 'highlight.js';
// markDown编辑器导入
import VMdEditor from '@kangc/v-md-editor';
import '@kangc/v-md-editor/lib/style/base-editor.css';
// github主题
import githubTheme from '@kangc/v-md-editor/lib/theme/github.js';
import '@kangc/v-md-editor/lib/theme/style/github.css';

VMdEditor.use(githubTheme, {
    Hljs: hljs,
});
app.use(VMdEditor);

自定义工具栏的默认值

左侧工具栏
默认值: undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save
名称            说明
undo            撤销
redo            重做
clear           清空
h               标题
bold            粗体
italic          斜体
strikethrough   中划线
quote           引用
ul              无序列表
ol              有序列表
table           表格
hr              分割线
link            链接
image           插入图片
code            代码块
save            保存,点击后触发save事件

右侧工具栏
默认值: preview toc sync-scroll fullscreen
名称            说明
preview         预览
toc             目录导航
sync-scroll     同步滚动
fullscreen      全屏

使用示例

<v-md-editor
            v-model="text"
            placeholder="请使用markdown语法..."
            :height="editor_height"
            left-toolbar="undo redo | h bold table quote clear | save | link code"
            :toolbar="toolbar"
        ></v-md-editor>
<script>
import {ref,onMounted,watch} from 'vue';
export default {
    name:'markDown',
    setup(props){
        let text = ref('');
        watch(()=>props.text,(val)=>{
            text.value = val;
        })
        // markDown工具栏
        let toolbar = {
            save:{
                title:'保存',
                icon: 'v-md-icon-save',
                action(editor){
                    props.saveFun();
                }
            }
        }
        return {
            text,toolbar
        }
    }
}
</script>

7.在vue3中使用v-md-editor的预览

model-value:markdown格式文本

mode:preview预览模式

<v-md-editor v-if="data.length > 0" :model-value="value" mode="preview"></v-md-editor>
想学习更多,请关注个人微信GZH:Magic全靠想象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值