前端自动化构建一直很火热, 各种工具也层出不穷, 开始有点不以为然, 但使用之后发现确实很方便, 也整理出了一套自己感觉不错的搭配组合, 用 Webpack 来处理js, 用 Gulp 来编译与压缩sass, 检查与压缩js, 处理图片等等, 用 Babel 来讲es2015转化为es5. 每次 Babel 与 Webpack 组合时, 网上资料无不扯上 React, 我感觉这一块一直是一个小痛点吧。当然基于 Babel + Webpack + ES6+ 的 React 确实很优雅, 最近正在努力学习, 下一篇博文分享吧。
2个场景, 回调不再是黑洞!
在我看来,异步的控制主要分为两类:
无依赖的异步执行,各个操作之间没有相互依赖,均为独立,需要所有操作都执行结束后返回值.
例如场景1: 有3份txt数据文件, 要求读取这3份数据文件, 并按读取顺序依次输出文件内容.
若直接回调, 不采用任何异步控制:
|
|
有相互依赖的异步执行,下一个操作需要用到上一个操作的执行结果,相当于需要顺序执行,不能并发.
例如场景2: 让我们来模拟一个真实的mongodb场景, 相对于我这样的初学者而言, 在编写应用时, 数据库CRUD中最易出现回调嵌套, 因为我们往往要利用上一步查询的结果来继续下一步.
现在我们有一份学生考试信息的文档, 记录学生的考试号、姓名、密码、分数等信息, 具体如下
{ examid: 1, username: ‘Tom’, password: md5(‘good’), score: [84, 79, 91, 90] };
{ examid: 1, username: ‘Ross’, password: md5(‘both’), score: [81, 73, 67, 78] };
{ examid: 2, username: ‘Alisa’, password: md5(‘great’), score: [78, 69, 87, 71] };
{ examid: 2, username: ‘Joan’, password: md5(‘root’), score: [98, 76, 89, 90] };
{ examid: 3, username: ‘Mike’, password: md5(‘true’), score: [56, 23, 88, 10] };
需要求出Tom所在考场的学生名单, 我们也是直接回调, 先不采用任何异步控制:
|
|
关于MongoDB数据库未授权访问漏洞的解决方案
前两天云盾给了我一个漏洞警告,表示在服务器上的MongodDB存在未授权访问的漏洞。主要原因是因为默认安装完MongoDB后,都有一个空的admin数据库,即使启动时添加认证参数,也不存在任何权限验证,登录的用户可以通过MongodDB的默认端口无需密码对数据库任意操作,包括远程访问数据库,存在较大的安全隐患。
我需要改变
转眼搭建完这个博客已经有4天了,却一直没有时间来写一篇开博纪念,本想把整个博客建站的技术过程详细叙述一下,但这几天瞄了几眼CNODE的nodejs源码,方才感觉自己写得实在太。。。low(lan)了,根本不值一提。nodejs还不怎么懂,路由没有写好,“回调金字塔”出现于我的代码当中,几个查询我傻傻地就嵌套在了一起,OMG。。。直到前天看到《深入浅出nodejs》异步编程那一章才发现自己是多么愚蠢。。。