当前位置: 首页 > news >正文

三亚做网站推广可口可乐营销策划方案

三亚做网站推广,可口可乐营销策划方案,兼职网站制作,西安好的设计公司​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:Vue-从 Vue 2 到 Vue 3:全面升级指南 前言 随着前端技术的不断发展,Vue.j…

​🌈个人主页:前端青山
🔥系列专栏:Vue篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来Vuet篇专栏内容:Vue-从 Vue 2 到 Vue 3:全面升级指南

前言

随着前端技术的不断发展,Vue.js 作为一种轻量级且高效的框架,受到了广大开发者的喜爱。本文将详细介绍 Vue 2 和 Vue 3 的核心概念和实用技巧,并通过具体的代码示例来展示如何在项目中使用这些功能。我们还将探讨 Vue 2 和 Vue 3 之间的主要区别,帮助读者更好地理解和应用这些技术。

目录

前言

知识点

1. Vue 2 基础

1.1 组件化开发

代码示例

1.2 数据绑定

代码示例

1.3 计算属性和监听属性

计算属性

代码示例

监听属性

代码示例

2. Vue 3 新特性

2.1 Composition API

代码示例

2.2 Teleport

代码示例

2.3 计算属性和监听属性

计算属性

代码示例

监听属性

代码示例

3. 状态管理

3.1 Vuex

代码示例

3.2 Pinia

代码示例

Vue 2 和 Vue 3 的主要区别

1. 语法和 API 变化

1.1 模板语法

代码示例

1.2 Composition API

代码示例

2. 性能优化

2.1 渲染机制

2.2 编译器优化

3. 新特性

3.1 Teleport

代码示例

3.2 Fragments

代码示例

3.3 Suspense

代码示例

计算属性和监听属性的区别

1. 计算属性(Computed Properties)

代码示例

2. 监听属性(Watchers)

代码示例

总结

知识点

1. Vue 2 基础
1.1 组件化开发

Vue 2 强调组件化开发,通过将页面拆分为多个独立的组件,提高代码的可维护性和复用性。

代码示例
<!-- MyComponent.vue -->
<template><div class="my-component"><h1>{{ title }}</h1><p>{{ content }}</p></div>
</template>
​
<script>
export default {name: 'MyComponent',props: {title: String,content: String}
}
</script>
​
<style scoped>
.my-component {border: 1px solid #ccc;padding: 10px;margin: 10px;
}
</style>
1.2 数据绑定

Vue 2 提供了多种数据绑定方式,包括插值表达式、指令等。

代码示例
<!-- App.vue -->
<template><div id="app"><h1>{{ message }}</h1><input v-model="message" /></div>
</template>
​
<script>
export default {data() {return {message: 'Hello Vue 2!'}}
}
</script>
1.3 计算属性和监听属性

计算属性(Computed Properties)和监听属性(Watchers)是 Vue 2 中非常重要的概念,用于处理复杂的数据逻辑。

计算属性

计算属性用于声明式地描述依赖关系,当依赖的数据发生变化时,计算属性会自动更新。

代码示例
<!-- App.vue -->
<template><div id="app"><p>First Name: <input v-model="firstName" /></p><p>Last Name: <input v-model="lastName" /></p><p>Full Name: {{ fullName }}</p></div>
</template>
​
<script>
export default {data() {return {firstName: '',lastName: ''}},computed: {fullName() {return `${this.firstName} ${this.lastName}`}}
}
</script>
监听属性

监听属性用于观察数据的变化,并执行相应的操作。

代码示例
<!-- App.vue -->
<template><div id="app"><p>Counter: {{ counter }}</p><button @click="increment">Increment</button></div>
</template>
​
<script>
export default {data() {return {counter: 0}},methods: {increment() {this.counter++}},watch: {counter(newVal, oldVal) {console.log(`Counter changed from ${oldVal} to ${newVal}`)}}
}
</script>
2. Vue 3 新特性
2.1 Composition API

Vue 3 引入了 Composition API,使得逻辑更加清晰和模块化。

代码示例
<!-- MyComponent.vue -->
<template><div class="my-component"><h1>{{ title }}</h1><p>{{ content }}</p></div>
</template>
​
<script setup>
import { ref, defineProps } from 'vue'
​
const props = defineProps({title: String,content: String
})
</script>
​
<style scoped>
.my-component {border: 1px solid #ccc;padding: 10px;margin: 10px;
}
</style>
2.2 Teleport

Teleport 组件允许将模态框或其他组件的内容渲染到 DOM 的其他位置,从而避免样式冲突。

代码示例
<!-- Modal.vue -->
<template><teleport to="body"><div class="modal" v-if="visible"><div class="modal-content"><span @click="closeModal" class="close">&times;</span><p>{{ message }}</p></div></div></teleport>
</template>
​
<script setup>
import { ref } from 'vue'
​
const visible = ref(true)
​
const closeModal = () => {visible.value = false
}
</script>
​
<style scoped>
.modal {position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5);display: flex;justify-content: center;align-items: center;
}
​
.modal-content {background-color: white;padding: 20px;border-radius: 5px;position: relative;
}
​
.close {position: absolute;top: 10px;right: 10px;cursor: pointer;
}
</style>
2.3 计算属性和监听属性

Vue 3 中的计算属性和监听属性与 Vue 2 类似,但 Composition API 提供了更灵活的方式来使用它们。

计算属性
代码示例
<!-- App.vue -->
<template><div id="app"><p>First Name: <input v-model="firstName" /></p><p>Last Name: <input v-model="lastName" /></p><p>Full Name: {{ fullName }}</p></div>
</template>
​
<script setup>
import { ref, computed } from 'vue'
​
const firstName = ref('')
const lastName = ref('')
​
const fullName = computed(() => {return `${firstName.value} ${lastName.value}`
})
</script>
监听属性
代码示例
App.vue
<template><div id="app"><p>Counter: {{ counter }}</p><button @click="increment">Increment</button></div>
</template>
​
<script setup>
import { ref, watch } from 'vue'
​
const counter = ref(0)
​
const increment = () => {counter.value++
}
​
watch(counter, (newVal, oldVal) => {console.log(`Counter changed from ${oldVal} to ${newVal}`)
})
</script>
3. 状态管理
3.1 Vuex

Vuex 是 Vue 的状态管理库,适用于大型应用的状态管理。

代码示例
javascript// store.js
import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++}},actions: {increment({ commit }) {commit('increment')}},getters: {doubleCount(state) {return state.count * 2}}
})
vue<!-- App.vue -->
<template><div id="app"><p>Count: {{ count }}</p><p>Double Count: {{ doubleCount }}</p><button @click="increment">Increment</button></div>
</template><script>
import { mapState, mapGetters, mapActions } from 'vuex'export default {computed: {...mapState(['count']),...mapGetters(['doubleCount'])},methods: {...mapActions(['increment'])}
}
</script>
3.2 Pinia

Pinia 是 Vue 3 的新状态管理库,提供了更简洁的 API 和更好的 TypeScript 支持。

代码示例
javascript// store.js
import { defineStore } from 'pinia'
​
export const useCounterStore = defineStore('counter', {state: () => ({count: 0}),actions: {increment() {this.count++}},getters: {doubleCount: (state) => state.count * 2}
})
<!-- App.vue -->
<template><div id="app"><p>Count: {{ count }}</p><p>Double Count: {{ doubleCount }}</p><button @click="increment">Increment</button></div>
</template>
​
<script setup>
import { useCounterStore } from './store'
import { storeToRefs } from 'pinia'
​
const counterStore = useCounterStore()
const { count, doubleCount } = storeToRefs(counterStore)
const { increment } = counterStore
</script>

Vue 2 和 Vue 3 的主要区别

1. 语法和 API 变化
1.1 模板语法
  • Vue 2: 使用 v-onv-bind 指令。

  • Vue 3: 依然支持 v-onv-bind,但引入了更简洁的语法,如 @:

代码示例

Vue 2

<template><button v-on:click="handleClick">Click me</button><input v-bind:value="value" />
</template>

Vue 3

<template><button @click="handleClick">Click me</button><input :value="value" />
</template>
1.2 Composition API
  • Vue 2: 主要使用 Options API。

  • Vue 3: 引入了 Composition API,使得逻辑更加模块化和可复用。

代码示例

Vue 2

<template><div><p>{{ message }}</p></div>
</template><script>
export default {data() {return {message: 'Hello Vue 2!'}},methods: {updateMessage() {this.message = 'Updated message'}}
}
</script>

Vue 3

<template><div><p>{{ message }}</p></div>
</template><script setup>
import { ref } from 'vue'const message = ref('Hello Vue 3!')const updateMessage = () => {message.value = 'Updated message'
}
</script>
2. 性能优化
2.1 渲染机制
  • Vue 2: 使用虚拟 DOM 进行渲染。

  • Vue 3: 优化了虚拟 DOM 的实现,减少了内存占用和提升了渲染性能。

2.2 编译器优化
  • Vue 2: 编译器对模板进行静态分析,生成渲染函数。

  • Vue 3: 编译器进行了更多的优化,如静态树提升、动态节点标记等,进一步提高了运行时性能。

3. 新特性
3.1 Teleport
  • Vue 2: 没有 Teleport 组件。

  • Vue 3: 引入了 Teleport 组件,允许将模态框或其他组件的内容渲染到 DOM 的其他位置。

代码示例

Vue 3

<template><teleport to="body"><div class="modal" v-if="visible"><div class="modal-content"><span @click="closeModal" class="close">&times;</span><p>{{ message }}</p></div></div></teleport>
</template><script setup>
import { ref } from 'vue'const visible = ref(true)const closeModal = () => {visible.value = false
}
</script>
3.2 Fragments
  • Vue 2: 不支持多个根节点。

  • Vue 3: 支持 Fragments,允许组件有多个根节点。

代码示例

Vue 3

<template><div>First element</div><div>Second element</div>
</template>
3.3 Suspense
  • Vue 2: 没有 Suspense 组件。

  • Vue 3: 引入了 Suspense 组件,用于异步组件的加载和错误处理。

代码示例

Vue 3

<template><suspense><template #default><AsyncComponent /></template><template #fallback><div>Loading...</div></template></suspense>
</template><script setup>
import { defineAsyncComponent } from 'vue'const AsyncComponent = defineAsyncComponent(() => import('./AsyncComponent.vue'))
</script>

计算属性和监听属性的区别

1. 计算属性(Computed Properties)
  • 定义: 计算属性是基于其依赖的数据自动生成的属性。

  • 特点

    :

    • 声明式地描述依赖关系。

    • 当依赖的数据发生变化时,计算属性会自动更新。

    • 计算属性是惰性的,只有在被访问时才会重新计算。

代码示例

Vue 2

<template><div><p>First Name: <input v-model="firstName" /></p><p>Last Name: <input v-model="lastName" /></p><p>Full Name: {{ fullName }}</p></div>
</template><script>
export default {data() {return {firstName: '',lastName: ''}},computed: {fullName() {return `${this.firstName} ${this.lastName}`}}
}
</script>

Vue 3

<template><div><p>First Name: <input v-model="firstName" /></p><p>Last Name: <input v-model="lastName" /></p><p>Full Name: {{ fullName }}</p></div>
</template><script setup>
import { ref, computed } from 'vue'const firstName = ref('')
const lastName = ref('')const fullName = computed(() => {return `${firstName.value} ${lastName.value}`
})
</script>
2. 监听属性(Watchers)
  • 定义: 监听属性用于观察数据的变化,并执行相应的操作。

  • 特点

    :

    • 声明式地观察数据的变化。

    • 当被监听的数据发生变化时,会触发回调函数。

    • 监听属性是主动的,每次数据变化都会触发回调。

代码示例

Vue 2

<template><div><p>Counter: {{ counter }}</p><button @click="increment">Increment</button></div>
</template>
​
<script>
export default {data() {return {counter: 0}},methods: {increment() {this.counter++}},watch: {counter(newVal, oldVal) {console.log(`Counter changed from ${oldVal} to ${newVal}`)}}
}
</script>

Vue 3

<template><div><p>Counter: {{ counter }}</p><button @click="increment">Increment</button></div>
</template>
​
<script setup>
import { ref, watch } from 'vue'
​
const counter = ref(0)
​
const increment = () => {counter.value++
}
​
watch(counter, (newVal, oldVal) => {console.log(`Counter changed from ${oldVal} to ${newVal}`)
})
</script>

总结

Vue 2 和 Vue 3 都是非常强大的前端框架,各有优势。Vue 3 在性能、API 设计和新特性方面进行了大量的改进,使得开发体验更加流畅和高效。希望本文能够帮助你更好地理解和应用这些技术。

http://www.hkea.cn/news/575844/

相关文章:

  • 南京网站建设公司点击器原理
  • 网站怎么编辑搜狗网站提交入口
  • 自建网站做外贸的流程广告推广方式
  • 警告欺骗网站模板免费注册
  • 获取网站访客信息seo分析师招聘
  • 制作网页的网站有哪些网站建设
  • 日本真人做爰无遮挡视频免费网站嘉兴关键词优化报价
  • 忻州市中小企业局网站贵州整站优化seo平台
  • 网页怎么制作超链接seo兼职接单平台
  • 网站建设中应注意哪些问题重庆整站seo
  • 贵阳网站建设哪家便宜微商软文范例大全100
  • 怎么在微信上做网站竞价交易
  • wordpress优化版4.7.4网站seo设计
  • 网上课程网站精准客户数据采集软件
  • 专业网站建设报价外呼系统电销
  • 网站建设公司价格差别seo还有哪些方面的优化
  • 哪家公司建造了迪士尼乐园关键词优化推广排名多少钱
  • 做教育的网站有哪些内容吗湖南网站营销推广
  • wordpress 跳过ftp搜索引擎排名优化方案
  • 360做的网站北京营销推广公司
  • 我国政府网站建设的趋势宁波seo公司排名榜
  • 高端网站建设,恩愉科技专业的seo搜索引擎优化培训
  • 跨境网站开发公司网站seo思路
  • 冠县网站建设活动推广方案
  • 鲜花培训网站建设网站推广要点
  • 情趣内衣怎么做网站如何制作网页
  • 网站交互技术百度推广登陆后台
  • 网站的推广和宣传方式各行业关键词
  • 腾讯云服务器网站建设淘宝推广哪种方式最好
  • 大专网站建设论文找个免费的网站