IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 用vite构建vue3应该注意的点 -> 正文阅读

[JavaScript知识库]用vite构建vue3应该注意的点

https://download.csdn.net/download/weixin_51364599/85122544

用vite初始化的项目与vue-cli基本一样,但是有几个点需要注意一下

1.项目的版本依赖问题

因为获取的是最新的vite和vue,而初始化的项目依赖中也只有vite和vue,

像vuex,ts,router等都是没有的。所以可能有版本上兼容的问题。

这里引用了vuex和vue-router,两者都必须是4.0版本或者以上

这里不建议用最新的vue和vite来构建项目,因为与vuex存在兼容问题,估计得等vuex5出后可以解决

2.vuex和vue-router的新的初始化方法

在vue2中,vuex和vue-router都是以new来构建实例对象,而在4.0后用create函数构建

这里以vuex为例

4.0的vuex依旧保留了store对象,最新的版本已经移除strore,所以老老实实用createStore构建

其实也就是不用new store改用createStore,其他方面和以前一样

下面是vue-router

网上有说要用defineAsyncComponent包裹路由组件,不然会报错。但试了不加后,在开发环境和生产环境也不会报错,这里记录下来以防万一

3.路径别名的设置

与vue-cli有个小区别,vite只能设置完整的路径,例如:"components": path.resolve(__dirname, "src/components"),不能和vue-cli一样设置成"components": "@/components"。

设置成"components": "@/components"在开发环境下没有问题,后来发现在生产上却无法正确解析。

总结:打包工具配置,最好还是以官方案例为准

4.vuex和vue-router的使用问题

有两种使用方式,这里以vue-router为例

第一种:

import {useRouter} from "vue-router"

export default {
    setup(){
        let router = useRouter()//这种方式初始化只能写在setup作用域内
    }
}

<script setup>
    let router = useRouter()//一样在setup作用域内
</script>

第二种:直接引用实例

import router from "@/router/index.js"

router.push({
   path:'/'
})

?当然用router-link组件也是可以的

vuex同理

<script>
import {mapState,mapGetters,mapMutations} from 'vuex'
export default {
  computed:{
    ...mapState(["username"]),
    ...mapGetters(["getUserName"])
  },
  methods: {
    ...mapMutations(["SET_USERNAME"])
  },
  mounted() {
    console.log(this.getUserName,'getUserName')
    console.log(this.username,'username111')
  },
}
</script>

<script setup>
import { ref,computed } from 'vue'
import {useStore} from 'vuex'

defineProps({
  msg: String
})

const count = ref(0)
let add = computed(()=>{
  return count.value+1
})
let store = useStore()
console.log(add.value,'add');
console.log(store.state.username);
</script>

?这里的map函数只能用在老写法中,新的setup写法不支持

项目后续还需要加上css处理和axios

5.setup语法糖注意事项

?
<script setup>
import { ref,computed,reactive } from 'vue'
const username = ref("hahahah")//这里的响应式优先级比下面的username高
</script>
<script>
export default {
    data(){
        return { username:"11111" }
    },
    mounted() {
        console.log(this.username,'username111')
    },
}
</script>

?

setup写法和普通组件配置写法会有覆盖情况,应该避免出现同名覆盖

setup内的username响应式优先级更高,即{{username}}是‘hahahah’

mounted下的username在build环境下是打印11111,dev环境下打印‘hahahah’

结论:同名存在覆盖情况,同名情况下响应式优先级以setup内的准,推测不同作用域内存在有两个不同的username,响应式绑定以执行顺序有关,先执行setup函数,再去初始化data

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:43:36  更:2022-04-14 23:48:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:37:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码