XML
XML其实就是创建一个后缀.xml的文件
如何使用:
必须写上声明标间:<?xml version="1.0" encoding="utf-8"?>//version版本号 -- 目前只有1.0版本在使用
必须写上一个根标签,而且只能写一个根标签,而且必须是双标签,只有双标签里面才可以放其他标签
里面随便放
使用ajax去获取XML
路由:写为"xx.xml"
xhr.responseText换成xhr.responseXML
JSON:JavaScript Object Notation
作用和XML类似,都是用于当一个配置文件|数据格式
好处:比XML更简洁,更快,更容易解析 - 一个优秀的数据格式可以极大的提升程序员的开发效率
后端把数据库的数据取出来整理为一个JSON字符串:res.end(JSON.stringfy(rs))
前端依然使用Ajax去获取响应到的数据,真正重要的:xhr.reponseText
JQueryUI:
基于jQuery(基于JavaScript的一框架,是三大框架出现之前全球最火的一个,但是现在已经被淘汰了)的开源网页用户界面代码库,提供了HTML CSS JS的一个插件库
组件库:
组成网页一部分的部件,代码重用,一般不具备JS功能的
插件库:
跟组件库差不多,但是带有JS功能
如何使用:
百度搜索jQueryUI下载
必须在页面上进行引入-模板
挑选出需要的插件,复制到项目之中
根据设计图去修改样式 - 修改不成功只有一个可能:权重不够
使用ajax去获取数据库中的数据,来进行页面渲染
一定要等页面渲染完后再去删掉插件的API
jQuery
使用jquery之前必须先引入:jQuery.js
jquery之中最有魅力的一个方法叫做$或者jQuery:工厂函数
作用:
查找元素:
直接查找:$("JQ选择器")
通过关系网:前提至少先找到一个人才可以使用关系网:
父元素:parent();
子元素:children();
前一个兄弟:prev();
后一个兄弟:next();
其他兄弟:siblings();
JQ自带隐式迭代:不需要遍历,可以直接对着集合做操作===>js不能直接对集合做操作,要么下标拿到某一个,要么遍历拿到每一个才可以操作
操作元素:
内容:
获取:$("xx").html/text/val
设置:$("xx").html/text/val("新内容")
属性:
获取:$("xx").attr("属性名")
设置:$("xx").attr("属性名","属性值")
删除:$("xx").removeAttr("属性名")
样式:
可以操作class:
添加class:$("xx").addClass("新class")
删除class:
$("xx").removeClass();//删全部
$("xx").removeClass("xx");//只删除这个class
切换class:
$("xx").toggleClass("xx");//在有xx和没有xx之间切换
直接操作css:设置时依然设置的是内联,因为优先级最高,获取时,不在乎你是哪里的样式,他只会获取你生效的样式
获取:$("xx").css("属性名")
设置:
$("xx").css({
属性名:"值",
属性名:"值",
属性名:"值",
...
})
创建元素&上树:
$("父").append($("<elem 属性名="${变量}">$变量</elem>"))
删除:
$("xx").remove();
JQ动画:
显示:$("xx").show();
隐藏:$("xx").hide();
切换:$("xx").toggle();
注意:如果不传参数,是瞬间显示和瞬间隐藏
如果传入参数:$("xx").toggle("动画名称",时常) - - 一定要搭配jQueryUI,jQueryUI对这三个方法进行了增强
JQ不可以使用以前DOM的语法,DOM也不可以使用JQ的语法,但是其实两者可以互换:
DOM->JQ:$(DOM)
JQ->DOM:jq对象[下标];//jq的东西千万不要去循环遍历加下标就会变得更加麻烦,本来jq就会自动隐式迭代
绑定事件:
$("xx").事件名(callback)
获取下标:
$("xx").index();
Node.js的第三方框架
express需要使用npm下载安装它:express简化Node.js的,里面有两个核心概念(路由和中间件)
下载:在项目路径下打开cmd:npm i express
引入后发现express是一个函数对象,用于创建服务器应用的,所以还要设置监听端口
var express=require("express")
var app=express()
app.listen(80)
路由:客服端发来的请求中的一部分,也称呼叫做文件的相对路劲,通过判断路由的不同,响应不同的内容
GET方式:
app.get("路由名",(req,res)=>{
req->依然是请求对象,保存着前端传来的请求消息:req.query.键名;(不光可以得到GET表单提交的,还可以得到GET的AJAX提交的消息)
res->依然是响应对象,可以向前端发送数据,也可以向前端发送文件
发送数据:res.send(json 字符串);
发送文件:res.sendFile("文件路径");
})
特殊:POST方式请求要麻烦一些,尤其是在获取前端传到后端的请求消息,因为post是隐式提交,所以需要某些操作才能看到它
app.post("路由名",(req,res)=>{
req->依然是请求消息,保存着前端传来的请求消息:3步
下载引入一个第三方模块:var bp=require("body-pavser")
使用【中间件】的语法:app.use(bp.urlencoded({extended:false}))
req.body.键名
res->依然是响应对象,可以向前端发送数据,也可以发送文件
发送数据:res.send(json 字符串)
发送文件:res.sendFile("文件路径")
})
现在不管是form表单还是ajax,都可以自习选择使用get还是post了
如果全栈开发,一个人随便搞,但是如果是前后端分离开发,那么两个人一定要沟通:路由是什么?请求是get(拿东西,安全性不挂钩)还是post(注重安全性)
中间件:其实就是一个函数,但是它也可以访问到req和res两个对象,必须处于【路由之前】
中间件的功能包括:
可以执行任何代码
可以修改请求和响应对象
可以终止请求
可以放行到下一个中间件/路由 - - 中间件可以写多个
语法:
qpp.use((req,res,resolve)=>{
一切想要执行的代码,都可以放
resolve();
})
除了可以修改请求消息外,还可以完成两个固定套路:
获取post的隐藏的请求消息:app.use(bp.urlencoded({extended:false}))
内置中间件加载一切静态资源:app.use(express.static("静态资源的文件夹名"))
如何简化Ajax:
jQuery提供了一个新的ajax方法:
$.ajax({
url:"路由", - - 必写
date:"请求消息", - - 可选
dateType:"HTML/XML/JSON", - - 可选,默认值为HTML(普通字符串),如果写了JSON,衣服就不需要自己再脱了
type:"GET/POST", - - 可选,默认值GET
success:date=>{ - - 必写
date -> 后端响应的,拿到数据要干什么,必须放在回调函数里面
}
})