什么是error-first回调模式
应用error-first回调模式是为了更好地进行错误和数据的传递,第一个参数保留给一个错误error对象,一旦出错,错误将通过第一个参数error返回,其余的参数将用作数据的传递
fs.readFile(filePath, function(err, data){
if(err){
return console.log(err)
}
console.log(data)
})
如何避免回调地域
- 模块化设计:将回调拆分成几个独立的函数
- 使用流程控制库,比如async
- 组合使用generators和Promises
- 使用async/await函数
可以参考另一篇博文Promise使用动机
Promise
下面代码有什么错误
new Promise((resolve, reject)=>{
throw new Error('error')
}).then(console.log)
没有设置错误处理函数,可以参考另一篇博文详解Promise对象
桩代码
桩代码(stub)就是在某些组件或模块中,模拟某些功能的代码,桩代码的作用是占位,让代码在测试过程中顺利运行
一个例子,它实际的作用是写一个文件,但是这段代码并没有真正做这件事
var fs = require('fs')
var writeFileStub = sinon.stub(fs, 'writeFile', function(path, data, cb){
return cb(null)
})
expect (writeFileStub).to.be.called
writeFileStub.restore()
测试金字塔
测试金字塔描述了单元测试(unit test),集成测试(integration tests),端到端测试(end-to-end test)在测试中占的比例
举个例子,测试一个HTTP API需要
- 大量关于models的单元测试(使用桩代码处理)
- 一些关于models如何和其他models交互的集成测试(未使用桩代码处理)
- 少量的端到端测试,也就是真实环境下的调用(未使用桩代码处理)
如何保证你的cookie安全,如何阻止XSS攻击
XSS攻击是指攻击者向html页面里插入恶意js代码
为了防止攻击,你需要对HTTP header里的set-cookie进行处理:
- HttpOnly-这个属性帮助防止跨站脚本攻击,它禁止通过js访问cookie
- secure-这个属性告诉浏览器,仅允许通过HTTPS协议访问cookie
所以,你需要做的是在请求头里写Set-Cookie : sid=; HttpOnly。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13494.html