完成今天的小目标是实现梦想的利器
《如何想到又做到》有感
我们老家冬天的一道风景~
阻塞与非阻塞IO
—
区分以下PHP代码和Node代码有什么不同:
// PHP
print('Hello');
sleep(5);
print('world')
// Node
console.log('Hello');
setTimeout(function(){
console.log('world');
},5000)
区别:
PHP中当遇到sleep时程序会阻塞住,在阻塞设定时间之前,不会有任何操作,也就是说是同步的;
Node使用了事件轮询,本质上Node会先注册事件,随后不停的询问内核这些事件是否已经分发。当事件分发时,回调函数就会被触发,然后继续执行下去;如果没有事件触发,则继续执行其他代码;setTimeout只是注册了一个事件,程序继续运行,也就是说是异步的。事实上node.js是单线程、异步的。
Node中的js
—
global对象
模块系统
关于模块系统,主要有三个API:require、module、 exports;
require:用于模块的引用
require('colors');
以上是绝对模块,是指能在node_modules查找到,或者node内置的模块(例如fs);
require('./module_abc');
以上的相对模块,这是指通过相对路径引用模块;
要想模块能被require(引用),模块必须被导出,就得用到module和exports;
// module_abc.js
exports.name = "zhangsan";
exports.age = "13";
上述这样模块就被导出了,接下来进行引用:
// use_require.js
var abc = require('./module_abc');
console.log(abc.name);
console.log(abc.age);
module.exports:
// module.exports
module.exports = Person;
function Person(name){
this.name = name;
};
Person.prototype.say = function(){
console.log('我的名字是'+ this.name);
}
// use_require.js
var abc = require('./module_abc');
console.log(abc.name);
console.log(abc.age);
var Person = require('./module_exports');
console.log("Person",Person);
var Lin = new Person('Lin');
Lin.say();
在终端执行结果如下:
事件
举个提交例子:
http.Server(function(req,res){
var reqData = '';
req.on('data',function(){
buf += data;
};
req.on('end',function(){
console.log("数据接受完成");
})
})
Buffer
Buffer是node.js提供了用于TCP流、文件系统、以及其他上下文中与八进制流进行交互的方法。
Buffer类在全局作用域中,所以不用引用。在 6.0.0 之前的 Node.js 版本中,Buffer 实例是使用 Buffer构造函数创建的;为了使 Buffer 实例的创建更可靠且更不容易出错,各种形式的 new Buffer()构造函数都已被弃用,且改为单Buffer.from()
,Buffer.alloc()
和 Buffer.allocUnsafe()
方法。
当字符串数据被存储入 Buffer
实例或从 Buffer
实例中被提取时,可以指定一个字符编码。
const buf = Buffer.from('hello world', 'ascii');
console.log(buf.toString('hex'));
// 打印: 68656c6c6f20776f726c64
console.log(buf.toString('base64'));
// 打印: aGVsbG8gd29ybGQ=
到这里我们应该清楚了node.js的安装和一些基本概念了,下一次我们就要一起学习Node重要的API。
其实由于这本书出版的比较早而且讲的都是很基础的,所以希望宝宝们还是要多多参考最新的文档哦!下面的链接就是文档地址。电子版的文档是真的好、更新快。不像纸质版的出版了就是出版了,更新不能同步,所以宝宝们要学习看电子的书和文档哦!
啰嗦太多了,一起加油吧,一起找适合自己的学习方法,做一个勤奋,有方法的笨鸟!
参考文档:http://nodejs.cn/api/buffer.html
愿我们有能力不向生活缴械投降---Lin