Vue2组件化开发(路由与分页组件化)

组件化开发

组件化开发就是将一个页面拆分为多个不同的组件,每个组件依赖的Css,js,资源等放到一起进行开发,组件与组件之间可以进行嵌套,在组件化中,vue只有一个html文件,所有的组件都挂载在该文件上,这种单页面的应用使得维护与开发更为简单。

在组件化开发之前我们需要对 vue-cli 和 webpack(静态模块打包工具) 进行全局安装

npm install -g @vue/cli
npm install -g webpack

Vue CLI 致力于将 Vue 生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在撰写应用上,而不必花好几天去纠结配置的问题。与此同时,它也为每个工具提供了调整配置的灵活性,无需 eject。

路由(Router)

Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。功能包括:

  • 嵌套路由映射
  • 动态路由选择
  • 模块化、基于组件的路由配置
  • 路由参数、查询、通配符
  • 展示由 Vue.js 的过渡系统提供的过渡效果
  • 细致的导航控制
  • 自动激活 CSS 类的链接
  • HTML5 history 模式或 hash 模式
  • 可定制的滚动行为
  • URL 的正确编码

基本使用(路由配置)

路由安装: 

npm install vue-router@对应版本

一般是在通过脚手架创建vue项目时选择了router 让脚手架替我们创建与vue版本与之对应得路由版本

用 Vue + Vue Router 创建单页应用非常简单:通过 Vue.js,我们已经用组件组成了我们的应用。当加入 Vue Router 时,我们需要做的就是将我们的组件映射到路由上,让 Vue Router 知道在哪里渲染它们。

两种不同的引入方式区别:

                如上图的 HomeView的引入方式代表了无论是否使用都会进行加载,相当于java中的饥饿模式

                而另外一种相当于 java 中的懒汉模式,只有在使用的时候才会进行引入加载

静态路由

下面的案例为一个开启了路由模式的侧边导航栏

        导航栏开启了路由模式(:router="true")后 index="的值会被当做路由的路径进行跳转显示"

动态路由

介绍取自 带参数的动态路由匹配 | Vue Router (vuejs.org)

很多时候,我们需要将给定匹配模式的路由映射到同一个组件。例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同。在 Vue Router 中,我们可以在路径中使用一个动态字段来实现,我们称之为 路径参数 。

路径参数 用冒号 : 表示。当一个路由被匹配时,它的 params 的值将在每个组件中以 this.$route.params 的形式暴露出来。

你可以在同一个路由中设置有多个 路径参数,它们会映射到 $route.params 上的相应字段

带参跳转

params:

        传参类似 post

        路由配置 path: "/home/:id" 或者 path: "/home:id"刷新页面id会保留

        不配置path ,第一次可请求,刷新页面id会消失

query:

        传参类似get,路径后会显示参数

        路由可不配置

html取参 $router.params/query.id

script取参 this.$router.params/query.id

响应拦截器

在main.js全局配置文件中我们对响应拦截器进行配置

响应拦截器会将我们对后端进行请求后,后端的数据返回会先经过响应拦截器

在下图中,我们对axios 进行了全局的配置使用,并在响应拦截器中对后端的数据进行了判断即返回的数据简化 

请求拦截器

对前端发请求前要对发送的请求做什么,可以添加自定义请求头等

this.$router.push
跳转到指定url路径,并想history栈中添加一个记录,点击后退会返回到上一个页面

this.$router.replace
跳转到指定url路径,但是history栈中不会有记录,点击返回会跳转到上上个页面 (就是直接替换了当前页面)

this.$router.go(n)
向前或者向后跳转n个页面,n可为正整数或负整数

路由守卫

常用在前后端分离项目中用于前端的登录拦截

To : 目的地
From: 当前的信息
Next : 函数  ({path:’/login’})
Next({path:to.path}) : 默认包含了你的目的地的地址

组件化分页

在传统的项目中,我们对于分页的开发,如果大量的页面需要分页,呢每个页面都要有分页的代码,会造成大量的重复代码,而在组件化开发中,我们只需要对分页进行一次的组件化配置,就可以方便的对这部分重复的代码进行复用。

但是在组件化中,我们需要父子组件之间互相传值才能实现分页的可利用。

<template><div><el-table:data="filmList.list"borderstyle="width: 100%"><el-table-columnprop="filmId"label="电影编号"width="180"></el-table-column><el-table-columnprop="filmName"label="电影名字"></el-table-column><el-table-columnprop="type.typeName"label="电影类型"></el-table-column><el-table-columnprop="filmDuration"label="电影时长"></el-table-column><el-table-columnprop="filmDate"label="上映日期"></el-table-column><el-table-columnprop="filmRemark"label="备注"></el-table-column></el-table><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="this.pageNum":page-sizes="[3, 5, 7, 9]":page-size="this.pageSize"layout="total, sizes, prev, pager, next, jumper":total="this.filmList.total"></el-pagination></div>
</template><script>
export default {name: "FileMsg",data () {return {filmList: [],pageNum: 1,pageSize: 3,}},methods: {async init(p,s) {this.filmList = await this.$axios.get(`/info/page?pageNum=${p}&pageSize=${s}`);},handleSizeChange(val) {if (val !== undefined) {this.pageSize = val;}this.init(this.pageNum, this.pageSize)},handleCurrentChange(val) {this.pageNum = val;this.init(this.pageNum, this.pageSize)},},created() {this.handleSizeChange();}
}
</script><style scoped></style>

父子组件(分页组件)

父子组件将会通过分页进行演示。

这里将对父子组件简单进行文字的讲解后通过代码进行分页的父子传值组件化演示

        首先我们需要 component 定义对组件进行全局 或者 局部  导入的定义

        组件的定义名字 只能使用 大小驼峰定义法

        然后我们用使用html标签的方式在要使用的组件进行使用即可

        父 -> 子  子通过 prop: [] 来接收

        子 -> 父  子需要使用 $emit 的形式通过方法函数向父组件传值

这里简单了解有一定概念即可,下面看相关代码演示:

分页使用的比较多,所以这里我们对分页的组件进行全局引用

main.js 全局配置文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

饥荒联机版 Don‘t Starve Together(WinMac)最新中文学习版

《饥荒联机版》是由Klei自主开发的开放世界冒险游戏。在这个游戏中&#xff0c;玩家将扮演各种各样的人物&#xff0c;这些人物不幸来到了一个神秘的异世界。在旅行中&#xff0c;玩家会邂逅性格各异、能力独特的同伴们&#xff0c;并和他们一起生存下去并征服异世界。游戏中的…

R语言用jsonlite库写的一个图片爬虫

以下是一个使用R语言和jsonlite库下载图片的程序。首先&#xff0c;我们需要导入jsonlite库和options()函数&#xff0c;然后将代理服务器的主机名和端口号设置为"duoip"和"8000"。接着&#xff0c;我们将URL设置为"https://yun.baidu.com/"&…

无限上下文,多级内存管理!突破ChatGPT等大语言模型上下文限制

目前&#xff0c;ChatGPT、Llama 2、文心一言等主流大语言模型&#xff0c;因技术架构的问题上下文输入一直受到限制&#xff0c;即便是Claude 最多只支持10万token输入&#xff0c;这对于解读上百页报告、书籍、论文来说非常不方便。 为了解决这一难题&#xff0c;加州伯克利…

Go基础——指针、结构体

1、指针 Go语言指针与C差不多&#xff0c;取地址符是 &&#xff0c;放到一个变量前使用就会返回相应变量的内存地址。 变量是一种使用方便的占位符&#xff0c;用于引用计算机内存地址。一个指针变量可以指向任何一个值的内存地址&#xff0c;它所指向的值的内存地址在 32 …

jenkins实践篇(2)—— 自动打tag的可回滚发布模式

大家好&#xff0c;我是蓝胖子&#xff0c;在上一篇我简单介绍了如何基于特定分支做自动编译和发布&#xff0c;在生产环境中&#xff0c;为了更加安全和快速回滚&#xff0c;我采取的是通过对代码打tag的方式来进行部署&#xff0c;下面我将详细介绍整个发布过程的逻辑。 发布…

IDEA远程调试代码

IDEA->RUN->Edit Configurations 端口随便选一个&#xff0c;选择调试模块&#xff0c;然后用IDEA生成的命令调试 java -agentlib:jdwptransportdt_socket,servery,suspendn,address*:8081 -jar backend-1.18.11.jar &

SteerMouse for mac Mac万能鼠标设置工具 功能介绍

鼠标可谓是用户们在使用电脑时候的必备外接设备呢&#xff01;适合你自己的鼠标设置也绝对能够优化你的Mac使用体验&#xff01;想要更好的Mac体验就试试用Steermouse Mac版吧。它通过软件来自由设置你的鼠标操作&#xff01;在这款万能鼠标设置工具中&#xff0c;用户可以在偏…

MFC String类的初始化学习

之前写过CString的用法&#xff1b; VC CString 编程实例图解_bcbobo21cn, cstring-CSDN博客 下面单独看一下CString的各种初始化方式&#xff1b; void CTest2View::OnDraw(CDC* pDC) {CTest2Doc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for nati…

性能测试知多少---性能分析与调优的原理

最近一直纠结性能分析与调优如何下手&#xff0c;先从硬件开始&#xff0c;还是先从代码或数据库。从操作系统&#xff08;CPU调度&#xff0c;内存管理&#xff0c;进程调度&#xff0c;磁盘I/O&#xff09;、网络、协议&#xff08;HTTP&#xff0c; TCP/IP &#xff09;&…

Codeforces Round 882 (Div. 2)

目录 A. The Man who became a God 题目分析: B. Hamon Odyssey 题目分析: C. Vampiric Powers, anyone? 题目分析: A. The Man who became a God 题目分析: n个人分成k组&#xff0c;每一组的力量都是这样的&#xff0c;那么如果分成k组那么就会有k-1个力量不被统计…

Android 11 Framework 增加自定义API到系统中

基于 Android 11 源码 根据网上的教程, 自己先捣鼓一波: frameworks\base\services 创建 hzyd文件夹 Android.bp内容: android_library_import {name: "services.hzyd",aars: ["MobileSDK-release.aar"],sdk_version: "current", }修改 fra…

tmux工具

B站学习地址&#xff1a;tmux教程

【深度学习】pytorch——Tensor(张量)详解

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ pytorch——Tensor 简介创建Tensortorch.Tensor( )和torch.tensor( )的区别torch.Tensor( )torch.tensor( ) tensor可以是一个数&#xff08;标量&#xff09;、一维数组&#xff08;向量&#xff09;、二维数组&…

安全与HTTP协议:为何明文传输数据成为争议焦点?

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、H…

学习小结,学而时习之,坚持学习之,温顾学习之

学习python一个多月了&#xff0c;之前也有接触过&#xff0c;还花了不少钱报班&#xff0c;看了看入门的头两节课&#xff0c;就止步了。每一种编程语言的入门感觉都差不多&#xff0c;学到现在&#xff0c;我对python的基本数据类型还是没掌握好啊&#xff0c;每次列表字典怎…

2015年亚太杯APMCM数学建模大赛C题识别网络中的错误连接求解全过程文档及程序

2015年亚太杯APMCM数学建模大赛 C题 识别网络中的错误连接 原题再现 网络是描述真实系统结构的强大工具——社交网络描述人与人之间的关系&#xff0c;万维网描述网页之间的超链接关系。随着现代技术的发展&#xff0c;我们积累了越来越多的网络数据&#xff0c;但这些数据部…

最近面试者对接口测试的理解真把我给笑拥了~

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

Hadoop PseudoDistributed Mode 伪分布式

Hadoop PseudoDistributed Mode 伪分布式加粗样式 hadoop101hadoop102hadoop103192.168.171.101192.168.171.102192.168.171.103namenodesecondary namenoderecource managerdatanodedatanodedatanodenodemanagernodemanagernodemanagerjob historyjob logjob logjob log 1. …

从零开始的JSON库教程(一)

本文是学习github大佬miloyip而做的读书笔记&#xff0c;项目点此进入 目录 1、JSON是什么 2、搭建编译环境 3、头文件与API设计 4、JSON的语法子集 5、单元测试 6、宏的编写技巧 7、实现解析器 8、关于断言 1、JSON是什么 JSON&#xff08;JavaScript Object Notati…

UI设计一定不能错过的4款常用工具

虽然设计审美很重要&#xff0c;但软件只是一种工具&#xff0c;但就像走楼梯和坐电梯到达顶层一样&#xff0c;电梯的效率显然更高&#xff0c;易于使用的设计工具也是如此。让我们了解一下UI设计的主流软件&#xff0c;以及如何选择合适的设计软件。 即时设计 软件介绍 即…