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 以本地地址作为依赖

node-schedule的使用说明

这篇笔记内容很简单,就只是记录一下node-schedule的使用方法,特别是在初始化一个定时任务时,需要传递的参数的写法含义。

先看一段代码:

1
2
3
4
5
6
7
8
9
var schedule = require('node-schedule');

function createScheduleCron(){
schedule.scheduleJob('30 * * * * *', function(){
console.log('excute scheduleCronstyle:' + new Date());
});
}

createScheduleCron();

Read More

node.js中module.exports与exports的区别

我们在阅读它人或开源的node.js代码时,会发现在对模块导出的写法上会出现下面几种情况,而关于导出的方法整理,可以参见我这篇文章node.js中exports的用法整理。现在,我们以导出字符串对象为例:

在module.js文件中,有如下写法:

  • 1.exports.get_name = ‘fungwan by exports ‘;
  • 2.module.exports.get_name = ‘fungwan by modules’;
  • 3.module.exports = ‘fungwan by modules’;

通过对比发现,这里较之前多了module.exports,那么它跟exports的导出有什么关系呢?查阅资料即可知晓,其实exports就是module.exports对象的引用,本质上是相等的。我们可以通过这句代码证实:

Read More

node.js中exports的用法整理

相信很多跟我一样是node.js新手的同学对模块的导出或多或少有些混淆,现在我把exports对象的方式整理一下,其中包含了模块中需要导出的string对象、json对象、函数、类对象。

我们将需要导出的模块就命名为module.js,通过下面的代码导出需要的对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
exports.some_words = 'this is string';//导出一个字符串

exports.some_fun = function() {//导出一个函数
console.log('this is function');
};

exports.jsonObj = {
name : 'fungwan',
sex : 'man',
run : function(){
console.log('love running!');
}
};

//导出一个类
function helper() {
var number = '';
this.do = function () {
console.log('I can help you!');
}
}

helper.prototype.giveMoney = function(){
console.log('I have lots of cash!');
}

exports.c_help = helper;

Read More

解决Node在centos上无法访问

将Node安装在了centos 上,发现在主机上并不能访问虚拟机上centos的node服务器,但是虚拟机能访问自己的web。各自都可ping通对方的IP。虚拟机采用的NAT的方式。后来查阅了资料,可能是防火墙的原因。
服务器的5858端口被防火墙堵了,可在主机通过命令:telnet server_ip 5858 来测试。

解决方案:

1
/sbin/iptables -I INPUT -p tcp --dport 5858 -j ACCEPT

然后保存:

1
/etc/rc.d/init.d/iptables save

重启防火墙

1
/etc/init.d/iptables restart

再在主机访问OK!