自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 多语言

客户端通过设置请求头(Accept-Language),请求语言数据 // 已逗号隔开,q为权重,默认第一个权重为1 xhr.setRequestHeader('Accept-Language','ja,zh;q=0.9')服务端拿到请求头(accept-language),进行分割排序,返回对应语言数据 let language = req.headers['accept-la...

2019-11-22 00:17:11 84

原创 防盗链

主要看referer与host是否相同,不相同,说明其他网站在引用。白名单whiteList,设置某些网站可访问权限 let referer = req.headers['referer'] || req.headers['referrer']; if(referer){ let host = req.headers.host.split(':')[0]; refe...

2019-11-22 00:02:10 96

原创 base64编码原理

1、用buffer得到16进制let buffer = Buffer.from('靖');console.log(buffer); // 0xe9 0x9d 0x962、16进制得到2进制(3*8)console.log((0xe9).toString(2)) //11101001console.log((0x9d).toString(2)) //1001110...

2019-11-12 20:22:29 74

原创 发布订阅原理

function EventEmitter(){ this._event = Object.create(null);}EventEmitter.prototype.on=function(eventname,callback){ if(!this._event) this._event = Object.create(null); if(eventname!=="n...

2019-11-11 22:03:34 232

原创 模板引擎原理

核心:通过正则匹配替换字符串,whit用法 去实现。例如ejs中<% %> <%= %>let fs = require('fs');let path = require('path');let str = fs.readFileSync(path.resolve(__dirname, 'index.html'), 'utf8');function ren...

2019-11-09 15:43:56 97 1

原创 commonJs规范原理(简版)

1、要先将 filename的文件转化为绝对路径2、读取这个文件,需要增加一个匿名函数(exports ,require,module,__filename,__dirname) 函数内部需要返回module.exports3、让函数执行4、new Module 创建模块,根据文件名绝对路径创建(exports id)5、module.load 加载模块 Module._exte...

2019-11-09 15:37:36 98

转载 js分享

html部分:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta htt...

2019-04-03 11:24:22 320

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除