Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

    • 教程

      • 创建Vue3工程

      • Composition API

      • Composition API 的优势

      • 新的组件

      • 其他新变化

        • 其他新变化
          • 全局API的转移
          • 其他改变
            • data选项应始终被声明为一个函数。
            • 过度类名的更改:
            • 移除keyCode作为 v-on 的修饰符
            • 移除v-on.native修饰符
            • 移除过滤器(filter)
    • Vue Router

    • API

    • Vuex

    • 实例处理方案

    • 文档

    • 用法

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • Vue3
  • 教程
  • 其他新变化
HiuZing
2023-03-04
目录

其他新变化

# 全局API的转移

  • Vue 2.x 有许多全局 API 和配置。

    • 例如:注册全局组件、注册全局指令等。

      //注册全局组件
      Vue.component('MyButton', {
        data: () => ({
          count: 0
        }),
        template: '<button @click="count++">Clicked {{ count }} times.</button>'
      })
      
      //注册全局指令
      Vue.directive('focus', {
        inserted: el => el.focus()
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
  • Vue3.0中对这些API做出了调整:

    • 将全局的API,即:Vue.xxx调整到应用实例(app)上

      2.x 全局 API(Vue) 3.x 实例 API (app)
      Vue.config.xxxx app.config.xxxx
      Vue.config.productionTip 移除
      Vue.component app.component
      Vue.directive app.directive
      Vue.mixin app.mixin
      Vue.use app.use
      Vue.prototype app.config.globalProperties

# 其他改变

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

# 过度类名的更改:

  • Vue2.x写法

    .v-enter,
    .v-leave-to {
      opacity: 0;
    }
    .v-leave,
    .v-enter-to {
      opacity: 1;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
  • Vue3.x写法

    .v-enter-from,
    .v-leave-to {
      opacity: 0;
    }
    
    .v-leave-from,
    .v-enter-to {
      opacity: 1;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# 移除keyCode作为 v-on 的修饰符

同时也不再支持config.keyCodes

# 移除v-on.native修饰符

  • 父组件中绑定事件

    <my-component
      v-on:close="handleComponentEvent"
      v-on:click="handleNativeClickEvent"
    />
    
    1
    2
    3
    4
  • 子组件中声明自定义事件

    <script>
      export default {
        emits: ['close']
      }
    </script>
    
    1
    2
    3
    4
    5

# 移除过滤器(filter)

过滤器虽然这看起来很方便,但它需要一个自定义语法,打破大括号内表达式是 “只是 JavaScript” 的假设,这不仅有学习成本,而且有实现成本!建议用方法调用或计算属性去替换过滤器。

在 Vue3中取消了 过滤器的概念 (opens new window),其中:

  1. 局部过滤器被完全删除
  2. 全局过滤器虽然被移除,但是可以使用 全局属性 (opens new window) 进行替代

# 时间处理(全局属性实例)

在 vue2 时代通常我们都是通过 全局过滤器 来进行实现的,所以在 vue3 中我们就顺理成章的通过 全局属性 (opens new window) 替代实现

  1. 时间处理部分我们通过 Day.js (opens new window) 进行处理

  2. 下载 Day.js (opens new window)

    npm i [email protected]
    
    1
  3. 创建 src/filter 文件夹,用于定义 全局属性 (opens new window)

    import dayjs from 'dayjs'
    
    const dateFilter = (val, format = 'YYYY-MM-DD') => {
        // 如果val可以被转成数字
        if (!isNaN(val)) {
            val = parseInt(val)
        }
    
    	return dayjs(val).format(format)
    }
    
    export default app => {
        // 定义全局属性
    	app.config.globalProperties.$filters = {
    		dateFilter
    	}
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
  4. 在 main.js 中导入

    // filter
    import installFilter from '@/filters'
    
    installFilter(app)
    
    1
    2
    3
    4
  5. 在 user-manage 中使用全局属性处理时间解析

    <el-table-column :label="$t('msg.excel.openTime')">
              <template #default="{ row }">
                {{ $filters.dateFilter(row.openTime) }}
              </template>
            </el-table-column>
    
    1
    2
    3
    4
    5
  • ......
上次更新: 2024/08/14, 04:14:33
Suspense
Router 方法

← Suspense Router 方法→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式