第四周笔记

102 阅读6分钟

BOM概述:Browser Object Model - 浏览器对象模型:专门为操作浏览器准备的一些对象,没有任何标准,

BOM有哪些对象:window、history、navigator、location、screen、event
window对象:
	打开网页的新方式:
		当前网页打开可以后退:  open("网址","_self");
		当前网页打开禁止后退:  location.replace("新网址");
		在新窗口打开:open("网址","_blank");
		在新窗口打开,只能打开一个:  HTML: <a href="网址" target="自定义名字"></a>
				               js: open("网址","自定义名字");
	属性和方法:
		打开新窗口:var 新窗口=open("url","target/自定义","width=,height=,left=,top=");
		特殊:1、没有加第三个参数的时候,我们的新窗口会和浏览器融为一体
		          2、添加上第三个参数的时候,我们的新窗口就会脱离浏览器独立存在,而且可以把他保存起来
		关闭窗口:window/新窗口.close();
		移动窗口:新窗口.moveTo(x,y);
		修改窗口的大小:新窗口.resizeTo(newW,newH);
		获取屏幕的大小:screen.width/height
		获取浏览器的完整大小:outerWidth/Height
		获取浏览器文档显示区域的大小:innerWidth/Height

	定时器:
		周期性定时器:
			开启:变量名=setInterval(回调函数,延时);
			停止:clearInterval(变量名);
		一次性定时器:
			开启:变量名=setTimeout(回调函数,延时);
			停止:clearTimeout(变量名);
history:保存着当前窗口的历史记录
	history.go(数字); 正数前进,负数后退,0刷新;

navigator:当前浏览器的基本信息
	就一个属性:navigator.userAgent;

location:保存着当前窗口的正在打开url
	1、一个网址(url)有哪几部分组成
		有5部分组成:
			1、协议:https/http
			2、主机号或者域名:域名需要购买
			3、端口号:默认端口号可以不写;http为80,https为4434、文件的相对路径;
			5、查询字符串/请求信息:表单提交的内容
	2、跳转页面:
		location="新url"
		跳转页面,禁止后退:location.replace("新url")
event:事件对象
	新的绑定事件的方式:
		if(elem.addEventListener){
			elem.addEventListener("事件名",callback)
		}else{
			elem.attachEvent("on事件名",callback)
		}
	事件周期:
		1、捕获阶段:记录要执行的事件有哪些,由外向内
		2、目标触发阶段:目标元素:实际触发事件的元素
		3、冒泡执行阶段:由内向外的冒泡执行
	获取事件对象event:

		1、event对象可以获取鼠标的位置:21、在你的事件处理函数中的第一个形参会自动获取到事件对象event
			2、获取鼠标的位置:
			获取鼠标相当于网页的坐标:e.pageX/Y
		2、阻止冒泡:
			兼容:if(e.stopPropagation){
						e.stopPropagation();
					}else{
						e.cancelBubble=true;
					}
		3、利用冒泡:兼容:var target=e.srcElement;
		4、阻止浏览器默认行为:
			兼容:if(e.preventExtensions){
						e.preventExtensions();
					}else{
						e.returnValue=false;
					}
		5、获取键盘码:直接console.log(e.keyCode);
			

服务器概念:简单来说就是一台电脑

搭建私网服务器:XAMPP软件,安装好就可以了
	Apache - 用于运行PHP的环境。
	如何访问:
		自己访问:
			打开浏览器:输入
				127.0.0.1:端口号
				localhost:端口号
				主机号只有自己可用
	其他人访问:
		打开cmd输入ipconfig,把ipv4给对方就可以了
	在服务器上搭建一个自己的项目
		把自己做的做过的任意一个项目:全部复制到   盘符:/xampp/htdocs
	添加网页小图标:
		任意图片,放到   盘符:/xampp/htdocs,名字改为favicon.ico	
	修改顶级域名 - 假象(没花钱,只有自己可以用)
		C:\Windows\System32\drivers\etc\hosts文件
		在最后添加一句话127.0.0.1		www.想要的域名.com
		问题1:保存时,系统文件,不允许修改,另存为到桌面,拖进去覆盖它
		问题2:打开是一个白板,把代老湿提供的覆盖过去

数据库:

关系型数据库 - 以表格为主
	Oracle - Oracle(甲骨文):收费	
	MySQL - Oracle(甲骨文):免费
	sqlserver - 微软:大学讲课:垃圾

非关系型数据库 - 没有固定的格式
	是一种运动 - 反关系型数据库
	主流产品 - mongoDB,以JSON格式为主

MySQL:

访问:
	1、图形访问:要求:同时打开mysql和apache
		               访问:127.0.0.1:端口号/phpmyadmin
	2、命令板方式:
		1、打开cmd
		2、输入cmd的命令,进入到d:/xampp/mysql/bind
			1、输入:盘符:  回车
			2、输入:cd xampp/mysql/bind
		3、登录:mysql -uroot -p 回车不要加分号
		4、退出:exit
		5、MySQL语句:
			查看数据库:SHOW DATABASES;
			创建数据库:CREATE DATABASE IF NOT ESISTS 数据库名称 CHARACTER SET utf8;
			切换数据库:USE 数据库名称;
			创建数据表:CREATE TABLE user(
						id int PRIMARY KEY AUTO_INCREMENT,
						name varchar(30),
						pwd varchar(6),
						email varchar(30),
						vip varchar(1)
				      );
			数据/记录:
				增:INSERT INTO USER VALUES(0,"name","123456","zy@qq.com","0");
				删:DELETE FROM 表名 WHERE id=几; - 一旦删除数据就不回再回来了
				改:UPDATE 表名 SET 字段名=字段值,... WHERE id=几;
				查:3种:
					SELECT * FROM 表名;
					SELECT 字段名,字段名,... FROM 表名;
					SELECT * FROM 表名 WHERE id=几;

PHP

运行PHP:打开apache,将你的项目/文件夹放到htdocs里面,在用浏览器输入127.0.0.1,打开你需要运行的文件
PHP的语法:输出方式:echo(想要输出的内容)只能输出4种标准类型
		   var_dump(想要输出的内容)可以输出一切数据类型
	   常量和变量: 和JS一样 
		     语法:$变量名=值;
		               $号同等于JS里的var,但是不能省略
	   数据类型:
		四种标准/基本/原始类型:
			整型:Int
			浮点型:Float/Double
			布尔:Boolean
			字符串:String - 有区别
				单引号 - 只能放入纯文本
				双引号 - 支持放入变量 - 类似js模板字符串
					echo "{$name}今年{$age}岁,喜欢{$hobby}";
		两种复合类型:
		Array - 数组:保存多个相关数据
			创建:
			  1、直接量:$arr=[值1,...] - 索引数组
			  2、内置对象:$arr=array( - hash数组:其实就是对象
						key=>value,
						...
				       )
			访问:$数组名[下标]
			遍历:循环

全栈开发:

前端=>PHP<=>数据库
1、前端->后端
	前端需要发起请求
		1、表单请求/提交
			注意:
			  1、input必须添加name属性,甚至有的input(radio、checkbox、select&option)可能还要添加value
			  2、form表单必须添加action="服务器端文件的路径";
			  3、method到底是用get还是post,和后端进行沟通/看开发文档
				get->得到,只要跟安全性不挂钩的时候,大小有限制2kb:搜索框(把东西拿出来)
				post->发送,只要跟安全性挂钩的时候,优先使用,举例:登录/注册(把东西放进去)
		2、后端 需要接收住 前端传来的 请求消息
			语法:$变量=$_GET/POST/REQUEST["input的name的值"]
			REQUEST - 请求:不管前端是GET还是POST,都能接住
2、后端<->数据库:php自带操作mysql的API,只需要学习4.5句话完毕
	1、创建和数据库的连接对象
		$conn=mysqli_connect("hostname","username","userpwd","dbname");

		我们班的固定:
			$conn=mysqli_connect("127.0.0.1","root","","h52202");

	1.5、为此数据库设置中文编码
		mysqli_query($conn,"SET NAMES utf8");

	2、创建SQL语句:你要干什么
		$sql="INSERT/UPDATE/DELETE/SELECT";

	3、数据库要执行SQL语句
		$result=mysqli_query($conn,$sql);
		//增删改:true->执行成功  false->执行失败
		//查:返回的是一个我们都不会认识的结果集对象
			解决:php提供了一套方法
				while(($row=mysqli_fetch_row|assoc|array($result))!=null){
					var_dump($row);//拿到了数据要干什么?
					echo "<br>";
				}

	4、断开和数据库的连接
		mysqli_close($conn);