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

Vue 开发实战:从入门到精通的经验之谈

零基础入门 Vue,10 分钟快速上手教程

    • 一、初识 Vue
    • 二、搭建 Vue 开发环境,迈开第一步
  • Vue 核心概念大揭秘,响应式系统原来是这么回事儿
    • 三、Vue 核心概念:响应式系统
  • 模板语法与表达式,玩转 Vue 就靠它啦
    • 四、模板语法与表达式,玩转页面元素
  • 组件化开发,就像搭积木一样盖大楼
    • 五、组件化开发,搭积木盖大楼
  • Vuex 状态管理,搞定复杂数据流
    • 六、Vuex 状态管理,搞定复杂数据流
  • Vue 路由,掌控页面跳转的 “方向盘”
    • 七、Vue 路由,掌控页面跳转的 “方向盘”
  • Vue 的工具与生态,开发的 “左膀右臂”
    • 八、Vue 的工具与生态,开发的 “左膀右臂”
  • Vue 项目实战,把知识落地
    • 九、Vue 项目实战,把知识落地
  • Vue 前端工程化与最佳实践,进阶的 “秘籍”
    • 十、Vue 前端工程化与最佳实践,进阶的 “秘籍”
  • Vue 3 新特性前瞻,开启新篇章
    • 十一、Vue 3 新特性前瞻,开启新篇章
  • 结语:Vue 开发者的成长之旅
    • 十二、结语:Vue 开发者的成长之旅

宝子们,今天咱就来唠唠 Vue,这前端开发的 “香饽饽”。要是你对前端开发感兴趣,或者正在摸爬滚打,那 Vue 可得好好学学,闭着眼睛入准没错!

一、初识 Vue

  1. Vue 是个啥玩意儿?
    咱直白点说,Vue 就是个渐进式 JavaScript 框架,简单点就像搭积木的 “万能胶水”,能把网页的界面和数据死死 “粘” 在一起,数据一变,界面立马跟着变,省心省力,开发效率蹭蹭涨。要是和 React、Angular 比,Vue 就像邻家小妹,上手容易,温柔好学,文档啥的都特别贴心,不像有些框架,文档看着跟天书似的,能把人绕晕。

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

  1. Vue 凭啥能脱颖而出?
    Vue 作者尤大(Evan You)那可真是个天才,他结合了 Angular 和 React 的优点,干掉了它们的缺点,搞出了 Vue。Vue 不像 Angular 那么厚重,也不像 React 那么抽象难懂,它轻巧灵活,上手难度低,还特别适合渐进式开发,能一点一点把项目做起来,不像有些框架,非得让你一下子全学会,不然就干不了活。

二、搭建 Vue 开发环境,迈开第一步

  1. 装好 Node.js 和 npm
    Node.js 和 npm 就是前端开发的 “左膀右臂”,就像给电脑装了个 “万能工具箱”,啥都能干。装的时候,打开终端,输入 node -v 和 npm -v,要是能出来版本号,就说明装好了,要是不行,那就去官网下个安装包,按着步骤装就行,简单得很。

  2. 创建 Vue 项目(用 Vue CLI 或 Vite)
    Vue CLI 和 Vite 就像盖房子的两种方法,Vue CLI 是老工匠,经验丰富,功能强大;Vite 是后起之秀,速度快,效率高。咱就拿 Vue CLI 来说,装好后,输入 vue create 项目名,然后按提示一步步选就行,要是拿不准,就选默认的,准没错。

  3. 目录结构大起底
    项目建好了,目录结构就像新家的布局。src 目录是核心地带,里面的 main.js 是 Vue 的入口文件,要是把 Vue 想象成一个军队,main.js 就是司令部,指挥着整个军队的行动。components 文件夹是放组件的,每个组件就像一个小士兵,负责页面上的一个小功能,把它们组合起来,就能打出一场漂亮的 “战斗”。

咱就先说到这儿,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vue 核心概念大揭秘,响应式系统原来是这么回事儿

宝子们,上回咱搭建好了 Vue 开发环境,这回咱就深入到 Vue 的核心,看看它的响应式系统到底是咋回事儿。这玩意儿可厉害了,能让数据和页面紧密相连,数据一变,页面立马跟着变,就像有魔法一样。

三、Vue 核心概念:响应式系统

  1. 数据驱动视图(数据一变,页面跟着变,就像有个 “管家” 在盯着)
    咱就拿个简单例子来说,假设咱有个数据 count,初始值是 0,绑在页面上显示。然后咱写个按钮,点击后 count 加 1。在 Vue 里,你根本不用操心页面更新的事儿,只要把 count 和按钮的点击事件绑好,点击按钮,count 一变,页面上显示的数字就自动跟着变,这就是数据驱动视图的神奇之处。
<template><div><p>{{ count }}</p><button @click="count++">加 1</button></div>
</template><script>
export default {data() {return {count: 0};}
};
</script>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. Vue 响应式原理(Object.defineProperty 劫持对象、依赖收集与通知,还有 Vue 3 里 Proxy 的升级,这些技术就是 Vue 的 “小心机”)
    Vue 2 里用 Object.defineProperty 来劫持对象的属性,就像在属性周围安了个 “监控器”,一旦属性被访问或者修改,就能被检测到。然后通过依赖收集,把相关的更新函数收集起来,等属性变化时,就把这些函数执行一遍,实现页面更新。

Vue 3 里升级用了 Proxy,这玩意儿更强大,能直接代理整个对象,功能更全面,性能也更好,就像从普通监控升级到了高清全方位监控,监控效果那叫一个棒。

宝子们要是觉得这部分有点难,别急,多看几遍,边看边动手写写代码,说不定就豁然开朗了。

咱就说这么多,宝子们要是有啥问题,欢迎在评论区留言,我会接着更。

模板语法与表达式,玩转 Vue 就靠它啦

宝子们,咱接着唠唠 Vue,这回说说模板语法和表达式。这玩意儿就是 Vue 里的 “魔法咒语”,用好了,页面就能按你的意思乖乖变来变去。

四、模板语法与表达式,玩转页面元素

  1. 插值语法(双大括号、v - text、v - html,不同的 “填空” 方式)
    双大括号 {{ }} 就是最简单的插值语法,就像在页面上挖了个坑,把数据填进去就行。比如 {{ message }},message 是个数据,页面上就会显示它的值。

v - text 就是更正式点的插值,它会把数据的值直接显示在元素里,而且会自动过滤掉 HTML 标签,就像在元素里写了个安全的文本。

v - html 就更猛了,能把数据里的 HTML 标签直接渲染出来,但这玩意儿用起来得小心,要是数据里有恶意代码,就容易出事儿,就像请了个杀手进家门,得谨慎。

<template><div><p>{{ message }}</p><p v-text="message"></p><p v-html="htmlMessage"></p></div>
</template><script>
export default {data() {return {message: 'Hello Vue!',htmlMessage: '<span style="color: red;">Hello Vue with HTML!</span>'};}
};
</script>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. 指令系统(v - bind、v - if、v - else、v - else - if、v - for、v - model、v - on,这些指令就是操控页面元素的 “魔法咒语”)
    v - bind 就是用来绑定属性的,比如绑个 class、style,让元素的样式随数据变化。

v - if、v - else、v - else - if 就是条件判断,就像在路口设了个岗哨,条件满足就显示这个元素,不满足就显示另一个元素。

v - for 就是循环渲染列表,要是你有一组数据,想把它们一个个显示在页面上,用这个指令就行。

v - model 就是双向绑定,主要用于表单元素,输入框里的值一变,数据立马跟着变,数据变,输入框里的显示也跟着变,就像在数据和页面之间修了个 “双向车道”。

v - on 就是绑定事件的,点击、鼠标移动啥的,都能用它来触发函数,让页面能和用户互动。

<template><div><div v-bind:class="{ active: isActive }">绑定 class</div><div v-if="isVisible">显示内容</div><div v-else>不显示内容</div><ul><li v-for="(item, index) in items" :key="index">{{ item }}</li></ul><input v-model="message" /><button @click="handleClick">点击我</button></div>
</template><script>
export default {data() {return {isActive: true,isVisible: true,items: ['苹果', '香蕉', '橙子'],message: '',};},methods: {handleClick() {alert('按钮被点击了!');}}
};
</script><style>
.active {color: red;
}
</style>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

组件化开发,就像搭积木一样盖大楼

宝子们,咱接着唠唠 Vue,这回说说组件化开发。这玩意儿就是 Vue 的精髓,把页面拆成一个个小组件,每个组件负责一小块功能,就像搭积木一样,把它们组合起来,就能盖起一座高楼大厦。

五、组件化开发,搭积木盖大楼

  1. 组件注册(全局和局部注册,就像给积木安了个 “身份证”)
    全局注册组件就像给积木安了个 “通用身份证”,在整个项目里都能用。局部注册组件就像给积木安了个 “临时身份证”,只能在当前组件里用。
// 全局注册组件
Vue.component('my-component', {template: '<div>全局组件</div>'
});// 局部注册组件
export default {components: {'my-local-component': {template: '<div>局部组件</div>'}}
};

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. 组件的生命周期(从出生到消亡的故事,钩子函数就是关键情节的 “触发器”)
    组件从出生到消亡有个完整的过程,这个过程有好几个关键节点,每个节点都有对应的钩子函数。比如 beforeCreate,在组件创建之前触发;created,在组件创建之后触发;mounted,在组件挂载到 DOM 上之后触发。你可以在这个钩子函数里干点事儿,比如发个请求获取数据。
export default {data() {return {message: ''};},beforeCreate() {console.log('组件创建之前');},created() {console.log('组件创建之后');// 这里可以发请求获取数据},mounted() {console.log('组件挂载到 DOM 上之后');}
};

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. 父子组件通信(父传子靠 props,子传父靠自定义事件,非父子靠 Vuex,这些规则让组件能 “聊天”)
    父传子就像爸爸给孩子传东西,用 props 就行。子传父就像孩子给爸爸汇报情况,用自定义事件就行。要是组件关系比较远,那就用 Vuex,就像有个公共的 “传话筒”,让组件们能互相交流。
// 父组件
<template><div><child-component :message="parentMessage" @childEvent="handleChildEvent"></child-component></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentMessage: '这是父组件的消息'};},methods: {handleChildEvent(childMessage) {console.log('子组件传来的消息:', childMessage);}}
};
</script>// 子组件
<template><div><p>{{ message }}</p><button @click="$emit('childEvent', '这是子组件的消息')">传消息给父组件</button></div>
</template><script>
export default {props: ['message']
};
</script>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vuex 状态管理,搞定复杂数据流

宝子们,咱接着唠唠 Vue,这回说说 Vuex。要是你的项目数据关系复杂,组件之间数据传来传去乱成一团麻,那 Vuex 就得派上用场啦。它就像个项目里的 “数据交警”,把数据统一管起来,让数据流动有序,避免车祸现场。

六、Vuex 状态管理,搞定复杂数据流

  1. Vuex 是为啥而生(单页面应用数据共享难,Vuex 就是来 “救场” 的)
    在单页面应用里,组件之间数据共享是个让人头疼的事儿。要是两个不沾边的组件需要共享数据,那要是不用 Vuex,可能就得把数据一路从爷爷组件传到爸爸组件,再到儿子组件,费时费力,特别麻烦。Vuex 就把数据统一存到一个 “公共仓库”,哪个组件需要,直接去仓库拿就行,特别方便。

  2. Vuex 核心概念(store、state、getter、mutation、action,各司其职,协同管理状态)
    store 就是那个 “公共仓库”,里面装着项目的所有状态。state 就是具体的状态数据,比如用户信息、商品列表啥的。getter 就像是给 state 加了个 “过滤器”,能对 state 进行加工处理,比如把用户名大写啥的。mutation 就是用来改变 state 的,它就像仓库的管理员,规定了怎么往仓库里存数据或者从仓库里取数据。action 就是用来处理异步操作的,比如发请求获取数据,数据到了之后再调用 mutation 更新 state。

// store.js
import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);export default new Vuex.Store({state: {count: 0,userInfo: null},getters: {doubleCount: state => state.count * 2,formattedUserInfo: state => {if (state.userInfo) {return `${state.userInfo.name} - ${state.userInfo.age}`;}return '';}},mutations: {increment(state) {state.count++;},setUserInfo(state, userInfo) {state.userInfo = userInfo;}},actions: {async fetchUserInfo({ commit }) {try {const response = await fetch('https://api.example.com/user');const data = await response.json();commit('setUserInfo', data);return data;} catch (error) {console.error('获取用户信息失败:', error);}}}
});// 在组件里使用
<template><div><p>计数:{{ count }}</p><p>双倍计数:{{ doubleCount }}</p><p>用户信息:{{ formattedUserInfo }}</p><button @click="incrementCount">1</button><button @click="fetchUserInfo">获取用户信息</button></div>
</template><script>
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex';export default {computed: {...mapState(['count', 'userInfo']),...mapGetters(['doubleCount', 'formattedUserInfo'])},methods: {...mapMutations(['increment']),...mapActions(['fetchUserInfo'])}
};
</script>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. Vuex 模块化与命名空间(让状态管理更有条理,就像给文件分了不同文件夹)
    要是项目大了,状态多了,把所有状态都放在一个 store 里,那就像把所有文件都扔在一个文件夹里,乱七八糟。Vuex 的模块化就能把状态分门别类放好,每个模块都有自己的 state、getters、mutations、actions,这样管理起来就方便多了。
// store/modules/count.js
const countModule = {namespaced: true,state: {count: 0},getters: {doubleCount: state => state.count * 2},mutations: {increment(state) {state.count++;}},actions: {incrementAsync({ commit }) {setTimeout(() => {commit('increment');}, 1000);}}
};// store/modules/user.js
const userModule = {namespaced: true,state: {userInfo: null},getters: {formattedUserInfo: state => {if (state.userInfo) {return `${state.userInfo.name} - ${state.userInfo.age}`;}return '';}},mutations: {setUserInfo(state, userInfo) {state.userInfo = userInfo;}},actions: {async fetchUserInfo({ commit }) {try {const response = await fetch('https://api.example.com/user');const data = await response.json();commit('setUserInfo', data);return data;} catch (error) {console.error('获取用户信息失败:', error);}}}
};// store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
import countModule from './modules/count';
import userModule from './modules/user';Vue.use(Vuex);export default new Vuex.Store({modules: {count: countModule,user: userModule}
});// 在组件里使用
<template><div><p>计数:{{ count }}</p><p>双倍计数:{{ doubleCount }}</p><p>用户信息:{{ formattedUserInfo }}</p><button @click="incrementCount">1</button><button @click="fetchUserInfo">获取用户信息</button></div>
</template><script>
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex';export default {computed: {...mapState('count', ['count']),...mapGetters('count', ['doubleCount']),...mapState('user', ['userInfo']),...mapGetters('user', ['formattedUserInfo'])},methods: {...mapMutations('count', ['increment']),...mapActions('user', ['fetchUserInfo'])}
};
</script>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vue 路由,掌控页面跳转的 “方向盘”

宝子们,咱接着唠唠 Vue,这回说说 Vue 路由。这玩意儿就像网站的 “导航仪”,能带着用户在不同的页面之间来回穿梭,要是没有它,用户想看别的页面,那得重新加载整个网站,体验差得很。

七、Vue 路由,掌控页面跳转的 “方向盘”

  1. 单页面应用和路由的不解之缘(原理浅谈,Vue Router 登场)
    单页面应用就是整个应用只有一张 HTML 页面,内容靠 JavaScript 动态更新。这样做的好处就是用户体验好,页面切换快,不像传统网页,每次切换页面都得重新加载整个页面,特别慢。Vue Router 就是 Vue 里专门管路由的,它能把不同的 URL 映射到不同的组件上,实现页面的无缝切换。

  2. Vue Router 基础(安装配置、路由规则,搭建好跳转的 “轨道”)
    安装 Vue Router 特别简单,用 npm 安装就行。然后在项目里配置路由规则,把 URL 和组件对应起来。这样,用户访问不同的 URL,就能看到不同的组件内容。

// 安装 Vue Router
npm install vue-router@3// router/index.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';Vue.use(VueRouter);export default new VueRouter({mode: 'history',routes: [{path: '/',name: 'home',component: Home},{path: '/about',name: 'about',component: About}]
});// 在 main.js 里引入路由
import Vue from 'vue';
import App from './App.vue';
import router from './router';Vue.config.productionTip = false;new Vue({router,render: h => h(App)
}).$mount('#app');// 在 App.vue 里使用路由
<template><div id="app"><nav><router-link to="/">首页</router-link> |<router-link to="/about">关于</router-link></nav><router-view /></div>
</template>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. 路由导航和参数传递(声明式导航、编程式导航、路由参数,让页面跳转更灵活)
    声明式导航就是用 router - link 标签,简单方便,适合在页面里放个链接让用户点击跳转。编程式导航就是用编程的方法,比如 this.$router.push,这种方式更灵活,适合在代码里根据条件跳转。

路由参数就像给路由加了个 “小尾巴”,能带点信息过去,比如用户 id、商品 id 之类的。这样,目标页面就能根据这些参数展示不同的内容。

// 声明式导航
<template><div><router-link :to="{ name: 'user', params: { id: userId }}">用户详情</router-link></div>
</template>// 编程式导航
methods: {goToUserDetail() {this.$router.push({ name: 'user', params: { id: this.userId }});}
}// 路由规则
{path: '/user/:id',name: 'user',component: UserDetail
}// 在目标组件里接收参数
<template><div><p>用户 ID{{ $route.params.id }}</p></div>
</template>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. 路由守卫,给应用上把 “安全锁”(全局守卫、组件内守卫)
    路由守卫就像门卫,能控制用户能不能进入某个页面。全局守卫就像在项目的大门口设了个岗哨,对所有页面的访问进行控制。组件内守卫就像在组件门口设了个小岗哨,只对这个组件的访问进行控制。
// 全局守卫
router.beforeEach((to, from, next) => {if (to.meta.requiresAuth && !isAuthenticated) {next('/login');} else {next();}
});// 组件内守卫
beforeRouteEnter(to, from, next) {if (to.meta.requiresAuth && !isAuthenticated) {next('/login');} else {next();}
}

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vue 的工具与生态,开发的 “左膀右臂”

宝子们,咱接着唠唠 Vue,这回说说 Vue 的工具与生态。这玩意儿就像 Vue 的 “小跟班”,能让开发变得更轻松、更高效,有了它们,开发就像有了顺风耳、千里眼,啥都能干。

八、Vue 的工具与生态,开发的 “左膀右臂”

  1. Vue DevTools,调试的 “神兵利器”(安装使用、监控功能,让调试不再抓狂)
    Vue DevTools 就是 Vue 开发的 “瑞士军刀”,安装后,在浏览器打开 Vue 页面,就能看到个 Vue 标签。点进去,组件树、状态数据啥的都能看到,还能实时修改数据,看页面变化,这 debugging 效率直接起飞。
# 安装 Vue DevTools(以 Chrome 为例)
1. 打开 Chrome 网上应用店(https://chrome.google.com/webstore)
2. 搜索结果页中点击 “添加到 Chrome”,安装插件
3. 安装完成后,刷新页面就能看到右上角多了个 Vue 图标,点击就能使用
  1. 前端构建工具和 Vue 项目(Webpack、Babel 和 Vue 项目的关系,就像幕后 “推手”)
    Webpack 就像是个大总管,能把各种资源文件(JS、CSS、图片啥的)打包成浏览器能识别的格式。Babel 就像个翻译官,能把新的 JavaScript 语法翻译成老的语法,让旧浏览器也能看懂。在 Vue 项目里,它们俩配合 Vue - loader、babel - loader 等工具,能把 Vue 组件文件(.vue)里的模板、脚本、样式分别处理好,最后打包成一个完整的应用,这效率杠杠的。

  2. Vue 生态库巡礼(UI 组件库、工具库,丰富开发的 “武器库”)
    UI 组件库就像个家具城,里面有各种现成的组件(按钮、输入框、表格啥的),拿来就能用,省去了自己写样式、写逻辑的麻烦。Element UI、Vuetify 都是不错的选择。工具库就像个百宝箱,里面装着各种工具函数,能帮你处理 HTTP 请求(axios)、管理状态(Vuex)、做表单验证(vuelidate)等,啥都有,开发起来特别省心。

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vue 项目实战,把知识落地

宝子们,咱接着唠唠 Vue,这回说说 Vue 项目实战。这玩意儿就像盖房子,光有砖头(知识)不行,还得知道怎么砌墙、怎么搭梁,才能把房子盖起来。项目实战就是把学的知识都用起来,做出个实实在在的东西。

九、Vue 项目实战,把知识落地

  1. 项目需求分析与规划(选案例、拆模块,就像盖房子先画图纸)
    选个案例特别重要,要是你是个小白,那 TodoList 就挺合适,简单易懂,能把 Vue 的基本知识都用上。要是你有基础了,那可以挑战在线商城、在线博客啥的,这些项目能把你学的知识都串起来,还能拓展新技能。

拆模块就像把一个大蛋糕切成小块,比如在线商城,可以拆成商品列表模块、购物车模块、用户登录模块等,每个模块负责一块功能,这样开发起来有条不紊,不会乱。

  1. 编码实战(搭框架、配路由状态、开发组件,一步步把项目搭起来)
    搭框架就是把项目的 “骨架” 搭起来,把 Vue、Vuex、Vue Router 等核心库引入,配置好。然后配路由,把页面和 URL 对应起来。再开发组件,把每个模块的功能实现。这过程就像搭积木,一步一步,把项目搭起来。
# 搭框架
npm install vue vue-router vuex axios# 在 main.js 里引入
import Vue from 'vue';
import VueRouter from 'vue-router';
import Vuex from 'vuex';
import axios from 'axios';Vue.use(VueRouter);
Vue.use(Vuex);# ... 后续配置略# 开发组件(以 TodoList 为例)
// components/TodoList.vue
<template><div><input v-model="newTodo" @keyup.enter="addTodo" /><ul><li v-for="(todo, index) in todos" :key="index"><input type="checkbox" v-model="todo.completed" /><span :class="{ completed: todo.completed }">{{ todo.text }}</span><button @click="removeTodo(index)">删除</button></li></ul></div>
</template><script>
export default {data() {return {newTodo: '',todos: []};},methods: {addTodo() {if (this.newTodo.trim()) {this.todos.push({ text: this.newTodo, completed: false });this.newTodo = '';}},removeTodo(index) {this.todos.splice(index, 1);}}
};
</script><style>
.completed {text-decoration: line-through;color: gray;
}
</style>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. 项目部署上线(构建代码、部署服务器,让项目能被大家看到)
    项目开发好了,得部署上线,这样才能让别人看到。构建代码就是把项目打包成生产环境能用的格式,一般用 npm run build 命令就行,这命令会把项目打包成 dist 文件夹里的文件。然后把这些文件放到服务器上,别人就能通过域名访问了,这过程就像把做好的蛋糕装盒,送到顾客手上。

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vue 前端工程化与最佳实践,进阶的 “秘籍”

宝子们,咱接着唠唠 Vue,这回说说 Vue 前端工程化与最佳实践。这玩意儿就像修行,能让项目变得更稳定、更高效、更可持续发展,有了它,项目就像坐上了高铁,飞速前进。

十、Vue 前端工程化与最佳实践,进阶的 “秘籍”

  1. 代码规范与风格指南(JS、HTML、CSS 规范,组件命名结构,让代码整齐划一)
    代码规范就像给代码立规矩,所有代码都按规矩写,别人一看就懂,维护起来特别方便。比如 JS 里变量命名用驼峰式,HTML 里标签闭合要规范,CSS 里样式命名要有意义等。组件命名也得规范,最好能一眼看出组件的功能,比如 UserList、TodoItem 等。

  2. 性能优化策略(减少重渲染、资源加载优化、性能监控,让项目跑得又快又稳)
    减少重渲染就像给车减负,能让项目跑得更快。可以用 Vue 的 key 属性,让 Vue 知道哪些元素变了,哪些没变,只重渲染变了的元素。资源加载优化就像给车加油,把图片、JS 文件等资源压缩、合并、懒加载,能让项目加载更快。性能监控就像给车装个仪表盘,能实时监控项目的性能,发现问题及时解决。

  3. 项目测试体系(单元测试、集成测试、端到端测试,给项目质量上 “保险”)
    单元测试就像给每个零部件做检查,确保每个函数、组件都能正常工作。集成测试就像把零部件组装起来检查,确保模块之间能协同工作。端到端测试就像把整个项目当成品检查,确保用户操作流程顺畅。有了这三层测试,项目质量就有了保障。

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

Vue 3 新特性前瞻,开启新篇章

宝子们,咱接着唠唠 Vue,这回说说 Vue 3。这玩意儿就像 Vue 的 “升级版”,性能更好,功能更强,有了它,开发就像有了 “超能力”,能干更多事儿。

十一、Vue 3 新特性前瞻,开启新篇章

  1. Composition API(为啥引入、setup 函数和响应式转换,新的 “写法革命”)
    Composition API 就是 Vue 3 的 “杀手锏”,它把 Vue 2 里分散的生命周期、计算属性、方法等集中起来,用 setup 函数统一管理,这样代码逻辑更清晰,复用起来也方便。响应式转换就像给数据加了个 “魔法外衣”,让数据自动变成响应式的,和 Vue 2 比,这转换更灵活、更强大。
// Vue 3 Composition API 示例
<template><div><p>{{ count }}</p><button @click="increment">1</button></div>
</template><script>
import { ref, onMounted } from 'vue';export default {setup() {const count = ref(0);const increment = () => {count.value++;};onMounted(() => {console.log('组件挂载了');});return {count,increment};}
};
</script>

这段代码直接拿去就能跑,宝子们可以试试,是不是超简单?

  1. Teleport、Suspense 等新组件(新奇的用法和优势)
    Teleport 就像个 “传送门”,能把组件的内容传送到页面的其他地方,特别适合做模态框、提示框啥的,能让 DOM 结构更合理。Suspense 就像个 “守门员”,能在异步组件加载时显示个 “占位符”,等组件加载好了再显示,这样用户体验更好。

  2. Vue 3 性能提升与兼容性(速度为啥变快、和 Vue 2 怎么兼容迁移,新旧交替的故事)
    Vue 3 用新算法、新架构,把性能提上去了,和 Vue 2 比,渲染更快,内存占用更少。兼容性也考虑到了,Vue 3 有个 Vue 2 兼容模式,能让 Vue 2 的项目逐步迁移到 Vue 3,就像搭积木一样,一块一块替换,不会把整个项目搞垮。

宝子们要是觉得这篇文章对你有帮助,那就点个赞、收藏一下吧,你的支持就是我更文的最大动力!

咱就说这么多,宝子们要是对这部分感兴趣,欢迎在评论区留言,我会接着更。

结语:Vue 开发者的成长之旅

宝子们,咱这 Vue 的系列教程就快讲完了,但这不意味着学习就结束了。Vue 就像是个无底洞,越学越深,越学越有意思。

十二、结语:Vue 开发者的成长之旅

  1. 回顾 Vue 知识体系(梳理学过的内容,加深印象)
    从初识 Vue 到 Vue 3 新特性,咱一路走来,学了好多知识。组件化开发、响应式系统、状态管理、路由啥的,这些知识点就像一颗颗珍珠,串起来就是你 Vue 开发的 “项链”,越戴越亮。

  2. 持续学习和社区参与(学习资源推荐、参与社区交流,让技术不断进阶)
    学习不能停,Vue 社区就像个宝藏库,有好多学习资源。官方文档就像 “葵花宝典”,得反复研读。社区论坛、技术博客就像 “武林秘籍”,能学到别人的实战经验。还有开源项目,参与进去,能和大神们一起切磋,这技术蹭蹭涨。

  3. Vue 开发的未来展望和鼓励(展望前景,给读者加油鼓劲)
    Vue 的未来就像星辰大海,无限广阔。新特性不断推出,性能越来越好,应用场景越来越丰富。宝子们要是现在努力学习,说不定将来就能成为 Vue 大师,开发出厉害的项目,改变世界呢!加油,💪!

本文就和大家聊到这儿啦,要是觉得对你有帮助,记得点赞、收藏加关注哦,咱们下期再见,拜拜 ~

相关文章:

Vue 开发实战:从入门到精通的经验之谈

零基础入门 Vue&#xff0c;10 分钟快速上手教程 一、初识 Vue二、搭建 Vue 开发环境&#xff0c;迈开第一步 Vue 核心概念大揭秘&#xff0c;响应式系统原来是这么回事儿三、Vue 核心概念&#xff1a;响应式系统 模板语法与表达式&#xff0c;玩转 Vue 就靠它啦四、模板语法与…...

快手OneRec 重构推荐系统:从检索排序到生成统一的跃迁

文章目录 1. 背景2. 方法2.1 OneRec框架2.2 Preliminary2.3 生成会话列表2.4 利用奖励模型进行迭代偏好对齐2.4.1 训练奖励模型2.4.2 迭代偏好对齐 3. 总结 昨天面试的时候聊到了OneRec&#xff0c;但是由于上次看这篇文章已经是一个月之前&#xff0c;忘得差不多了&#xff0c…...

c# 简单实现将Message的内容保存到txt中,超过100个则清理旧文件

using System; using System.IO; using System.Threading;public static class LogManager {private static readonly object _fileLock new object(); // 线程安全锁private const int MaxFiles 100; // 最大文件数限制private const string LogDire…...

精打细算 - GPU 监控

精打细算 - GPU 监控 在上一篇,咱们历经千辛万苦,终于让应用程序在 Pod 的“驾驶舱”里成功地“点火”并用上了 GPU。太棒了!但是,车开起来是一回事,知道车速多少、油耗多少、引擎水温是否正常,则是另一回事,而且同样重要,对吧? 我们的 GPU 应用跑起来了,但新的问题…...

软件测试的页面交互标准:怎样有效提高易用性

当用户遇到"反人类"设计时 "这个按钮怎么点不了&#xff1f;"、"错误提示完全看不懂"、"我输入的内容去哪了&#xff1f;"——这些用户抱怨背后&#xff0c;都指向同一个问题&#xff1a;页面交互的易用性缺陷。作为软件测试工程师&a…...

共享单车出行规律与决定因素的空间交互分析——以北京六大区为例

共享单车出行规律与决定因素的空间交互分析——以北京六大区为例 原文&#xff1a;Spatial Interaction Analysis of Shared Bicycles Mobility Regularity and Determinants: A Case Study of Six Main Districts, Beijing 这篇文章主要研究了北京六个主要城区共享单车的流动…...

Windows上安装FFmpeg的详细指南

1.下载FFmpeg 访问FFmpeg官方下载页面&#xff1a;https://ffmpeg.org/download.html 点击"Windows builds from gyan.dev"或"Windows builds by BtbN" gyan.dev版本&#xff1a;https://www.gyan.dev/ffmpeg/builds/ BtbN版本&#xff1a;https://githu…...

React-在使用map循环数组渲染列表时须指定唯一且稳定值的key

在渲染列表的时候&#xff0c;我们须给组件或者元素分配一个唯一值的key, key是一个特殊的属性&#xff0c;不会最终加在元素上面&#xff0c;也无法通过props.key来获取&#xff0c;仅在react内部使用。react中的key本质是服务于diff算法, 它的默认值是null, 在diff算法过程中…...

Nodejs数据库单一连接模式和连接池模式的概述及写法

概述 单一连接模式和连接池模式是数据库连接的两种主要方式&#xff1a; 单一连接模式&#xff1a; 优点&#xff1a;实现简单&#xff0c;适合小型应用缺点&#xff1a;每次请求都需要创建新连接&#xff0c;连接创建和销毁开销大&#xff0c;并发性能差&#xff0c;容易出…...

作业2 CNN实现手写数字识别

# 导入必要库 import numpy as np import matplotlib.pyplot as plt import seaborn as sns # 用于高级可视化 from tensorflow import keras from tensorflow.keras import layers from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay import time # 用于…...

整流二极管详解:原理、作用、应用与选型要点

一、整流二极管的基本定义 整流二极管是一种利用PN结单向导电性将交流电&#xff08;AC&#xff09;转换为直流电&#xff08;DC&#xff09;的半导体器件。其核心特性是正向导通、反向截止&#xff0c;允许电流仅沿单一方向流动。 典型结构&#xff1a;硅材料&#xff08;正向…...

WordPress自定义页面与文章:打造独特网站风格的进阶指南

文章目录 引言一、理解WordPress页面与文章的区别二、主题与模板层级&#xff1a;自定义的基础三、自定义页面模板&#xff1a;打造专属页面风格四、自定义文章模板&#xff1a;打造个性化文章呈现五、使用自定义字段和元数据&#xff1a;增强内容灵活性六、利用WordPress钩子&…...

PHP最新好看UI个人引导页网页源码

PHP最新好看UI个人引导页网页源码 采用PHP、HTML、CSS及JavaScript等前端技术&#xff0c;构建了一个既美观又实用的个人主页解决方案。 源码设计初衷在于提供一个高度可定制、跨平台兼容的模板&#xff0c;让用户无需深厚的编程基础&#xff0c;即可快速搭建出专业且富有创意的…...

jQuery — 动画和事件

介绍 jQuery动画与事件是提升网页交互的核心工具。动画方面&#xff0c;jQuery通过简洁API实现平滑过渡效果&#xff0c;提供预设方法如slideUp()&#xff0c;支持.animate()自定义CSS属性动画&#xff0c;并内置队列系统实现动画链式执行。开发者可精准控制动画速度、回调时机…...

arkTs:使用回调函数的方法实现子组件向父组件传值

使用回调函数的方法实现子组件向父组件传值 1 主要内容说明2 实现步骤2.1 父组件中定义回调函数2.2 子组件声明并调用回调函数2.3 注意事项 3 源码3.1 父组件3.2 子组件3.3 源码效果显示截图 4 结语5 定位日期 1 主要内容说明 本文源码是一套 父组件与子组件之间双向数据传递的…...

VBA 调用 dll 优化执行效率

问题描述 之前excel 用vba写过一个应用&#xff0c;请求的是aws lambda 后端, 但是受限于是云端服务&#xff0c;用起来响应特别慢&#xff0c;最近抽了点时间准备优化下&#xff0c;先加了点日志看看是哪里慢了 主方法代码如下&#xff0c;函数的主要目的是将 Excel 工作簿的…...

【机器学习-周总结】-第4周

以下是本周学习内容的整理总结&#xff0c;从技术学习、实战应用到科研辅助技能三个方面归纳&#xff1a; 文章目录 &#x1f4d8; 一、技术学习模块&#xff1a;TCN 基础知识与结构理解&#x1f539; 博客1&#xff1a;【时序预测05】– TCN&#xff08;Temporal Convolutiona…...

Django-Friendship 项目常见问题解决方案

Django-Friendship 项目常见问题解决方案 django-friendship Django app to manage following and bi-directional friendships 项目地址: https://gitcode.com/gh_mirrors/dj/django-friendship Django-Friendship 是一个基于 Django 的应用&#xff0c;它允许创建和管…...

C语言用if else求三个数最小值的一题多解

一、问题引入 假设x,y,z为整数,使用if else语句求x,y,z三个数中的最小值? 二、三种解法 第一种解法: #include<stdio.h> int main(){int x,y,z,min;printf("请输入三个整数&#xff1a;");scanf_s("%d %d %d", &x, &y, &z);//初始值…...

AI时代下 你需要和想要了解的英文缩写含义

在AI智能时代下&#xff0c;越来愈多的企业都开始重视并应用以及开发AI相关产品&#xff0c;这个时候都会或多或少的涉及到英文&#xff0c;英文还好&#xff0c;但是如果是缩写&#xff0c;如果我们没有提前了解过&#xff0c;我们往往很难以快速Get到对方的意思。在这里&…...

uniApp小程序保存定制二维码到本地(V3)

这里的二维码组件用的 uv-ui 的二维码 可以按需引入 QRCode 二维码 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 <uv-qrcode ref"qrcode" :size"280" :value"payCodeUrl"></uv-qrcode>&l…...

2025年对讲机选购指南:聚焦核心参数与场景适配

在无线通信领域&#xff0c;对讲机始终占据着专业通讯工具的独特地位。随着5G时代到来和物联网技术深化&#xff0c;2025年的对讲机市场正呈现智能化、专业化、场景化的升级趋势。面对琳琅满目的产品&#xff0c;选购者需从通信性能、环境适应性、智能集成度三个维度进行综合考…...

C/C++ 动态链接详细解读

1. 为什么要动态链接&#xff1f; 1.1 静态链接浪费内存和磁盘空间 静态链接的方式对于计算机内存和磁盘空间浪费非常严重&#xff0c;特别是多进程操作系统的情况下&#xff0c;静态链接极大的浪费了内存空间。在现在的Linux系统中&#xff0c;一个普通的程序会使用的C 语言静…...

力扣-hot100(无重复字符的最长子串)

3. 无重复字符的最长子串 中等 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。暴力直观解法一&#xff1…...

python flask 项目部署

文章目录 概述 windows 部署准备工作使用 Waitress 部署 Flask 应用 linux 部署**2. 使用 WSGI 服务器**示例&#xff1a;使用 Gunicorn nginx反向代理**5. 使用进程管理工具**示例&#xff1a;使用 Systemd 概述 在 Windows 上使用 Waitress 部署 Flask 应用是一个不错的选择…...

Java课程内容大纲(附重点与考试方向)

本文是在传统 Java 教程框架基础上&#xff0c;加入了重点提示与考试思路&#xff0c;适合用于课程备考、知识查漏与面试准备。 第1章&#xff1a;Java语言基础 ⭐ 重点知识&#xff1a; Java平台特点&#xff08;跨平台性、JVM&#xff09; JDK、JRE、JVM 区别 Java 程序的…...

实现AWS Lambda函数安全地请求企业内部API返回数据

需要编写一个Lambda函数在AWS云上运行&#xff0c;它需要访问企业内部的API获取JSON格式的数据&#xff0c;企业有网关和防火墙&#xff0c;API有公司的okta身份认证&#xff0c;通过公司的域账号来授权访问&#xff0c;现在需要创建一个专用的域账号&#xff0c;让Lambda函数访…...

面试题--随机(一)

MySQL事务中的ACID特性&#xff1f; A 原子性 事务是一组SQL语句&#xff0c;不可分割 C 一致性 事务中的SQL语句要么同时执行&#xff0c;即全部执行成功&#xff0c;要么全部不执行&#xff0c;即执行失败 I 隔离性 MySQL中的各个事务通过不同的事务隔离等级&#xff0c;产生…...

200+短剧出海平台:谁能成为“海外红果”?

2025年&#xff0c;短剧的国际市场表现令人瞩目。仅在两年前&#xff0c;业界关注的焦点仍是美国市场&#xff0c;如今国产短剧应用已成功打入包括印尼、巴西、美国、墨西哥、印度、菲律宾、泰国、日本、哥伦比亚及韩国在内的多个国家&#xff0c;轻松获得超过500万次下载。 市…...

Visio导出清晰图片步骤

在Visio里画完图之后如何导出清晰的图片&#xff1f;&#x1f447; ①左上角单击【文件】 ②导出—更改文件类型—PNG/JPG ③分辨率选择【打印机】&#xff0c;大小选择【源】&#xff0c;即可。 ④选择保存位置并命名 也可以根据自己需要选择是否需要【透明底】哈。 选PNG 然…...