import是引进外部函数吗_vue3已正式发布,你学了吗

慌慌张张,匆匆忙忙,vue2还没用好,vue3就来了????真的学不动了.......嘴上说着学不动,只见有的人在偷偷的在学习,我也利用假期看了看vue3...,倒吸一口气,还好差别并不是很大。别问我什么原理,底层东西¥%¥%¥%#$#$%#$%,我不懂,直接干vue3的安装
  • 安装vue脚手架

需要node的版本8.9或者更高的版本
npm install -g @vue/cli
  • 创建vue项目

(1)创建vue3-demo项目(第一种方式)
vue create vue3-demo
然后选择vue3的版本即可(2)创建vue3-test项目(第二种方式)先命名好vue项目的名称比如命名为vue3-test,然后cmd进入该文件夹,然后输入
vue create .
这样就可以创建一个名为vue3-test的vue项目了

vue2和vue3结构上的区别

  • vue2.0 基本结构

export default {    data() {        return {}    },    // computed    computed: {},    //生命钩子    mounted() {},    // methods    methods: {},};script>
  • vue3.0基本结构

<script>import { reactive, toRefs, computed, ref, onMounted } from 'vue';export default {      setup(){          const data = reactive({              list:[],              title:"hi~ vue3.0"          })        cosnt num = ref(0)        // 生命钩子        onMounted(()=>{})        //  computed        const Count = computed(()=>{}),        // methods        const method = ()=>{}        return {            ...toRefs(data),            Count,            // 方法视情况而定 组件中有使用才return            method         }      }};script>

有看什么之所以然来吗,首先我们可以看到了在vue2中data,computed,methods,mounted都是分割成了不同的属性,但在vue3中用方法(function)进行来分割,更加接近了JS的方法的调用,可以在另一个方法中直接调用,不用像vue2.0那样使用this去调用。

关于vue3的写法

  • 按需引入

将需要的方法我们才会引进来,不需要则不引进

import { reactive, toRefs, computed, ref, onMounted } from 'vue';
  • setup()方法

在vue3中我们全新的使用一个新的setup()方法,在组件初始化构造函数的时候触发,需要vue3中的reactive(),这个方法声明我们的数据为反应性数据,reactive()方法有点类似vue2中的data

使用setup()方法return我们的反应性数据,那为什么要用...toRefs(data)对它进行解构呢?只是为了能向vue2一样能更加简洁的方式渲染

放片段代码就知道了

//setup()return{data}//template
{{data.title}}
// 使用...toRefsreturn{...toRefs(data)}//template
{{title}}
  • methods写法

在vue3中我们直接在setup()创建方法,然后return,在组件中就可以触发到该方法了

 // template "submit">提交  // script  export default {      setup(){        // methods        const submit = ()=>{            // 提交方法        }        return {            // 返回            submit        }      }};
  • 计算属性computed写法

我们需要在vue中引入computed方法,然后也是在setup()方法中声明变量,然后返回,举个例子返回数组的length

 // template 
{{listLength}}</div>  //  script import { computed} from 'vue'; export default { setup() { const data = reactive({ list: [{ id: 1, title: "hi~,vue1.0" }, { id: 2, title: "hi~,vue2.0" }, { id: 3, title: "hi~,vue2.0" } ] })        //  methods const submit = () => {            //  提交方法 }        //  computed const listLength = computed(() => { return data.list.length            }), return { listLength, submit } }};生命周期钩子

生命周期函数写法也是写在setup方法里面

  // script  import { onMounted} from 'vue';  export default {      setup(){      // 页面加载完成执行      onMounted(()=>{        // 执行submit方法        submit()      })        // methods        const submit = ()=>{            // 提交方法        }        return {            // 返回            submit        }      }};
接收props和自定义事件emit

在vue3中没有了this,那怎么在script接收怎么获取props的值呢??哈哈不着急,原来在我们一直提到的setup()方法中,我们可以接收两个参数setup(props,context)

props-不可变的组件参数

context-vue3暴露出来的属性(emit,slots,attrs)

直接上码

 @click=import { ref } from 'vue';export default {  props: {    item: {      type: Object    }  },  setup(props,context) {    //  获取props值    const getPropItem = ref(props.item);    const resource = ""       const submitFrom = ()=>{        //   自定义事件        context.emit("onSubmitFrom",getPropItem)       }    return {         submitFrom    };  }};script>

在vue3使用vue-router

在vue3中使用vue-router,值得注意一点就是 我们使用npm下载下来的默认是vue-router@3+的版本,但是在vue3中我们使用的vue-router版本是4+,所以需要这么下载

npm install vue-router@next --save

这样我们下载下来的vue-router就是版本4以上了

(1) vue2中使用路由

在vue2中我们在router.js,将路由通过vue.use()全局注入vue中

// router.jsimport Vue from 'vue';import Router from 'vue-router';Vue.use(Router);const routes = [    { path: "/", name: 'base', component: ResourceHome },]// 创建路由实例let router = new Router({    routes,    mode: 'history', //去掉url#});// 导出export default router;

在mian.js中,在vue实例化中放入router.js,在vue项目中我们就可以使用this.$router去进行路由的操作

import router from './router.js';new Vue({    router, //实例化,表示会使用    render: (h) => h(App)}).$mount('#app');
(2)在vue2中router和route

使用this.$router完成路由的跳转   

this.$router.push('/index')

使用this.$route获取路由的信息

获取当前路由id:this.$route.params.id

获取当前路由地址:this.$route.path

获取当前hash地址:location.hash

获取当前路由params参数:his.$route.params.from

获取当前路由query参数:this.$route.query.from

返回上个页面:this.$router.go(-1)

(3)在vue3中使用vue-router

在vue3中使用vue-router更加简洁方便

// router.jsimport { createRouter, createWebHistory } from 'vue-router'import ResourceHome from '@/views/ResourceHome'const routes = [    { path: "/", name: 'base', component: ResourceHome },]const router = createRouter({    history: createWebHistory(), //去掉#号    routes,    linkActiveClass: 'active' //高亮})export default router // main.jsimport { createApp } from 'vue'import App from './App.vue'import router from './router'const app = createApp(App)app.use(router)app.mount('#app')

在组件中使用useRouter,useRoute 完成路由跳转和获取路由信息的方式

import { useRouter,useRoute } from 'vue-router';// script  export default {  // 路由跳转    const router = useRouter();    // 路由信息    const route = useRoute();    const id = ref(route.params.id)     setup(){    // 页面加载完成执行    onMounted(()=>{      // 执行submit方法      submit()    })      // methods      const submit = ()=>{          // 提交方法          // 跳转          router.push('/index');      }      return {          // 返回          submit      }    }};script>

基本上对vue3的了解就到此,学会了基本可以在项目中应用了,但还有一些高级的玩法,vue2复用代码用了minixs和slot,在vue3是怎么复用代码的呢,一起去学习吧!!!!

今天就先到这了,祝大家假期愉快!!!

越来越多的人告诉你,认真你就输了,因为他们想让你和他一样

可是认真你就真的输了吗,每个被世界嘲弃过的人,都假装玩世不恭,而你要告诉你自己,不要装逼,认真,努力。

今儿就说到这啦,若文章表述的观点和内容引起不适,随意吐槽哈哈哈哈~~

觉得不错可关注微信公众号哦

e384dc6e417623d6c95d943bf03723bc.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aoa定位算法matlab仿真,基于信号到达角度(AOA)的定位算法研究

内容摘要&#xff1a;基于信号到达角度(AOA)的定位算法是一种常见的无线传感器网络节点自定位算法&#xff0c;算法通信开销低&#xff0c;定位精度较高。由于各种原因&#xff0c;估测的多个节点位置可能存在不可靠位置&#xff0c;提出了一种改进的基于信号到达角的定位方法&…

R语言-时间日期函数

R语言时间日期函数 1. 返回当前日期时间&#xff0c;有两种方式&#xff1a; Sys.time() date() 举例 format(Sys.time(), "%a %b %d %X %Y %Z")#[1] "周五 五月 06 14:17:40 2016 CST"format(Sys.time(), "%H:%M:%OS3")#[1] "14:17:40.6…

各种水龙头拆卸图解_水龙头上包卫生纸,竟有这种效果!邻居看了都想学

你家该大扫除了吗&#xff1f;如何打扫厨房可是个大问题厨房的卫生问题今天一一教你解决洗碗池洗碗池经常不擦&#xff0c;污渍会积得很厚&#xff0c;陈旧老污渍怎么清除呢&#xff1f;方法&#xff1a;白醋 用毛巾裹在水龙头上&#xff0c;倒上白醋。因为白醋具有腐蚀性&…

php按id获取整条数据库,Ajax取得数据库的json值,想通过id获取对应信息,但是都默认获取第一条了...

PHP<?PHP header("Content-Type: text/html; charsetutf-8");include(conn.php);//链接数据库$sql select id,article_name,check_box,radio_box,content,input_name,input_number,input_title,input_describe from article;$res mysqli_query($conn,$sql);$da…

服务器系统及软件常见漏洞

服务器系统及软件常见漏洞 漏洞名称允许Traceroute探测远端WWW服务支持TRACE请求远端WWW服务提供了对WebDAV的支持远端WEB服务器上存在/robots.txt文件远端VNC服务正在运行远端HTTP服务器类型和版本信息泄漏远端DNS服务允许递归查询远程代理服务器允许连接任意端口远程代理服务…

链式存储结构 php,【PHP 实现数据结构】链式队列

什么是链式队列队列是一种“先进先出”的存储结构,是一种特殊的线性表&#xff0c;于它只允许在表的前端(front)进行删除操作&#xff0c;而在表的后端(rear)进行插入操作。通常队列可以分为顺序队列和链式队列两种实现&#xff0c;顺序队列顾名思义就是采用顺序存储&#xff0…

base64_encode() 和 base64_decode() 8bit图片通过网络传输

一、为什么要使用base64编码&#xff1f; Base64是一种基于64个可打印字符来表示二进制数据的表示方法。 有些网络传送渠道并不支持所有的字节&#xff0c;例如传统的邮件只支持可见字符的传送&#xff0c;像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制…

图标圆角角度_UI设计中图标的规范及原则【附全套视频】

icon是一种图标格式&#xff0c;用于系统图标、软件图标等&#xff0c;这种图标扩展名为*.icon、*.ico。常见的软件或windows桌面上的那些图标一般都是ICON格式的。icon元素包括两个可选的子元素:small-icon子元素和large-icon子元素。文件名是Web应用归档文件(WAR)的根的相对路…

设计模式(十一):从文Finder中认识组合模式(Composite Pattern)

上一篇博客中我们从从电影院中认识了"迭代器模式"(Iterator Pattern)&#xff0c;今天我们就从文件系统中来认识一下“组合模式”&#xff08;Composite Pattern&#xff09;。说到组合模式&#xff0c;在此我想聊一下在类图中有组合与聚合的关系&#xff0c;这两者都…

PHP7不能用string类名,解决thinkphp php7 Cannot use ‘String’ as class name as it is reserved...

我有一网站之前用php7运行thinkphp没有什么问题&#xff0c;但是最近发现开启验证码的时候发现有错误Cannot use String as class name as it is reserved在google baidu搜索了一下还是没有解决方法于是自己动手解决&#xff0c;看来我是第一个分享出来的人原因&#xff1a;有一…

python序列化对象的函数_使 Python 对象可序列化的函数

from copy import deepcopyfrom str import basestringdef enserializable(model):"""本函数用于将对象可序列化&#xff0c;且返回的字典都是新的(deepcopy)"""if isinstance(model, dict):model deepcopy(model)to_pop []for k in model:# 过…

Activity(二)

多个Activity之间的调用 建立一个Activity 配置layout文件夹下fragment_main.xml文件 在layout下新建other.xml文件 xml文件创建的id需要编译才能生成 在同一工程src文件夹下新建class文件 查找id并作关联 加入监听器&#xff0c;调用另一个Activity的类 调用监听器 注&#xf…

php用asp文件js,asp下用fso生成js文件的代码

asp下用fso生成js文件的代码更新时间&#xff1a;2008年06月24日 23:47:54 作者&#xff1a;asp下使用fso生成js代码的方法Set fso Server.CreateObject("Scripting.FileSystemObject")set fdfso.createtextfile(server.MapPath("../category.js"),true)…

relativelayout中按键不能点_CNC | M80/M800系列系统常见按键和外部存储器故障

一、按键无效现象1.操作人员对机床操作时画面无反应现象M80/M800系列系统在使用键盘或触摸屏输入时&#xff0c;请勿连击键盘按键&#xff0c;输入一 次即可。键盘每向NC输入一次&#xff0c;NC系统需要计算一次&#xff0c;连续的多次重复输入&#xff0c;NC多次重复计算、显示…

Problem J

Total Submission(s) : 102 Accepted Submission(s) : 60 Problem Description有一楼梯共M级&#xff0c;刚开始时你在第一级&#xff0c;若每次只能跨上一级或二级&#xff0c;要走上第M级&#xff0c;共有多少种走法&#xff1f;Input输入数据首先包含一个整数N&#xff0c…

百度AI人脸检测测颜值php,百度AI人脸识别测颜值源码app

百度AI人脸识别测颜值源码app是由百度AI官方提供的&#xff0c;将人脸识别分为了两个接口&#xff0c;v2与vv3。需要根据文档权限来选择接口类型&#xff0c;这款软件非常方便用户学习和体验。想要学习相关信息的朋友可以来看看哦。百度AI人脸识别测颜值介绍百度AI人脸识别测颜…

python3 换源_CentOS 7.5 下 python3 安装及 pip 换源

从EPEL仓库安装Python3CentOS 7.5 默认python2的环境,可使用yum直接安装python3,之后切换/bin中的python向python3,查看版本yum install python3 -yls -l /bin/pythonpython -Vrm /bin/pythonln -s /bin/python3 /bin/pythonpython -V此时pip仍为py2,可以使用pip3或python -m p…

php使用redis存储

一、Redis扩展模块 # wget https://codeload.github.com/phpredis/phpredis/zip/develop -O phpredis.zip # unzip phpredis.zip # cd phpredis-develop/ # /usr/local/php/bin/phpize # ./configure --with-php-config/usr/local/php/bin/php-config # make # make install 二…

vs2015如何连接oracle,VS2015中C#连接Oracle数据库

硬件环境&#xff1a;Win10 64位 VS2015 ODP.Net for VS2015配置ODP.NetOracle Developer Tools for Visual Studio 12.1.0.2.4 下载次文件Oracle Data Provider for .NET 4 12.1.0.2.0Oracle Providers for ASP.NET 4 12.1.0.2.0下载完成后运行MSI安装程序进行安装&#xff0…

sql数据导入错误代码: 0x80004005_PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR...

抛出异常Oracle有三种类型的异常错误&#xff1a;1&#xff0e; 预定义&#xff08;Predefined&#xff09;异常ORACLE预定义的异常情况大约有24个。对这种异常情况的处理&#xff0c;无需在程序中定义&#xff0c;由ORACLE自动将其引发。2&#xff0e; 非预定义&#xff08;Pr…