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

衡东建设局网站公司内部交流 网站模板

衡东建设局网站,公司内部交流 网站模板,可信网站验证,静安区建设工程招标投标管理部门网站1. Vue 简介 1.1 什么是 Vue? Vue 是一套用于构建用户界面的渐进式框架。Vue 的核心库专注于视图层,易于与其他库或现有项目集成。Vue 的目标是通过尽可能简单的 API 实现数据双向绑定和组件化开发。 1.2 什么是“渐进式”? “渐进式”意味…

1. Vue 简介

1.1 什么是 Vue?

        Vue 是一套用于构建用户界面的渐进式框架。Vue 的核心库专注于视图层,易于与其他库或现有项目集成。Vue 的目标是通过尽可能简单的 API 实现数据双向绑定组件化开发

1.2 什么是“渐进式”?

        “渐进式”意味着 Vue 可以逐步应用到项目中。你可以从简单的页面交互开始,逐步引入 Vue 的更多功能,如组件化、路由、状态管理等,而不需要一开始就全面重构项目。

1.3 Vue 的核心特性

  • 数据双向绑定:Vue 通过 MVVM 模式实现数据与视图的双向绑定,数据的变化会自动反映在视图上,视图的变化也会同步到数据。

  • 组件化开发:Vue 允许将页面拆分为多个可复用的组件,每个组件都有自己的逻辑和样式,便于维护和复用。

  • 响应式系统:Vue 的响应式系统能够自动追踪数据的变化,并更新视图。

2. Vue 的响应式原理

2.1 Vue2 的响应式实现

        Vue2 使用 Object.defineProperty 来实现数据的响应式。通过为对象的每个属性设置 gettersetter,Vue 能够监听数据的变化并触发视图更新。

Object.defineProperty(obj, key, {get() {// 读取属性时的回调},set(newValue) {// 设置属性时的回调}
});

2.2 Vue3 的响应式实现

        Vue3 使用 Proxy 替代了 Object.definePropertyProxy 可以监听整个对象的变化,而不需要为每个属性单独设置 gettersetter,性能更好且支持更多的操作。

3. 为什么要使用 Vue?

  1. 减少繁琐的 DOM 操作:Vue 通过数据驱动视图,开发者无需手动操作 DOM。

  2. 数据响应式:Vue 自动追踪数据变化并更新视图,开发者可以更专注于业务逻辑。

  3. 提高开发效率:Vue 提供了丰富的工具和生态,如 Vue CLI、Vue Router、Vuex 等,能够快速构建复杂的单页应用。

  4. 完整的生态圈:Vue 拥有完善的生态系统,支持声明式编程、组件化开发、路由管理、状态管理等。

4. Vue 的基本使用

4.1 引入 Vue

可以通过以下两种方式引入 Vue:

        1. 原生引入:通过 <script> 标签直接引入 Vue 文件。

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>

        2. 工程化引入:使用构建工具如 Webpack、Vue CLI 或 Vite 来构建 Vue 项目。

4.2 初始化 Vue 程序

new Vue({el: '#app', // 挂载点data() {return {msg: 'Hello Vue!'};}
});

5. Vue 的基础语法

5.1 模板语法

        Vue 使用双大括号 {{ }} 进行插值,支持 JS 表达式。

<div id="app">{{ msg }}
</div>

5.2 指令

Vue 提供了多种指令来操作 DOM:

  • v-model:实现表单元素与数据的双向绑定。

  • v-html:渲染 HTML 内容。

  • v-text:渲染纯文本。

  • v-bind:动态绑定属性,简写为 :

  • v-on:绑定事件,简写为 @

  • v-if / v-show:条件渲染。

  • v-for:列表渲染。

5.3 计算属性与侦听器

  • 计算属性computed 用于定义依赖其他属性的计算属性。

    computed: {fullName() {return this.firstName + ' ' + this.lastName;}
    }
  • 侦听器watch 用于监听数据的变化并执行相应的操作。

    watch: {msg(newVal, oldVal) {console.log('msg changed:', newVal);}
    }

5.4 过滤器

        过滤器用于对数据进行格式化处理。

<p>{{ msg | capitalize }}</p>filters: {capitalize(value) {return value.toUpperCase();}
}

6. Vue 组件

6.1 组件的定义与使用

        组件是 Vue 的核心概念之一,允许将页面拆分为多个可复用的模块。

const MyComponent = {template: '<div>{{ msg }}</div>',data() {return {msg: 'Hello Component!'};}
};new Vue({el: '#app',components: {'my-component': MyComponent}
});

6.2 组件通信

  • 父传子:通过 props 传递数据。

    // 父组件
    <child :msg="parentMsg"></child>// 子组件
    props: ['msg']
  • 子传父:通过 $emit 触发事件并传递数据。

    // 子组件
    this.$emit('update', newValue);// 父组件
    <child @update="handleUpdate"></child>
  • 兄弟组件通信:通过事件总线或 Vuex 进行通信。

7. Vue 的生命周期

Vue 组件的生命周期分为 4 个阶段,每个阶段都有对应的钩子函数:

  1. 创建阶段beforeCreatecreated

  2. 挂载阶段beforeMountmounted

  3. 更新阶段beforeUpdateupdated

  4. 销毁阶段beforeDestroydestroyed

    new Vue({el: '#app',data() {return {msg: 'Hello Vue!'};},created() {console.log('组件创建完成');},mounted() {console.log('组件挂载完成');}
    });

8. Vue 路由 (Vue Router)

8.1 路由的基本使用

        Vue Router 是 Vue 的官方路由管理器,用于实现单页应用中的页面导航。

const router = new VueRouter({routes: [{ path: '/', component: Home },{ path: '/about', component: About }]
});new Vue({router,el: '#app'
});

8.2 路由传参

  • 查询参数:通过 query 传递参数。

    this.$router.push({ path: '/detail', query: { id: 1 } });
  • 动态路由:通过 params 传递参数。

    this.$router.push({ name: 'detail', params: { id: 1 } });

8.3 路由守卫

        路由守卫用于在导航过程中进行拦截或权限控制。

router.beforeEach((to, from, next) => {if (to.meta.requiresAuth && !isAuthenticated) {next('/login');} else {next();}
});

9. Vue 过渡与动画

        Vue 提供了 <transition> 组件来实现元素的过渡和动画效果。

<transition name="fade"><div v-if="show">Hello Vue!</div>
</transition><style>
.fade-enter-active, .fade-leave-active {transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {opacity: 0;
}
</style>

10. Vue 混入 (Mixin)

        混入是一种代码复用的方式,允许将组件的选项(如 datamethods 等)提取到一个单独的对象中,并在多个组件中复用。

const myMixin = {data() {return {msg: 'Hello Mixin!'};}
};new Vue({mixins: [myMixin],el: '#app'
});

11. 自定义指令

        Vue 允许开发者自定义指令来扩展 DOM 操作。

<input v-focus>Vue.directive('focus', {inserted(el) {el.focus();}
});

12. Vue 项目构建

12.1 Vue CLI 脚手架

1. 脚手架简介

        Vue CLI 是 Vue 官方提供的工程化项目构建工具,能够快速生成标准化的 Vue 项目结构,集成 Webpack、Babel、ESLint 等工具链。

2. 安装与使用
# 全局安装
npm install -g @vue/cli# 验证安装
vue --version# 创建项目 (命令行)
vue create project-name# 可视化创建 (浏览器打开)
vue ui
3. 项目结构

生成的项目包含以下核心文件:

  • src/main.js: 入口文件

  • src/App.vue: 根组件

  • src/router/: 路由配置目录

  • src/views/: 页面级组件目录


13. Vue Router 路由系统

13.1 路由核心概念
  • SPA (单页应用):通过 URL 映射不同组件,实现无刷新页面切换

  • 动态路由:通过参数匹配不同内容(如 /user/:id

  • 嵌套路由:父子层级的页面结构

  • 编程式导航:通过 JS 控制页面跳转

13.2 路由配置流程
        (1) 安装路由
npm install vue-router@3.0.0  # Vue2 使用 3.x 版本
        (2) 路由配置文件

      src/router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'Vue.use(VueRouter)const routes = [{path: '/',redirect: '/list'  // 重定向},{path: '/list',name: 'list',component: () => import('@/views/ListView.vue')  // 懒加载},{path: '/detail/:id',  // 动态路由name: 'detail',component: () => import('@/views/DetailView.vue')}
]const router = new VueRouter({routes
})export default router
        (3) 挂载路由

     src/main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'new Vue({router,  // 注入路由实例render: h => h(App)
}).$mount('#app')

14. 路由传参方式对比

方式语法示例获取方法特点
Query 参数/detail?id=1this.$route.query.id参数明文显示在 URL
Params 参数/detail/1 + path: '/detail/:id'this.$route.params.id需定义动态路由,刷新后参数保留
命名路由传参{ name: 'detail', params: { id:1 } }this.$route.params.id需配置路由 name,参数不在 URL 显示
示例代码

        List.vue 传递参数:

<router-link :to="{ path: '/detail', query: { id: 1, type: '旅游' }}">链接1</router-link>
<router-link :to="{ name: 'detail', params: { id: 2 }}">链接2</router-link>

        Detail.vue 接收参数:

export default {created() {console.log('Query参数:', this.$route.query.id)console.log('Params参数:', this.$route.params.id)}
}

15. 路由守卫

15.1 全局守卫

   router/index.js

router.beforeEach((to, from, next) => {// 1. 权限验证示例if (to.meta.requiresAuth && !isLogin) {next('/login')} // 2. 放行路由else {next()}
})

15.2 路由独享守卫

{path: '/admin',component: AdminPage,beforeEnter: (to, from, next) => {if (!isAdmin) next('/403')else next()}
}

15.3 组件内守卫

   DetailView.vue

export default {beforeRouteEnter(to, from, next) {// 组件渲染前调用next(vm => {// 通过 vm 访问组件实例})},beforeRouteLeave(to, from, next) {// 离开组件时调用const answer = confirm('确定离开?')answer ? next() : next(false)}
}

16. 嵌套路由

16.1 配置嵌套路由

   router/index.js

{path: '/user',component: UserLayout,children: [{ path: 'profile',  // 匹配 /user/profilecomponent: UserProfile },{ path: 'settings', // 匹配 /user/settingscomponent: UserSettings }]
}

16.2 父组件模板

   UserLayout.vue

<template><div><h2>用户中心</h2><router-view></router-view> <!-- 子路由出口 --></div>
</template>

17. 路由模式

模式特点配置方法
Hash 模式URL 带 #,兼容性好默认模式,无需配置
History 模式#,需要服务器支持mode: 'history'
const router = new VueRouter({mode: 'history',routes
})

18. 常见问题解决

18.1 页面刷新后 Params 参数丢失

  • 使用 Query 参数替代

  • 将参数存储在 Vuex 或 localStorage 中

18.2 路由重复跳转报错

// 捕获重复导航错误
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {return originalPush.call(this, location).catch(err => err)
}

总结

        Vue 是一个功能强大且易于上手的渐进式框架,适合从简单的页面交互到复杂的单页应用开发。通过 Vue 的响应式系统、组件化开发、路由管理、状态管理等特性,开发者可以高效地构建现代化的 Web 应用。


 希望这份整理对你有帮助!如果需要进一步细化某部分内容,可以告诉我! 😊 

http://www.dtcms.com/a/609366.html

相关文章:

  • 自己做网站要买什么在网站制作前需要有哪些前期策划工作
  • RAG系统学习之——RAG技术详解与实战指南
  • ASC学习笔记0014:手动添加一个新的属性集
  • 通过手机远程操控电脑,一步步学习便捷方法
  • 【AI学习-comfyUI学习-Segment Anything分割+实时图像裁剪-各个部分学习-第九节2】
  • [Linux]学习笔记系列 -- [kernel[params
  • AI 多模态全栈应用项目描述
  • SpringMVC(2)学习
  • 面向智能教育的生成式AI个性化学习内容生成研究
  • C语言编程代码编译 | 学习如何高效编译和调试C语言程序
  • 多模态学习与多模态模型
  • 网站建设费的税率网页设计制作用什么软件
  • Flutter Material 3设计语言详解
  • 天猫魔盒M19_晶晨S912H当贝桌面线刷机包_adb开启
  • 长沙seo优化排名东营优化网站
  • Python 编程实战 · 实用工具与库 — Flask 基础入门
  • supOS工厂操作系统 | 像“拼乐高”一样做数据分析
  • 青岛营销型网站推广wordpress doc导入
  • upload-labs(1-13)(配合源码分析)
  • Kubernetes-架构安装
  • 【剑斩OFFER】算法的暴力美学——二维前缀和
  • 网站开发教程全集哪些网站做的好看
  • 2025IPTV 源码优化版实测:双架构兼容 + 可视化运维
  • 建设一个网站步骤揭阳专业网站建设
  • ftp下的内部网站建设竞价培训课程
  • 技术观察 | 语音增强技术迎来新突破!TFCM模型如何攻克“保真”与“降噪”的难题?
  • FPGA系统架构设计实践5_IP的封装优化
  • UDP服务端绑定INADDR_ANY后,客户端该用什么IP访问?
  • 不同传感器前中后融合方案简介
  • 《C++在LLM系统中的核心赋能与技术深耕》