网页打开新链接的方式
- 替换当前页面,能后退
open(url("地址","_self");
- 替换当前页面,禁止后退
location.replace("新url");
- 打开(多个)新窗口
open(url("地址","_blank");
- 打开一个窗口
open(url("地址","自定义的name");
window提供的属性和方法
获取浏览器完整大小:
outerWidth/outerHeight;
获取浏览器文档显示区域大小:
innerWidth/innerHeight;
获取屏幕完整大小:
screen.width/height;
打开窗口:
var newWindow=open("url","自定义name","width=,height=,top=,left=");
注意:当没有第三个参数传入时,窗口和浏览器大小一样;
当有第三个参数传入时,产生一个脱离浏览器的独立小窗口,可以保存并绑定事件
关闭窗口:
window/newW.close();
修改窗口大小
newW.resizeTo(new宽度,new高度);
修改窗口位置:
newW.moveTo(x,y);
定时器
- 周期性定时器
开启:
timer=setInterval(()=>{
},时间)
停止:
clearInterval(timer)
- 一次性定时器
开启:
timer=setTimerout(()=>{
},时间)
停止:
clearTimeout(timer)
注意:两个定时器的底层原理相同,可以互换使用
函数、循环、定时器的区别:
- 函数:用户触发、程序员调用
- 循环:一瞬间基本结束
- 定时器:等待一段时间再做一次
获取鼠标位置
e.screenX/Y:获取鼠标相对于屏幕的位置
e.clientX/Y:获取鼠标相对于浏览器/客户端的位置
e.pageX/Y:获取鼠标相对于页面的坐标
history对象:
保存当前窗口的历史记录
history.go(1);//前进
history.go(-1);//后退
history.go(0);//刷新
navigator对象:
navigator.userAgent
例如:
console.log(navigator.userAgent);//输出当前浏览器的版本
location对象:
保存当前窗口正在打开的url
刷新:location.reload();
跳转后静止后退:location.replace(“新url”);
有关location的常识:
协议名(location.protocal):https、http、ftp、ws
域名/主机号(location.hostname):域名要花钱购买,底层大家都是主机号
端口号(location.port):https默认端口值为443,http默认端口值为80,默认端口值可以省略不写
文件相对路径/路由(location.pathname):决定用户查看的页面
查询字符串/请求消息(location.search):客户端发送到服务器端的内容服务器端接收后判断请求内容,进行响应
阻止冒泡
var e=event;
e.cancelBubble();//老IE(兼容)
e.stopPropagation();//主流
事件委托/利用冒泡
e.srcElement();//老IE(兼容)
e.target();主流
阻止按键F12、鼠标右键
onkeydown=e=>{
if(e.keyCode==123){
e.returnValue=false;
alert("F12已被禁止");
}
}
oncontextmenu=e=>{
e.returnValue=false;
alert("鼠标右键已被禁止");
}
Node.js
Globals模块
__dirname:获取当前文件夹的绝对路径
__fliename:获取当前文件夹完整的绝对路径
require:用于引入其他模块
exports:空的{},公开/暴露自身成员
module:指向当前模块,包含上述的四种变量
公开/暴露自己的成员:
exports.属性名=值
module.exports={}
注意:exports与module.exports的区别
node.js底层原理:exports=module.exports;
有开发功能的是module.exports,当使用exports={}时,module.exports会被覆盖,不再具有公开功能
引入其他模块:
var xxx=require("./文件名");//"./"不可省略,“.js”可以省略
Querystring模块:查询字符串
1. 使用前先引入
let qs=require('querystring');
2. 只可解析url的部分字符串(用户提交部分)
var obj=qs.parse("查询字符串部分");//var obj=qs.parse("name=李明&ptw=123&age=18")
3. 查询某一部分
obj.键名//obj.name
Url模块:网址模块
1. 使用前先引入
let url=require('url');//可以解析完整的url
2. 解析完整url
var objUrl=url.parse("完整的url",true);//true会自动调用querystring的parse方法
3. 查询:
objUrl.query.键名;//查询字符串
objUrl.pathname;//判断路由
Buffer模块:将数组变成16进制数字
Node.js大部分API支持buffer操作
fs模块:FileSystem
1. 使用前先引入
let.fs=require('fs');
1. 异步读取文件:
fs.readFile("绝对路径/文件路径",(err,buf)=>{
操作
};//buf为读取的内容
2. 异步写入文件:替换原文
fs.writeFile("绝对路径/文件路径","新内容"/buf,(err)=>{
操作
}
3. 异步追加文件:
fs.appendFile("绝对路径/文件路径","新内容"/buf,(err)=>{
操作
}
http模块:使用代码搭建服务器
1. 使用前先引入
let http=require("http");
2. 创建服务器
var app=http.createServer();
3. 为服务器设置监听端口
app.listen(80);
4. 为服务器绑定事件请求
app.on("request",(req,res)=>{
var objUrl=url.parse(req.url,true);
var router=objUrl.pathname;
if(router=="/"||router=="/index.html"){
fs.readFile("./public/index.html",router,(err,buf)=>{
res.end(buf);
})
}else if(router.match(/html/)!=null){
fs.readFile("./public"+router,(err,buf)=>{
res.end(buf);
})
}else if(router.match(/css|js|json|jpg|png|woff|woff2/)1=null){
fs.readFile("./public"+router,(err,buf)=>{
res.end(buf);
})
}
})
注意:
req(require):用于保存请求对象
res(responce):用于保存响应对象
自定义模块
- 新建名为m1的文件夹
创建index.js的文件,写入需要公开的内容,主模块引入方式:require(“./文件名”) - 新建名为m2的文件夹
创建创建xx.js的文件,写入需要公开的内容,主模块引入方式:require(“./文件名”)
若文件中创建了package.json的配置文件,主模块引入方式为:require(“文件名”) - 新建名为node_modules的文件夹,其中创建m3文件
创建index/xx.js的文件,写入需要公开的内容,主模块引入方式(“文件名”)
npm(node package manager) - 检查npm是否安装成功
npm -v - 下载
npm i 包名 - 删除
npm un 包名 - 更新
npm up 包名