二阶段第六周JS知识点整理

126 阅读7分钟

Monday

1、概念:

同步交互:用户向服务器端发起请求的时候,直到服务器端进行响应的全过程,用户是不可以做其他事情的(等)
	典型:网址请求、表单提交请求 - 整个页面都是会刷新一次的,属于同步

异步交互:用户向服务器端发起请求的时候,直到服务器端进行响应的全过程,用户是可以做其他事情的(不等)
	典型:ajax请求

2、ajax:

Asynchronous JavaScript And XML:异步的js和XML
不严格的定义:页面不会完整的刷新,只会导致局部页面发生改变
其实我们早就见过异步技术/异步代码了:
	1、Node.js中文件读、写、追加 - 目的:文件系统
	2、mongoose增、删、改、查 - 目的:操作数据库
	3、定时器 - 目的:做特效
	4、ajax - 目的:在不刷新页面的情况下和服务器端进行交互 - 可以把服务器端的东西拿到前端来

3、如何使用:4步

1、创建ajax的核心对象XMLHttpRequest - 简称XHR核心对象,有了它才可以使用ajax;
	var xhr=new XMLHttpRequest();

2、建立和服务器端的连接:
	xhr.open("GET/POST","/路由");

3、向服务器端发送请求消息:
	xhr.send();

	特殊:21、*GET请求:xhr.send()会失效,但是还不能省略,必须写为xhr.send(null);,请求消息需要放到路由的?后面
			xhr.open("GET","/路由?key=value&key=value...");
			xhr.send(null);

		2、POST请求:xhr.send()可用,但是必须在之前加上一句话设置请求头部 - 暂时不用
			xhr.open("POST","/路由");
			xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			xhr.send("key=value&key=value...");

	get和post的区别,都是有用:
		1get是显示提交,大小有限2kb,作用:一切的搜索框,为了找后端拿东西,不存在安全性的
                    问题,ajax最大的目的就是把后端的东西拿到前端,所以ajax用get的情况更多

		2、post是隐式提交,大小无限,作用:登录、注册 这类根安全性挂钩的东西

4、绑定状态的监听事件
	xhr.onreadystatechange=()=>{
		if(xhr.readyState==4&&xhr.status==200){
			xhr.responseText; - 服务器端响应的东西,难就难在拿到东西你要干什么
		}
	}

注意:
	1、打开网页,不要右键直接打开,一定要开启服务器后,在浏览器用网络地址去访问:127.0.0.1或 ip地址
	2、ajax会自动在客户端网页发起请求,不要你去加路由访问
	3、不管客户端(雪中送炭)做不做验证,服务器端必须要做
	4、可以理解ajax,其实就是一个另类的表单,但是是异步交互不会刷新页面

Tuesday

1、XML数据格式:

1、面试题:HTML、XHTML、DHTML、XML分别是什么?

HTML - 网页
XHTML - 更严格的网页:HTML5之前的一个版本XHTML,再之前的版本才是HTML4.01
DHTML - Dynamic:动态的网页,不是一个新技术、新概念,只是将现有技术的一个整合统称:HTML+CSS+JS(dom),导致我们在离线状态网页也具有动态特效,但还是是一个静态网页
XML - 配置文件 | 数据格式
2、如何使用xml,其实就是一个后缀.xml文件
	1、创建xx.xml文件
	2、必须写上声明标签:<?xml version="1.0" encoding="utf-8"?>
		version - 版本:目前的版本只有1.0和1.1版本,但是1.1版本升级的并不理想,所以没有人使用,以后都不必再学习,它不会再更新了,因为淘汰了
	3、注意:xml不存在任何预定义标签,所有的标签都是自定义的
	4、必须写上一个根标签,而且只能写一个根标签(双标签)
	5、恭喜你,你学完了,里面的东西,你随意,你想放什么标签就放什么标签

	开发中,正常来说后端会想办法把数据库的数据整理为一个xml格式,此方法已经被淘汰了

	前端:依然使用ajax去获取xml:
		1、路由 写为 "xx.xml";
		2、xhr.responseXML,获取到响应的xml文件,可以使用核心DOM进行处理
		3、缺点:就是因为要使用核心DOM获取自己想要的部分才极其麻烦

2、JSON数据格式:

JavaScript Object Notation - js对象表示法,本身就是js的一部分
作用:配置文件 | 数据格式 类似于 xml
好处:比XML 更快、更简洁、更容易解析 - 一个优秀的数据格式能极大的提升程序员的开发效率

1、哪些属于JSON字符串,后端把数据库的数据取出来整理为一个JSON字符串:
	1'[]';
	2'{}';
	3'[{},{},{},{}]';
	4'{"names":[所有人的名字],"ages":[所有人的年龄],"salary":[所有人的工资]}';
	Node.js可以用一个方法将JSON对象转为JSON字符串:*var JSON字符串=JSON.stringify(JSON对象);

2、前端如何去脱衣服:2eval("("+JSON字符串+")"); 
	*JSON.parse(JSON字符串);

Wednesday

1、svn工具:集中式项目管理控制工具

集中式:服务器只有一个(项目经理),客户端(开发者)人人都可以安装
缺点:服务器只有一个,如果服务器坏了,就完求了
优点:局域网使用,项目绝对不会泄漏
现在使用的公司越来越少了,因为现在主流的项目管理工具是git

使用步骤:
	项目经理:
		1、安装svn服务器端:VisualSVN-Server-4.3.2-x64.msi
		2、为此项目的员工,创建账号和密码
		3、为项目创建一个项目仓库
		4、运筹帷幄:把仓库地址发给对应的开发者,以及账号密码也会私发给你

	开发者:
		1、安装svn客户端:TortoiseSVN-1.14.1.29085-x64-svn-1.14.1.msi
		2、重启电脑(不然看不到小图标)
		3、对着自己的电脑,任意位置右键:svn checkout 检出(拉取项目仓库)放到仓库地址
		4、做开发
		5、下班时,提交自己今天的文件:对着文件夹空白处,右键,svn Commit提交,必须输入日志
		6、第二天上之前,更新一下:对着文件夹空白处,右键,svn update更新

2、三阶段学git:分布式项目管理控制工具
人人都是服务器,人人都是客户端(云端)

Thursday

1、jQueryUI插件库:

    基于jQuery的开源网页用户界面代码库 - 提供了HTML、CSS、JS的一个插件库
组件库:组件:组成网页一部分的部件,代码重用,一般不具备JS功能(导航条、页脚...)
插件库:跟组件差不多,只不过带有JS功能(轮播、选项卡...)
目的:了解【库】的特点 - 简化原生JS开发,因为现在最流行的三大框架,在三阶段 - Vue(中国人自己开发)、React(第二早的)、Angular(最早的)。
          三大框架出现过后,jQuery就被慢慢的取代了,但是还有一些老项目用的是jQuery(京东、淘宝...)
jQueryUI插件库的最大的作用:我们哪怕没有UI,做出来的东西也不会太丑,但是我觉得丑,太老了(样式有点过时了、好在我们可以自己修改)

如何使用jQueryUI
	1、下载jQueryUI - 不需要你做
	2、在页面上引入 - js顺序千万不能乱,因为jQueryUI是基于jQuery
		<link rel="stylesheet" type="text/css" href="jquery-ui-1.13.2.custom/jquery-ui.css"/>
		<script src="jquery-ui-1.13.2.custom/external/jquery/jquery.js" type="text/javascript" charset="utf-8"></script>
		<script src="jquery-ui-1.13.2.custom/jquery-ui.js" type="text/javascript" charset="utf-8"></script>
	3、挑选出你需要的/喜欢的插件,直接梭到你的项目中
	4、根据设计图提供的样式,来修改CSS,如果你没修改成功,只有一个可能:权重不够
	5、利用ajax去获取数据库中的数据,来进行页面的渲染
	6、千万别忘了渲染完毕后再调用实现xx功能的那个方法

	个人比较推荐的jQueryUI插件:
		1、选项卡/标签页
		2、菜单
		3、折叠面板/手风琴
		4、模糊查询/自动完成
		5、特效的方法:$("找到某个人").toggle("动画名",执行毫秒数);
				如果toggle不传任何参数,为瞬间显示和瞬间隐藏,甚至不需要自己写判断,它底层帮你写好了
				toggle === show + hide;这三个方法用法完全一致