node
杯影含珊
渣渣菜单身程序媛
展开
-
多语言
客户端通过设置请求头(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 · 88 阅读 · 0 评论 -
防盗链
主要看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 · 99 阅读 · 0 评论 -
base64编码原理
1、用buffer得到16进制 let buffer = Buffer.from('靖'); console.log(buffer); // 0xe9 0x9d 0x96 2、16进制得到2进制(3*8) console.log((0xe9).toString(2)) //11101001 console.log((0x9d).toString(2)) //1001110...原创 2019-11-12 20:22:29 · 79 阅读 · 0 评论 -
发布订阅原理
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 · 233 阅读 · 0 评论 -
模板引擎原理
核心:通过正则匹配替换字符串,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 · 101 阅读 · 1 评论 -
commonJs规范原理(简版)
1、要先将 filename的文件转化为绝对路径 2、读取这个文件,需要增加一个匿名函数(exports ,require,module,__filename,__dirname) 函数内部需要返回module.exports 3、让函数执行 4、new Module 创建模块,根据文件名绝对路径创建(exports id) 5、module.load 加载模块 Module._exte...原创 2019-11-09 15:37:36 · 101 阅读 · 0 评论