前言:
现时大家对“css3前端框架”大概比较重视,看官们都需要学习一些“css3前端框架”的相关内容。那么小编同时在网摘上汇集了一些对于“css3前端框架””的相关文章,希望兄弟们能喜欢,同学们快快来学习一下吧!“这里是云端源想IT,帮你轻松学IT”
嗨~ 今天的你过得还好吗?
零星的变得优秀
也能拼凑出星河
- 2023.07.11 -
Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
Vue 3是一种流行的JavaScript框架Vue.js的最新版本。它于2020年9月正式发布,并带来了许多新功能和改进。Vue 3的主要目标是提供更好的性能、更好的开发体验和更小的包大小。
前端框架那么多,我们为什么非要学Vue 3呢?今天就来带大家认识一下Vue 3,首先来说说支持大家学习Vue 3的原因。
一、为什么要学习 vue 3Vue是国内最火的前端框架;Vue 3 于 2022 年 2 月 7 日星期一成为新的默认版本;Vue3性能更高,体积更小;Vue3.0在经过一年的迭代后,越来越好用。
目前已支持 vue3 的UI组件库:
element-plus
Element Plus,一套为开发者、设计师和产品经理准备的基于 Vue 3.0 的桌面端组件库。
vant
轻量、可靠的移动端 Vue 组件库。Vant 是有赞前端团队开源的移动端组件库,于 2016 年开源,已持续维护 4 年时间。目前 Vant 已完成了对 Vue 3.0 的适配工作,并发布了 Vant 3.0 版本。
ant-design-vue (PC组件库)
ant-design-vue 是 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步。
接下来给大家分享Vue3 动机和新特性,敲黑板!这也是面试中经常会遇到的问题哦,要认真看哦。
二、Vue3 动机和新特性
动机与目的:
更好的逻辑复用与代码组织 (composition组合式api);
optionsAPI(旧) => compositionAPI(新),效果: 代码组织更方便了,逻辑复用更方便了非常利于维护!
更好的类型推导 (typescript支持)
vue3 源码用 ts 重写了, vue3 对 ts 的支持更友好了 (ts 可以让代码更加稳定,类型检测 )。
vue3新特性:
数据响应式原理重新实现 (ES6 proxy 替代了 ES5 的 Object.defineProperty)
解决了: 例如数组的更新检测等bug, 大大优化了响应式监听的性能 ---覆写。(原来检测对象属性的变化, 需要一个个对属性递归监听) proxy 可以直接对整个对象劫持。
虚拟DOM - 新算法 (更快 更小);提供了composition api, 可以更好的逻辑复用;模板可以有多个根元素;源码用 typescript 重写, 有更好的类型推导 (类型检测更为严格, 更稳定);废弃了 eventbus 过滤器...
三、Vue 3的新特性
Vue 3 包含了许多新功能和改进。以下是一些值得关注的新特性:
Composition API
使用选项式 (option)API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 data、methods和 mounted。选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。
<template>
<button @click="increment">Count is: {{ count }}</button>
</template>
<script>
export default {
// data() 返回的属性将会成为响应式的状态
// 并且暴露在 `this` 上
data() {
return {
count: 0
}
},
// methods 是一些用来更改状态与触发更新的函数
// 它们可以在模板中作为事件监听器绑定
methods: {
increment() {
this.count++
}
},
// 生命周期钩子会在组件生命周期的各个不同阶段被调用
// 例如这个函数就会在组件挂载完成后被调用
mounted() {
console.log(`The initial count is ${this.count}.`)
}
}
</script>
通过组合式(Composition) API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与 <script setup> 搭配使用。
这个setup attribute 是一个标识,告诉 Vue 需要在编译时进行一些处理,让我们可以更简洁地使用组合式 API。比如,<script setup> 中的导入和顶层变量/函数都能够在模板中直接使用。
下面是使用了组合式 API 与 <script setup> 改造后和上面的模板完全一样的组件:
<template>
<button @click="increment">Count is: {{ count }}</button>
</template>
<script setup>
import { ref, onMounted } from 'vue'
// 响应式状态
const count = ref(0)
// 用来修改状态、触发更新的函数
function increment() {
count.value++
}
// 生命周期钩子
onMounted(() => {
console.log(`The initial count is ${count.value}.`)
})
</script>
Teleport
Teleport 是 Vue 3 中的另一个新功能,它允许您在应用程序中移动 DOM 元素,而无需破坏组件的层次结构。可以让开发者将组件渲染到指定的目标中,这对于创建具有复杂动画效果的应用程序非常有用。
下面是一个Teleport的具体示例:
<button @click="open = true">Open Modal</button>
<Teleport to="body">
<div v-if="open">
<p>Hello from the modal!</p>
<button @click="open = false">Close</button>
</div>
</Teleport>
<Teleport> 接收一个 to prop 来指定传送的目标。to 的值可以是一个 CSS 选择器字符串,也可以是一个 DOM 元素对象。这段代码的作用就是告诉 Vue“把以下模板片段传送到 body 标签下”。
Fragments
Vue 3 引入了 Fragments,这使得开发者可以在不添加额外 DOM 元素的情况下渲染多个根元素。
vue2中模板里只允许存在一个根元素,写多个根元素会报错。
<template>
<div><div>
</template>
vue3以后模板中可以存在多个根元素。
<template>
<div><div>
<div><div>
<div><div>
</template>
全局 API 重命名
Vue 3 中,许多全局 API 的名称被重命名,以下是一些需要注意的。
过滤器被移除:在 Vue 3 中,过滤器已经被移除了,我们需要使用计算属性或方法来替代它们。全局 API 被重命名:Vue 3 中一些全局 API 已经被重命名了,例如 Vue.filter 变成了 Vue.app.filter,Vue.directive 变成了 Vue.app.directive 等等。自定义指令 API 发生变化:在 Vue 3 中,自定义指令的 API 发生了变化,我们需要使用 created 和 beforeUnmount 代替 bind 和 unbind。另外,update 方法也被移除了,我们需要使用 beforeUpdate 和 updated 代替它。
更好的 Tree-Shaking 支持
Vue 3 中,更好的 Tree-Shaking 支持提高了应用程序的性能,它允许我们只导入应用程序中实际使用的代码,而不是导入整个库。
要实现更好的 Tree-Shaking,我们需要使用模块化的构建方式,例如使用 ES 模块或 CommonJS 模块。这将允许编译器在构建时进行优化,从而减少应用程序的包大小。
以下是一个示例代码:
import { createApp } from 'vue'
import App from './App.vue'
import { createStore } from 'vuex'
import { createRouter, createWebHistory } from 'vue-router'
const store = createStore({
state: {
count: 0
}
})
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About }
]
})
const app = createApp(App)
app.use(store)
app.use(router)
app.mount('#app')
在这个例子中,我们只导入了实际使用的 createApp、createStore 和 createRouter 函数,而没有导入整个 vue 和 vue-router 库。这将使编译器能够在构建时更好地优化我们的应用程序,减少包大小和提高性能。
性能优化
Vue 3 进行了大量的性能优化,包括更快的渲染速度、更小的包大小和更少的运行时错误。这使得 Vue 3 成为了一个更快、更可靠的框架。以下是一些性能优化的具体内容:
使用 Proxy 替代 Object.defineProperty,提高响应式系统的性能;重构虚拟 DOM,减少了创建和比较虚拟 DOM 的开销;优化组件实例初始化过程,减少了内存分配和初始化的开销;优化编译器,减少了编译和渲染的开销;改进 Tree-Shaking 支持,减少了打包后的文件大小。
新的组件钩子
Vue 3 中的组件钩子有一些变化。以下是一些新的组件钩子:
onBeforeMount:在组件挂载之前调用。这个钩子在 Vue 2 中被称为 beforeMount。onMounted:在组件挂载之后调用。这个钩子在 Vue 2 中被称为 mounted。onBeforeUpdate:在组件更新之前调用。这个钩子在 Vue 2 中被称为 beforeUpdate。onUpdated:在组件更新之后调用。这个钩子在 Vue 2 中被称为 updated。onBeforeUnmount:在组件卸载之前调用。这个钩子在 Vue 2 中被称为beforeDestroy。onUnmounted:在组件卸载之后调用。这个钩子在 Vue 2 中被称为 destroyed。
以下是一个示例代码,演示了如何使用新的组件钩子:
<template>
<div>
{{ message }}
</div>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
const message = ref('Hello, world!')
onMounted(() => {
console.log('Component mounted')
})
onUnmounted(() => {
console.log('Component unmounted')
})
</script>
在这个例子中,我们使用了 onMounted 和 onUnmounted 钩子来处理组件的生命周期。在组件挂载时,onMounted 钩子会被调用,我们可以在这里执行一些初始化操作。在组件卸载时,onUnmounted 钩子会被调用,我们可以在这里清理一些资源。
TypeScript 支持
Vue 3 提供了对 TypeScript 的原生支持,这意味着我们可以使用 TypeScript 来编写 Vue 应用程序。在使用 TypeScript 时,我们需要为 Vue 3 安装相应的 TypeScript 类型。
如果你使用的是 Vue CLI 创建的项目,那么这些类型已经自动安装了。如果你使用的是其他方式创建的项目,则可以使用以下命令安装它们:
npm install --save-dev @types/vue
安装完成后,我们可以在 Vue 3 中使用 TypeScript,例如:
<template>
<div>
{{ message }}
</div>
</template>
<script setup>
import { ref } from 'vue'
let message: string = ref('hello word')
</script>
响应式系统和模板编译器的改进
在Vue.js 3版本中,响应式系统采用了Proxy 替代了 Object.defineProperty,提高了性能和可维护性。同时,Vue.js 3版本的响应式系统也支持了嵌套对象和数组的深层监听。
Vue.js 3版本的模板编译器也进行了改进,支持了更多的特性和指令,如 v-model 的多个参数、v-bind 的缩写语法、v-for 的模板片段等。此外,Vue.js 3版本的模板编译器还支持了标记和片段的缓存,提高了性能。
Vue 3 是一个强大的前端框架,它包含了许多新功能和改进。这边文章介绍了为什么要学Vue 3 以及一些值得关注的新功能。希望这篇文章能够帮助您快速入门 Vue 3,开始构建交互式的用户界面。
我们下期再见!
END
文案编辑|云端学长
文案配图|云端学长
内容由:云端源想分享
标签: #css3前端框架