美文网首页VUE_3
vite2+vue3踩坑

vite2+vue3踩坑

作者: 绝尘kinoko | 来源:发表于2021-06-21 17:52 被阅读0次

Vite

vite简单来说是一个快速的构建工具。初始化命令为
npm init @vitejs/app vue-demo或者npm init vite-app vite-demo
也可以安装脚手架,用脚手架命令初始化,就不细讲了。
vite支持很多框架,所以初始化时会进行一些选择,按需选即可。
我选的是vue3,项目初始结构与普通vue项目类似,主要2点不同:

  1. index.html,位置位于根路径下,原因官网有说明。
  2. vite.config.ts,比较重要,类似vue.config.ts。

vite的一些API主要面向于插件作者,一般开发/学习者关注配置项即可。
配置项踩坑:

  1. resolve.alias
// 原写法 vue.config.ts
chainWebpack: (config) => {
    config.resolve.alias
      .set('@api', resolve('src/api'))
      .set('@assets', resolve('src/assets'))
}
// 现写法 主要是src前面多了/
resolve: {
    alias: [
      { find: '@/', replacement: '/src/' },
      { find: '@com', replacement: '/src/components' },
    ]
  }
  1. server
//原为devServer,且rewrite有点不同
server: {
    port: 3000,
    proxy: {
      '/local': {
        target: 'http://localhost:8080',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/local/, '')
      }
    }
  }

Vue3

主要是记录与vue2的一些差别。

Vue Router

初始化状态是没有第三方库和插件的,要自己安装。
安装vue-router时犯了个错,没有指定版本,安装了3.x的,当引用router的时候,一直提示没有install方法,后来才知道,要指定4.x版本进行安装,路由初始化也不一样。
用npm info plugin-name versions查看版本。

import { createRouter, createWebHashHistory } from 'vue-router'

const routes: any[] = []

export default createRouter({
    routes,
    history: createWebHashHistory()
})

详见官方文档
在main.ts用

const app = createApp(App)
app.use(router)
app.mount('#app')

路由跳转和传参也是个比较坑的。

  1. 路由跳转使用方法,只能在setup中用,不能使用this.$router,要用useRouter,vue-router模块的方法
  2. push方法推荐设置name,不能用path(硬用也可以,但是会有警告,而且params传不了参),不过传参params和query可以一起用,但是页面刷新后params会清空,而query不会。
  3. route打印不出来,只能打印route.params这样。
// from
setup() {
    const router = useRouter();

    const toAdd = () => {
      router.push({
        name: "add",
        params: {
          test: 111,
        },
        query: {
          test: 444,
        },
      });
    };
}
// to
setup() {
    const route = useRoute();
    console.log(route.params, route.query, route);
}
路由信息

刷新后params就会变为空对象。


有个问题没解决,是个警告。

<router-view v-slot="{ Component }">
  <transition>
    <keep-alive>
      <component :is="Component" />
    </keep-alive>
  </transition>
</router-view>

将上面代码替换掉普通的router-view后,控制台会警告


transition warn

vscode template

只针对vscode的快捷键模板,ws可以直接新建模板。

"v3t": {
        "scope": "vue",
        "prefix": "v3t",
        "body": [
            "<template>",
            "",
            "</template>",
            "",
            "<script lang=\"ts\">",
            "import { defineComponent } from 'vue'",
            "",
            "export default defineComponent({",
            "  name: '',",
            "  setup() {",
            "",
            "  }",
            "})",
            "</script>",
            "",
            "<style lang=\"less\" scoped>",
            "",
            "</style>"
        ],
        "description": "vue3 ts template"
    }

v-for的ref

如果要用ref绑定一个v-for的元素,需要用一个数组存,而不是挂在$refs上。

事件方法

原来写在methods里的方法有了变化。
需要在setup里写好再return出去。

setup() {
    let count = ref(0);
    const add = () => {
      count.value++;
    };
    return { count, add };
  },

data

上面也有提到,数据定义需要用函数包装,一般来说,基本类型用ref,对象、数组之类的用reactive。
可以用toRefs将reactive对象转为ref对象,利用这点可以将对象解构出去。
另外,ref也可以包装对象,但是不能使用toRefs方法,用了会报很多警告,且无值返回。

相关文章

  • vite2+vue3踩坑

    Vite[https://vitejs.cn/guide/why.html] vite简单来说是一个快速的构建工具...

  • JavaScrip-StepPitGuide《JavaScrip

    《JavaScript踩坑指南》JavaScrip-StepPitGuide? 《JavaScript踩坑指南》 ...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • D1094:踩坑的价值最大化

    是人就会踩坑,不踩坑理论上就不属于人类,踩坑是人之常情,能回头站在坑边反思,才是对踩过的的坑价值最大化的体现,要不...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • 踩坑,使用cocoaPods import导入时没有提示的解决办

    续上篇写的,踩坑,cocoaPods ---- framework not found Pods之后 ,又踩坑了。...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • 随笔

    读书啊,就是一个坑踩完了又掉进另一个坑,先说踩读书没用的坑,爬出来了,再踩读书要多的坑,之后再踩读书要精啊,读书要...

  • PHP中的数据类型

    一说到数据类型,这个坑就太多了,多到有哪些坑,有多少坑,不知道自己还会踩哪些坑,以及踩过的坑还会不会再踩,我对...

网友评论

    本文标题:vite2+vue3踩坑

    本文链接:https://www.haomeiwen.com/subject/ldqyyltx.html