Node.js简单学习

一、安装、编译、测试执行

在linux下安装之前,必须先安装开发包

yum -y install gcc gcc-c++

yum -y python

yum -y openssl openssl-devel

wget ....node.tar.gz


下载的包有两种,一种是编译好的直接使用

mv nodexxx /usr/local/node

ln -s /usr/local/node/bin/node

另外一种是需要编译的

./configure --prefixe=/usr/local/node

make && make install

ln -s /usr/local/node/bin/node


新增hello.js

console.log('Hello World!');

node hello.js  //输出  Hello World

也可

node -e "console.log('Hello World!)"

还可以使用命令模式即:


二、建立HTTP服务器

创建一个服务脚本

http.createServer(function(req, res) {
	res.writeHead(200, {'Content-Type': 'text/html'});
	res.write('<h1>Node.js Tianhu.peng</h1>');
	res.end('<p>Hello World</p>');
}).listen(3000);
console.log("HTTP server is listening at port 3000.");


node app.js

访问http://domian:3000

就可以了

在实际的开发中,我们需要在不停止服务的情况下更改,这里就需要一个插件supervisor,

supervisor就是监控你代码的更改并重启服务

npm install -g supervisor

安装完成之后,在/usr/local/node/bin下面就有一个supervisor的命令

执行

supervisor app.js 

当我们修改时,它就会自动的重启


三、异步式I/O与事件式编程

node.js异步读取文件

var fs = require('fs');
fs.readFile('text.txt', 'utf-8', function(err, data) {
    if (err) {
        console.error(err);
    } else {
        console.log(data);
    }
});
console.log('end.');
// 运行结果
end.
this is a io node test

在看一个同步读取

var fs = require('fs');
var data = fs.readFileSync('text.txt', 'utf-8');
console.log(data);
console.log('end.');
// 运行结果
this is a io node test
end.

Node.js所有的异步I/O操作在完成时都会发送一个事件到事件队列。

事件由EventEmitter对象提供,上面用到的fs.readFile和http.createServer的回调都是通过EventEmitter来是现实的

看一个例子

var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter;

event.on('some_event', function() {
    console.log('some_event occured');
});

setTimeout(function() {
    event.emit('some_event');
}, 1000);

上面的原理是:

event对象注册了事件some_sevent的一个监听器

通过setTimeout在1000毫秒以后向event对象发送事件some_event,此时会调用some_event的监听器


四、模块和包

模块(Module)和包(Package)是Node.js最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能才分、封装,然后组合起来,模块正是为了实现这种方式诞生的。Node.js提供了require函数来调用其他模块,而且模块都是基于文件的,机制十分简单。

1、什么是模块

模块是Node.js应用程序的基本组成部分,文件和模块是一一对应的。一个Node.js文件对应一个模块

如 var http = require('http')

2、创建模块和加载模块

看一个例子: modeule.js

var name;

exports.setName = funciton(thyName) {
    name = thyName;
};
exports.sayHello = function() {
    console.log("Hello " + name);
};

在同一目录下

var myModule = require('./module');
myModeule.setName('tianhu.peng');
myModeule.sayHello();
// 输出 Hello tianhu.peng
注意:require是单次加载模块,也就是说只加载一次

3、覆盖exports

有的时候,我们指向把一个对象封装到模块中

hello.js

function Hello() {
    var name;

    this.setName = function (theName) { name = theName; }; 
    this.sayHello = funciton() { console.log('Hello ' + name); };
};
exports.Hello = Hello

按照上面的方法,我们使用的时候就必须

var hello = require('./hello').Hello

我们只需要

exports.Hello = Hello改为  module.exports = Hello;

var hello = require('./hello');

hello = new Hello();  hello.setName('tianhu.peng');  hello.sayHello();


5、创建包

包就是模块的升级,也相当于C的函数库的概念

Node.js的包是一个目录,包含各种文件和说明文件

下面,我们自己创建一个包

1)创建一个mypackage的包的文件夹

2)在mypackage下创建index.js   // 内容  exports.hello = function(){ console.log('Hello okhqb'); };

3)  在同mypackage目录下创建test.js 

var p = require('./mypackage');   p.hello();   //输出 Hello okhqb

4) 进一步深入,加入package.json  //在mypackeage目录下

{

  "main" : "./lib/interface.js"  //将index.js重命名并放入lib下

}

Node.js在调用某个包时,会首先检查包中的package.json,去寻找main  如果没有再查找index.js


6、包管理器,上面我们使用了npm install -g supervisor安装,npm就是Node.js官方提供的包管理工具。

1)获取一个包

npm [install/i] package_name  例如我们需要安装express

npm install express   或者  npm i express;  z只要你会yum,这个不难理解

2)本地模式和全局模式

npm install express是本地模式

npm install -g supervisor是全局模式。所有应用都可以使用

3)理解ln -s吗,这里也可以做到创建全局连接

npm link express ./node_modules/express  -> /usr/local/lib/node_modules/express


7、调试Node.js;最好使用成熟的IDE调试,比如Eclipse;这里我们主要的工作环境是linux,所以介绍linux下调试

很简单

node debug debug.js就可以了,关于调试命令可以参考node.js的帮助文档,个人建议使用eclipse



上面只是简单的说了下nodejs中一般知识,后续会有更加详细的教程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值