IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 组件化--路由--重定向/转发--跨域问题 -> 正文阅读

[JavaScript知识库]组件化--路由--重定向/转发--跨域问题

一、组件化

1.组件的出现: 传统的页面开发,会将大量的HTML/CSS/JS进行引入,但是引入之后结构混乱 不便于管理. 开发维护时 成本较高,所以才有了组件的出现

2.组件化思想:在VUE中 可以将一个组件,看作是一个页面. 在其中可以引入独立的样式/JS/HTML 进行单独的管理,且组件可以进行复用,为了保证组件化 相互之间互不干扰,则应该在组件内部 单独定义html/js/css.

3.为什么要使用组件:

  1. 原来用户编辑页面时,需要引入/维护大量的JS/CSS等.如果数量很多,则导致代码结构混乱.所以需要引入组件化思想.
  2. 前端框架为了更好的解耦,采用了"分治"思想的构建代码.前端向后端代码结构看齐.(微服务框架)
  3. 组件采用树形结构, 可以将功能小型化.单独维护.
  4. 组件是一个独立的个体,内部包含HTML/CSS/JS
  5. 总的来说就时是高内聚低耦合

4.如何理解template属性?

  1. template标签是组件中定义html标记的模板.
  2. template标签必须有根标签div
  3. template标签最好定义在body标签内部JS外,写法方便.

5.组件使的注意事项

  1. 组件的使用必须在VUE对象渲染的区域中使用.
  2. 组件有全局的/有局部的.注意作用域.
  3. 在html标签中使用组件时,注意大小写问题.如果是驼峰规则,则使用 "-"连接.
  4. 组件必须先定义再使用.

二、路由

1.概念

????????用户发起一个请求,在互联网中经过多个站点的跳转.最终获取服务器端的数据. 把互联网中网络的链路称之为路由.
VUE中的路由: 根据用户的请求URL地址,展现特定的组件(页面)信息. (控制用户程序跳转过程)

2.实现步骤

2.1 引入JS类库

注意:路由依赖于vue,需要先导入vue.js

<script src="../js/vue.js" type="text/javascript"></script>
<script src="../js/vue-router.js" type="text/javascript"></script>

2.2 指定路由跳转链接

注意:router-link to=""解析后就是一个a标签,to解析后变成a标签的href属性

<router-link to="/home">主页</router-link>

2.3 指定路由填充位

注意:组件内容展现的位置,可以自己调节,要在渲染区下

<router-view>组件展现内容</router-view>

2.4 封装路由对象

流程:定义请求与组件的映射,添加一个对象,此对象封装了组件,再在Body里定义一个template标签进行组件内容的编写,注意对应关系

<!-- 定义template标签 -->
		<template id="homeTem">
			<div id="">
				<h1>这里是系统首页</h1>
			</div>
		</template>
		
		<script type="text/javascript">
			/* 4.封装路由对象 */
			let HomeCom={
				template:"#homeTem"
			}
			let router=new VueRouter({
				//routes 定义请求与组件的映射关系qqqqqqq
				routes:[
					{path:"/home",component:HomeCom}
				]
			})

2.5 vue对象绑定路由

注意:当定义的kv相同时可以简写为一个

const app=new Vue({
				el:"#app",
				router
			})

3.路由嵌套机制

按理来说路由可以无限嵌套(俄罗斯套娃)

直接上代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>路由的嵌套</title>
	</head>
	<body>
		
		<div id="app">
			<h1>江哥动物园</h1>
			<router-link to="/tiger">老虎</router-link>
			<router-link to="/lion">狮子</router-link>
			<router-view></router-view>	
		</div>
		
		<template id="tigerTem">
			<div>
				<h1>我是一只凶猛的喵</h1>
				<img src="images/u=3058722990,2113203861&fm=15&fmt=auto&gp=0.webp"/>
			</div>
		</template>
		
		<template id="lionTem">
			<div>
				<h1>我是狮子王 辛巴!!!!</h1>
				<img src="images/6666666624062&fm=26&fmt=auto&gp=0.webp"/>
				<h3>
					<!-- 实现路由的嵌套机制 -->
					<router-link to="/lion/one">原配</router-link>
					<router-link to="/lion/two">小妾</router-link>
					<!-- 子级应该在该区域展现数据!!!! -->
					<router-view></router-view>
				</h3>
			</div>
		</template>
		
		<template id="oneTem">
			<div>
				<h1>我是原配-老大</h1>
				<img src="images/mn.jpg"/>
			</div>
		</template>
		
		<template id="twoTem">
			<div>
				<h1>我是小妾-更喜欢我!!!</h1>
				<img src="images/women_blonde_drawing_artwork_monochrome_Krys_Decker_portrait_display_face-1215629.jpg"/>
			</div>
		</template>
		
		
		
		<!-- 1.引入JS 路由需要依赖vue 注意顺序-->
		<script src="../js/vue.js"></script>
		<script src="../js/vue-router.js"></script>
		
		<script>
			let tigerCom = {
				template: "#tigerTem"
			}
			
			let lionCom = {
				template: "#lionTem"
			}
			
			let oneCom = {
				template: "#oneTem"
			}
			
			let twoCom = {
				template: "#twoTem"
			}
			
		
			/* 
				1.如果需要在App根标签中跳转,则写到routes根目录下
				2.如果需要进行父子嵌套,则应该使用children属性
				3.如果使用children属性,则在自身的router-view展现数据
			 */
			let router  = new VueRouter({
				routes: [
					{path: "/tiger",component: tigerCom},
					{path: "/lion",component: lionCom, 
						children: [
							{path: "/lion/one",component: oneCom},
							{path: "/lion/two",component: twoCom},
						],
					}
					]
			})
			const app = new Vue({
				el: "#app",
				router
			})
		</script>
	</body>
</html>

知识点:

  1. 嵌套需要在一个组件里加入路由标签和展现区,再在这个标签跳转的组件里再添加路由标签和展现区无穷尽
  2. 组件一律写在body里js外
  3. 映射是如果就在父级页面上展现组件则正常写即可,如果需要在父级下展现嵌套的路由则在父级得到映射里添加children属性

三、重定向/转发

1.转发

说明: 用户请求服务器时,由服务器将请求转给另一台服务器的过程.叫做转发

2.重定向

说明: 用户请求服务器时,服务器由于特殊原因告知用户应该访问服务器B,之后用户再次发起请求访问服务器B. 这个过程称之为重定向?

?vue中设置重定向:在映射最上方加入redirect属性

{path: "/",redirect:"/lion"},
{path: "/tiger",component: tigerCom},
{path: "/lion",component: lionCom, 

效果:当访问http://127.0.0.1:8080时会重定向到http://127.0.0.1:8080#/lion.页面展现lion所映射的组件

四、跨域问题

要说跨域问题那就先来说什么是域,这里又涉及到了同源策略

1.同源策略

规定: 浏览器要求在解析Ajax请求时,要求浏览器的路径与Ajax的请求的路径必须满足请求协议、域名、端口号这三个都相同才则满足同源策略.可以访问服务器.

HTML默认是8080端口号,而Ajax访问我们的后端服务器则不是,所以要涉及到跨域问题

注意:

IP与域名相映射也不满足同源策略

不写端口号会有默认端口号http协议默认端口号是80,https协议默认端口号为443

2.跨域

不满足同源策略的就算跨域

3.解决方法

3.1JSONP

????????浏览器只对XHR(XMLHttpRequest)请求有同源请求限制,而对script标签src属性、link标签ref属性和img标签src属性没有这这种限制,利用这个“漏洞”就可以很好的解决跨域请求。JSONP就是利用了script标签无同源限制的特点来实现的,当向第三方站点请求时,我们可以将此请求放在<script>标签的src属性里这就如同我们请求一个普通的JS脚本:
<script src="http://www.abc.com/index.php/?param1=1&callback=fnName"> </script>

JSONP实现跨域请求的原理:
????????就是动态创建<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。
JSONP 由两部分组成:
回调函数和数据。
回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的 JSON 数据。

????????本站并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。
callback({“name”:“fegnjie”,“age”:“18”}),这样本站浏览器会调用callback函数,并传递解析后json对象作为参数。

3.2CORS方式

说明: CORS(Cross-origin resource sharing) “跨域资源共享”,现在的主流的浏览器都支持cors的方式. 如果需要跨域,则需要配置响应头信息.标识是否允许.

服务器端加入@CrossOrigin的注解默认响应头允许所有网站进行跨域请求,在后面加入参数就可以限制网站的请求

原理图:


?

完工回家睡觉了

满怀希望就会所向披靡!!!


?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 11:49:53  更:2021-09-01 11:51:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:14:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码