一直想了解一下使用C/C++编写nodejs原生模块,从网上找到的博客,大多都停留在如何搭建环境,然后一个Hello World完事。连更多的参考资料也没有。于是就自己整理了一下,备份成此博客,分享于此。
理解nodejs的事件循环
事件循环机制是nodejs非常非常重要的知识,从网上找的各种资料,却又各种“不同”。
有的文章,从js的执行栈,到事件机制,异步调用,一直讲到事件循环,但是到了事件循环本身的时候,却讲解的又十分含糊,扔张图上去,配两行文字说明,完了。而且,有的图还都不怎么相同,导致看完下来,还是十分模糊,这都说了些啥。。。
我将这些资料整理一遍,梳理了一下,加上自己的理解,成此文。
至于准不准确,其实,我也没底,真的。如果有哪位大神看到有错误的地方,劳烦指出,不胜感激。
node-mongodb-native原生驱动在固定集合上的坑
我们都知道, mongodb的固定集合,一旦插入数据后,再进行修改数据,会有限制:文档的大小不能改变,只能按照原来文档的大小进行修改。
我在实际项目中,遇到这么一个问题,找了好久才找到问题根源。
深入理解ES7的async/await
在最开始学习ES6的Promise时,曾写过一篇博文《promise和co搭配生成器函数方式解决js代码异步流程的比较》,文章中对比了使用Promise和co模块搭配生成器函数解决js异步的异同。
在文章末尾,提到了ES7的async和await,只是当时只是简单的提了一下,并未做深入探讨。
在前两个月发布的Nodejs V7中,已添加了对async和await的支持,今天就来对这个东东做一下深入的探究。以更加优雅的方法写异步代码。
【译】nodejs v7初体验之async/await
几个月之前,async/await终于登录了V8引擎。与此同时,nodejs中V8引擎也进行多次升级,最新的Nightly版本也支持async/await了。
声明:async/await现在只在nodejs的非稳定版本Nightly版本中可用。现在不要用在生产环境中!!!
使用travis自动构建部署Hexo博客至github pages
使用hexo搭建博客,然后将生成的静态网页托管到github pages上,需要三个步骤:
- 编写markdown博客
- hexo生成并发布
- 将markdown源码推送到github备份
这个步骤还是有点繁琐,因为,使用需要手动生成静态网页,手动推送markdown源码。
那么,能不能将两个步骤合在一起呢?
当然可以,使用Travis自动化构建。
换一种角度看Javascript的面向对象-行为委托
javascript是一门面向对象语言,这一点应该毫无疑问。不是有句话这么说的么,js中万物皆对象,就连函数的本质都是对象,因此js里函数也是一等公民。
虽然js是面向对象的语言,但是Js却没有类的概念,其继承方式也和基于类的面向对象语言有所不同,是基于原型链的继承。
但,很久以来,我们在尝试说明js的原型链的机制时,都是用“类”的概念去做类比,构造函数,实例,继承。就连最新的ES6都添加了class
关键字,这让人们越来越迷糊,js到底存不存在类,它的原型到底本质和类有什么区别?
jser做了几道简单而有趣的算法题
作为 js 开发人员,既然被称作工程师,那么,还是有必要对算法有所了解的,时不时的找几道简单的算法题目练练脑,训练下逻辑,也是对编程基础的巩固吧。
这几天看到几道有趣但很简单的算法题,和大家分享下。
使用nativefier打包网站为桌面应用
近两天发现一个工具,nativefier,可以将网站应用打包成桌面应用。
nativefier是基于electron的,当然,你也可以直接使用electron打包,灵活性更高。
开发必备工具
作为一个开发者,工具是提升效率的一大法器,一款好的开发工具,能使开发效率大大加快,而且还能保持心情愉悦。本篇文章,记录一下自己在平时开发的过程中遇到的比较喜欢的开发工具,我在选择工具时,会尽量选择同时兼容linux和mac平台的,如果不兼容,会在每个平台找出替代。会随时不定时更新。