常用的markdown标记

##Markdown
平常用markdown的时间不多,所以每次用它来写日志的时候都容易忘记,为此总结一些平常自己会经常用到的标记,方便查看(代码和效果同时附上),此后也会持续更新…

###图片
为致敬女神,图片格式放最前,^_^

1
![Alt text](/img/hexie.jpg "Optional title")


Read More

学习js中的this用法

通过这几个月在node.js上的工作,发现js其实并不是那么简单,而且感觉上越来越深,比如现在要笔记的一个坑——this,因为之前用过C++对this有一定的了解,其就是指向当前对象,而javascript中的this,因其弱语言的灵活性,它被赋予了更多的作用和使用范围。由于其运行期绑定的特性,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式,下面根据网上的文章作了一个归纳,方便日后温习。

一般而言,在Javascript中,this指向函数执行时的当前对象,该关键字在Javascript中的执行环境,而非声明环境有关。

##1.作为单纯的函数调用

1
2
3
4
5
function modifyName(name) {
this.name = name;
}
modifyName('fengyun');
console.log(name);

Read More

node中异步回调解决方案之promise

以前在其他开发平台写码习惯了同步的写法,现在切换到node.js里面的异步特性,还是有一点的不习惯,起初还不怎么觉得,但当遇到数据库的操作,并且需要其返回的数据作下一步的逻辑时,问题就出来了,后面的逻辑都会写在前一个异步的回调里面,如此炮制,最后的结果就是一个金字塔似的回调噩梦就产生了。

那么如何解决这样的噩梦呢?其实不管是网上还是其他渠道的资料上都有其针对异步的解决方案,而我是在看了张丹老师的博文后,决定尝试使用asyn库,并且应用在了实际的项目中来,效果不错。而今天我要笔记的是另外一种异步的解决方案-promise。

Read More

npm install经常失败解决方法

之前在使用node.js的好基友npm包管理器install模块的时候,间断性的失败,而且是屡试不爽,后来网上了解到和我有相同遭遇的朋友们不在少数。原因就在于npm包管理服务器在米国,而我们有骄傲的GFW,故导致上述install不稳定的情况。所以,为了更好的使用体验采用了淘宝的 NPM 镜像,它是一个完整的npmjs.org镜像。

*1.通过定制的 cnpm 命令行工具代替默认的 npm

1
npm install -g cnpm --registry=http://registry.npm.taobao.org

*2.安装具体模块

1
cnpm install [name]

tips:当安装的时候发现安装的模块还没有同步过来, 淘宝 NPM 会自动在后台进行同步, 并且会让你从官方 NPM registry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从 淘宝 NPM 安装了.

*3.同步模块(直接通过 sync 命令马上同步一个模块)

1
cnpm sync connect

package.json里面的版本管理

在学习和使用node的过程中,常常会接触到package.json里面的配置,不管是自己填写还是去阅读人家的文件,刚开始都是一头雾水,此篇笔记只是针对里面的dependencies属性。因为我们在更新或者使用人家第三方模块的时候(npm install),最关键的就是dependencies里面的版本值。举一个小例子:

"dependencies": {
"websvr": "0.1.x",
"websvr-redis": "0.x.x",
"mustache": "~0.7.2",
"connect-multiparty": "^1.1.0" }

这里面头两个模块的依赖都好理解,即websvr匹配0.1.0,0.1.1等版本,不会匹配如0.2.0之类的。关键后面的两个模块依赖,有两个特殊符号~和^,它们的区别分别如下:

  • ~会匹配最新的子版本(中间那个数字),比如~0.7.2会匹配所有的0.7.x版本,但不匹配到0.8.0及以上;
  • ^会匹配最新的主版本(第一个数字),比如^1.1.0将会匹配所有的1.x.x版本,2.0.0就略过。

最后,附上版本控制的其他范围:

version 必须严格匹配到 version 版本
>version 必须大于 version 的版本
>=version 大于等于 version 的版本
<version 小于
<=version 小于等于
~version “几乎相同的版本(Approximately equivalent to version)” 参见semver(7)
^version “兼容的版本” 参见 semver(7)
1.2.x 匹配1.2.0, 1.2.1, 之类., 但不匹配 1.3.0
http://... 以URL地址作为依赖
* 匹配任意版本
"" (就是一个空白字符empty string) 同 *,任意版本
version1 - version2 同 >=version1 <=version2.
range1 || range2  range1 或者 range2 的任一版本.
git... 以GIT地址作为依赖
user/repo 以GitHub地址作为依赖
tag 匹配一个以 tag 标记并发布的版本,参见 npm-tag(1)
path/path/path 以本地地址作为依赖