首页 > 其他分享 >vue3

vue3

时间:2024-05-06 20:23:31浏览次数:26  
标签:npm name age person vue3 ref

【介绍】

# vue3 的变化
    1.性能的提升
        -打包大小减少41%
        -初次渲染快55%, 更新渲染快133%
        -内存减少54%
    2.源码的升级
        使用Proxy代替defineProperty实现响应式
        重写虚拟DOM的实现和Tree-Shaking
    3.拥抱TypeScript
        Vue3可以更好的支持TypeScript
    4.新的特性
        Composition API(组合API)
        setup配置
        ref与reactive
        watch与watchEffect
        provide与inject
        新的内置组件
        Fragment
        Teleport
        Suspense
        其他改变

        新的生命周期钩子
        data 选项应始终被声明为一个函数
        移除keyCode支持作为 v-on 的修饰符

--------------------------------
 # 组合式API和配置项API
    vue2 :配置项API
         new Vue({
             el:'#app',
             data:{}
         })

    vue3: 组合式API
        let name='lqz'
        let add=()=>{
        }

【vue3项目创建】

# 1 跟之前创建vue2一样

# 2 步骤: 1 vue create vue3_demo001 2 注意选择vue3,其他都一样

# 3 webstorm打开--》配置启动

# 4 配置npm 镜像站 npm config set registry https://registry.npmmirror.com

检测:npm config get registry

【vite创建(推荐)】

#1 什么是vite?—— 新一代前端构建工具。
优势如下:
开发环境中,无需打包操作,可快速的冷启动。
轻量快速的热重载(HMR)。
真正的按需编译,不再等待整个应用编译完成。
传统构建 与 vite构建对比图


# 2 兼容性注意
Vite 需要 Node.js 版本 18+,20+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本
官网:https://cn.vitejs.dev/

# 3 创建工程
# 不指定名字创建:npm create vite@latest
# 配置npm镜像站:npm config set registry https://registry.npmmirror.com
# 查看镜像站:npm config get registry
# 指定名字创建 
    # 创建项目方式一
    npm create vite@latest
    # 创建项目方式二:指定名字
    npm create vite@latest vue3_demo002
    # 创建项目方式三
    cnpm create vite@latest vue3_demo002
    # 创建项目方式四
    cnpm create vite vue3_demo002
# 3 使用编辑器打开vue3项目
# 4 安装依赖
    npm install 
# 5 运行项目
    npm run dev

【常用API】

1.setup函数

  # 1 如果使用配置项API---》写起来跟vue2一样   

  # 2 如果写组合式API---》所有代码都要写在setup函数中   

    -后期除了setup函数,其他都不带了   

  # 3 setup函数必须返回变量或函数--》在template中才能使用   

  # 4 默认不带响应式,需要使用ref或reactive包裹

 1 <template>
 2   <div class="home">
 3     <h2>姓名:{{ name }}</h2>
 4     <h2>年龄:{{ age }}</h2>
 5     <button @click="handleAdd">点击加年龄</button>
 6     <button @click="handleChange">点击改名字</button>
 7   </div>
 8 </template>
 9 
10 <script>
11 
12 
13 import {ref} from "vue";
14 
15 export default {
16   name: 'HomeView',
17   setup() {
18 //1.插值语法
19 //   let name='张三'
20     let name = ref('张三')
21     // let age=18  默认没有响应式
22     let age = ref(18)  //做成响应式,需要导入模块
23     //2.方法--点击年龄+1
24     function handleAdd() {
25       console.log(age)  //age的类型是RefImpl,
26       age.value += 1  //age的值+1需要通过value来操作
27 
28     }
29 
30     //3.方法--改名字
31     function handleChange() {
32       name.value = '小龙女'
33     }
34 
35     //.必须return,然后才能在template中使用
36     return {name, age, handleAdd, handleChange}
37   }
38 }
39 </script>

 

2.ref和reactive

# 1 ref 包裹值类型[数字,字符串,布尔],做成响应式

# 2 reactive包裹引用类型[对象,数组],做成响应式

# 3 使用reactive包裹的对象,直接通过 . [] 取值赋值就是响应式的

ref包裹的对象,需要使用 对象.value 修改值

# 4 使用ref包裹的,在template中,不用使用 变量.value

##### js###
const hobby = ref('篮球')
const wife = reactive({name: '刘亦菲', age: 38, height: 168})
const handleAddHeight = () => {
    wife.height += 1
}

#### template####
<h1>ref和reacitve</h1>
<p>爱好是:{{ hobby }}</p>
<p>wife名字是:{{ wife.name }}-->wife年龄是:{{ wife.age }}---》wife身高是:{{ wife.height }}</p>
<button @click="handleAddHeight">点击wife身高+1</button>

 

3.计算属性computed

##### js###
 // 3 计算属性
    const person = reactive({
      firstName: '',
      lastName: ''
    })

    // 只有 计算属性,不修改值的情况
    // person.fullName = computed(() => {
    //   return person.firstName+person.lastName
    // })

    // 支持修改
    person.fullName = computed({
      get() {
        return person.firstName + person.lastName
      },
      set(value) {
        person.firstName = value.slice(0, 1)
        person.lastName = value.slice(1)
      },
    })
    
#### template###
<h1>计算属性</h1>
<p>姓:<input type="text" v-model="person.firstName"></p>
<p>名:<input type="text" v-model="person.lastName"></p>
<p>全名:{{ person.fullName }}</p>
<p>全名修改:<input type="text" v-model="person.fullName"></p>

 

 

标签:npm,name,age,person,vue3,ref
From: https://www.cnblogs.com/liuliu1/p/18175806

相关文章

  • vue3 个人自适应配置方案
    ``使用插件"postcss-pxtorem":"^6.1.0",postcss.config.cjs文件配置module.exports={plugins:{autoprefixer:{overrideBrowserslist:["Android4.1","iOS7.1","Chrome>31......
  • *uniapp-vue3-ts项目配置eslint+prettier+husky
    代码检查工具:Eslint代码格式化工具:prettierhusky:Git客户端增加了钩子(hooks)功能,使得在特定阶段执行一系列流程,以保证每一个commit的正确性vscode安装插件:    安装eslint+prettier:npmi-Deslintprettiereslint-plugin-vue@vue/eslint-config-prettier@vu......
  • Vue3 除了 keep-alive,还有哪些页面缓存的实现方案
    引言有这么一个需求:列表页进入详情页后,切换回列表页,需要对列表页进行缓存,如果从首页进入列表页,就要重新加载列表页。对于这个需求,我的第一个想法就是使用keep-alive来缓存列表页,列表和详情页切换时,列表页会被缓存;从首页进入列表页时,就重置列表页数据并重新获取新数据来达到列表......
  • 十分钟,带你了解 Vue3 的新写法
    本文的目的,是为了让已经有Vue2开发经验的 人 ,快速掌握Vue3的写法。因此, 本篇假定你已经掌握Vue的核心内容 ,只为你介绍编写Vue3代码,需要了解的内容。一、Vue3里 script 的三种写法首先,Vue3新增了一个叫做组合式api的东西,英文名叫CompositionAPI。因此Vue3......
  • vue3早已具备抛弃虚拟DOM的能力了
    前言jquery时代更新视图是直接对DOM进行操作,缺点是频繁操作真实DOM,性能差。react和vue时代引入了虚拟DOM,更新视图是对新旧虚拟DOM树进行一层层的遍历比较,然后找出需要更新的DOM节点进行更新。这样做的缺点就是如果DOM树很复杂,在进行新旧DOM树比较的时候性能就比较差了。那么有没......
  • 使用Vue3在浏览器端进行zip文件压缩
    在前端开发中,我们时常需要处理文件上传和下载的功能。有时,用户可能希望将多个文件打包成一个zip文件以便于下载。今天,我将分享一个使用Vue3和JSZip库在浏览器端实现zip文件压缩的示例。首先,我们需要安装JSZip库。如果你使用的是npm,可以通过以下命令进行安装:npminstalljszip......
  • PHP框架Laravel+Vue3+前后端分离开发模式+实战项目
    1、本实战项目采用前后端分离的开发模式,前端框架vue3,后端框架laravel10。所谓的前后端分离的开发,就是有别于利用cookie,session的基于会话机制的开发模式;前后端分离的开发模式是基于jwt的开发模式,也就是说后端的接口数据不仅可以支持web页面,也可以支持微信小程序,公众号,app等移动端......
  • Vue3中Mock数据的简单方案
    因为Vue3项目开发中需要用到Mock数据,所以这里记录一种快速Mock数据的方法。一、安装首先,你需要安装axios和axios-mock-adapter。npminstallaxiosaxios-mock-adapter--save二、编写mock数据为了保证项目的整洁,我们在项目根目录下的src目录下新建一个名为mock的文件夹......
  • vue3 vant4 h5图片上传时压缩
    代码如下upload组件的afterRead方法:constafterRead=asyncfile=>{file.status="uploading";file.message="上传中...";const{data}=awaitupLoaderImg(file.file);//使用上传的方法。file.fileif(data){file.status="done&q......
  • yarn + vue3 + vite 创建项目
      yarncreatevite//通过yarn+vite创建项目填写的创建的项目名称,默认名称vite-project 选择框架,我们点击上下键,回车选择,我们这里选择vue 选择语言,我们点击上下键,回车选择,我们这里选择TypeScript,即ts,然后回车 创建成功,如下 按照提示,执行命令cdvite-pr......