您的位置:首页 > 娱乐 > 八卦 > 姓氏logo免费设计在线生成_安全员考试报名入口官网_连云港seo优化_潍坊网站模板建站

姓氏logo免费设计在线生成_安全员考试报名入口官网_连云港seo优化_潍坊网站模板建站

2025/1/11 19:54:56 来源:https://blog.csdn.net/qq_58956810/article/details/144936664  浏览:    关键词:姓氏logo免费设计在线生成_安全员考试报名入口官网_连云港seo优化_潍坊网站模板建站
姓氏logo免费设计在线生成_安全员考试报名入口官网_连云港seo优化_潍坊网站模板建站

vue2与vue3的比较

源码的升级

  • 使用Proxy代替defineProperty实现响应式。

  • 重写虚拟DOM的实现和Tree-Shaking

新的特性

  1. Composition API(组合API):

    • setup

    • refreactive

    • computedwatch

      ......

  2. 新的内置组件:

    • Fragment

    • Teleport

    • Suspense

      ......

  3. 其他改变:

    • 新的生命周期钩子

    • data 选项应始终被声明为一个函数

    • 移除keyCode支持作为v-on 的修饰符

      ......

基于 vue-cli 创建

点击查看官方文档

备注:目前vue-cli已处于维护模式,官方推荐基于 Vite 创建项目。

## 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上
vue --version## 安装或者升级你的@vue/cli 
npm install -g @vue/cli## 执行创建命令
vue create vue_test##  随后选择3.x
##  Choose a version of Vue.js that you want to start the project with (Use arrow keys)
##  > 3.x
##    2.x## 启动
cd vue_test
npm run serve

基于 vite 创建

vite 是新一代前端构建工具,官网地址:https://vitejs.cn,vite的优势如下:

  • 轻量快速的热重载(HMR),能实现极速的服务启动。

  • TypeScriptJSXCSS 等支持开箱即用。

  • 真正的按需编译,不再等待整个应用编译完成。

  • webpack构建(下载完所有的包) 与 vite构建(点击当前页面才会下载对应的包)对比图如下:

  • 具体操作如下(点击查看官方文档)

## 1.创建命令
npm create vue@latest

nodejs卸载和安装:

直接在控制面板中进行卸载即可,然后选择需要的版本安装

全网最详细的 Node.js 卸载和安装教程_卸载node.js-CSDN博客
 

npm配置设置默认的镜像源:npm config set registry https://registry.npmmirror.com/查看当前使用的镜像源:npm config get registry

刚开始打开这些文件的时候会报错,执行 npm i 命令,安装对应的包就可解决问题,如果还报错的情况下,再次打开项目,就不会有报错信息了,如果版本不正确,卸载nodejs文件,重新安装就行,或者解对应文件,让这些文件适配当前nodejs版本也行

// vue官方把所有需要配置的文件都声明好了,加上这段代码,ts就能够识别.txt语言了

下载安装devtools插件: 

极简插件官网_Chrome插件下载_Chrome浏览器应用商店

OptionsAPI 与 CompositionAPI

  • Vue2API设计是Options(配置)风格的。

  • Vue3API设计是Composition(组合)风格的。

Options API 的弊端

Options类型的 API,数据、方法、计算属性等,是分散在:datamethodscomputed中的,若想新增或者修改一个需求,就需要分别修改:datamethodscomputed,不便于维护和复用。

Composition API 的优势

可以用函数的方式,更加优雅的组织代码,让相关功能的代码更加有序的组织在一起。

setup介绍

setup 概述

setupVue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。

特点如下:

  • setup函数返回的对象中的内容,可直接在模板中使用。

  • setup中访问thisundefined

  • setup函数会在beforeCreate之前调用,它是“领先”所有钩子执行的。

setup 的返回值

  • 若返回一个对象:则对象中的:属性、方法等,在模板中均可以直接使用(重点关注)。

  • 若返回一个函数:则可以自定义渲染内容,代码如下:

setup 与 Options API 的关系

- `Vue2` 的配置(`data`、`methos`......)中**可以访问到** `setup`中的属性、方法。
- 但在`setup`中**不能访问到**`Vue2`的配置(`data`、`methos`......)。
- 如果与`Vue2`冲突,则`setup`优先。

setup 语法糖

setup函数有一个语法糖,这个语法糖,可以让我们把setup独立出去,代码如下:

扩展:下面代码,还需要编写一个不写setupscript标签,去指定组件名字,比较麻烦,我们可以借助vite中的插件简化

  1. 第一步:npm i vite-plugin-vue-setup-extend -D

  2. 第二步:vite.config.ts,配置如下:

import { defineConfig } from 'vite'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'export default defineConfig({plugins: [ VueSetupExtend() ]
})

    3.第三步:<script setup lang="ts" name="Person"> 

person组件:

<template><div class="person"><h2>姓名: {{ name }}</h2><h2>年龄: {{ age }}</h2><h2>地址: {{ address }}</h2><button @click="changeName">修改姓名</button><button @click="changeAge">修改年龄</button><button @click="showTel">查看联系方式</button><hr /><hr /><!-- <h1>测试1: {{ a }}</h1><h1>测试2: {{ c }}</h1><button @click="b">测试</button> --></div>
</template><!-- <script lang="ts"> -->
// 这是选项式API,name,data,methods都是选项,vue3zh可以写vue2的语法 // export
default { // name: "Person", // beforeCreate() { // console.log("beforeCreate");
// }, // data() { // return { // a: 100, // c: this.name, // d: 900, // }; // },
// methods: { // b() { // console.log("b"); // }, // }, // setup() { //
console.log("@@", this); // setup函数中的this是undefined,Vue3中已经弱化this //
// 数据,原来是写在data中的,此时的name,age,tel都不是响应式的数据 // let name =
"张三"; // // let name = "张三"; //
直接这样写变量,页面不会有变化,数据不是响应式的,此时的name不是响应式 // let age =
18; //此时的age不是响应式 // let tel = "13888888888"; //此时的tel不是响应式 //
let address = "北京昌平区宏福苑 宏福科技园"; // let x = this.d; // // let x = d;
// 在setup中直接写vue2当中的语法会报错 // 方法 // function changeName() { //
name = "zhang-san"; // } // function changeAge() { // age += 1; // } // function
showTel() {} // // 将数据,方法交出去,模板中才可以使用 // return { name, age,
changeName, changeAge, showTel, address }; // setup的返回值也可以是一个渲染函数
// return function () { // return "hhah"; // }; // return () => { // return
"hhah"; // }; // }, // data() { // // vue2可以写vue3的写法 // return { // name:
"张三", // age: 18, // tel: "13888888888", // }; // }, // methods: { //
changeName() { // this.name = "zhangsan"; // }, // changeAge() { // this.age +=
1; // }, // showTel() { // alert(this.tel); // }, // }, // }; // //
<!-- </script> --><!-- 下面的写法是setup语法糖 -->
<!-- 可以通过插件来自定义当前组件的名字,不然就需要写上两个script,其中一个用来写上组件的名称name,另外一个用来写方法,属性,数据等 -->
<script lang="ts" setup name="Person123">
console.log("@@", this); // setup函数中的this是undefined,Vue3中已经弱化this
// 数据,原来是写在data中的,此时的name,age,tel都不是响应式的数据
let name = "张三";
// let name = "张三";  // 直接这样写变量,页面不会有变化,数据不是响应式的,此时的name不是响应式
let age = 18; //此时的age不是响应式
let tel = "13888888888"; //此时的tel不是响应式
let address = "北京昌平区宏福苑 宏福科技园";
// let x = this.d; //
// let x = d; // 在setup中直接写vue2当中的语法会报错
// 方法
function changeName() {name = "zhang-san";
}
function changeAge() {age += 1;
}
function showTel() {}
// 将数据,方法交出去,模板中才可以使用
// return { name, age, changeName, changeAge, showTel, address };
// setup的返回值也可以是一个渲染函数
// return function () {
//   return "hhah";
// };
// return () => {
//   return "hhah";
// };
</script><style scoped>
.person {background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
</style>

App.vue组件:

<template><!-- html结构 --><div class="app"><h1>你好啊!</h1><Person /></div>
</template><script lang="ts">
import Person from "./components/Person.vue";
// JS或TS
export default {name: "App", //组件名components: { Person }, // 注册组件
};
</script><style>
/* 样式 */
.app {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
</style>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com