vue2升级vue3注意事项

2022-02-11  本文已影响0人  drneilc

vite兼容

  1. require.context 替换成import.meta.globEager
  2. scss 全局注入,需要在vite.config.ts配置@use "sass:math"; @import "./src/amf/styles/variables.module.scss
  3. 静态资源无法require,必须使用import

css预编译处理语言

  1. 穿透css,必须使用 :v-deep(.className){};
  2. :export在vite中不支持,可以修改成.module.scss

element-plus组件库

  1. Icon 语法改为: <el-icon><edit /></el-icon> 或者直接使用svg<edit />
import { Search } from '@element-plus/icons'
<el-button type="primary" :icon="Search">Search</el-button> 
  1. dialog visible改为v-model
  2. Time-picker format格式修改YYYY-MM-DD HH:mm:ss ;defaluName变更;pickeroptions变更成shortcuts

vue3区别点


setItemRef(el) {
  this.itemRefs.push(el)
}
import { defineAsyncComponent } from 'vue'
import ErrorComponent from './components/ErrorComponent.vue'
import LoadingComponent from './components/LoadingComponent.vue'

// 不带选项的异步组件
const asyncPage = defineAsyncComponent(() => import('./NextPage.vue'))

// 带选项的异步组件
const asyncPageWithOptions = defineAsyncComponent({
  loader: () => import('./NextPage.vue'),
  delay: 200,
  timeout: 3000,
  errorComponent: ErrorComponent,
  loadingComponent: LoadingComponent
})
import { createApp } from 'vue'

  createApp({
    data() {
      return {
        apiKey: 'a1b2c3'
      }
    }
  }).mount('#app')
<template>
  <header>...</header>
  <main v-bind="$attrs">...</main>
  <footer>...</footer>
</template>
import { h } from 'vue'

const DynamicHeading = (props, context) => {
  return h(`h${props.level}`, context.attrs, context.slots)
}

DynamicHeading.props = ['level']

export default DynamicHeading
import { createApp } from 'vue'
import MyApp from './MyApp.vue'

const app = createApp(MyApp)
app.mount('#app')
import { nextTick } from 'vue'

const plugin = {
  install: app => {
    nextTick(() => {
      // ...
    })
  }
}
上一篇 下一篇

猜你喜欢

热点阅读