nodejs之旅-001-认识nodejs

Nodejs是什么?

nodejs是javascript的一个框架,应用于服务器,什么?javascript可以应用在服务端了,不是只能作为前端的吗?是的,javascript终于不仅仅只作为前端开发工具了,同时也可以写后台了,这样之前的前端开发人员可以直接接触服务端的业务逻辑了,而且nodejs的效率一点都不比其他的服务器语言差。
百度一下nodejs,得到的结果:



我了解的nodejs主要是用于提供高性能服务器以及在服务器中运行各种程序的工具。
目前主流的服务器端语言应该为:Java,.Net,PHP,它们为每一个客户端连接创建一个新的线程,每个线程是会耗服务器资源的。Nodejs改变了客户端到服务端的连接方法,它并不为每个客户端连接创建一个新的线程,而是为每个客户端连接触发一个nodejs内部进行处理的事件。所以,用nodejs可以同时处理非常多的款护短连接,非常适合大量用户的并发连接的应用。

首先了解下nodejs的高性能主要是采用了以下两种机制:
  • 非堵塞型I/O
  • 事件环

非堵塞型I/O

要了解非堵塞型i/o,先要知道普通的堵塞型i/o是什么样的。
场景:访问数据库取得查询结果的时候,中间会存在一个处理时间。在之前的处理机制中,在执行了访问数据库的代码之后,中间的这个处理时间,整个线程会停下来,等处理完成后,才能继续执行其后面的代码。这也就是i/o操作堵塞了代码的执行,因此降低了效率。
nodejs采用的是非堵塞型i/o机制,在执行了访问数据库的代码后就会执行其后面的代码,把数据库返回结果的处理代码放在回调函数中执行,提高了程序的效率。

事件环

nodejs中,在一个时刻只能执行一个事件回调函数,但是在执行一个事件回调函数的中途可以转而处理其他事件,然后返回继续执行原事件回调函数,这种处理机制称为事件环机制。

安装nodejs

nodejs官网:http://www.nodejs.org
在官网下载对应操作系统的安装文件或源码,安装或编译执行。

nodejs中的模块

nodejs核心模块
assert为应用程序的单元测试添加断言处理
buffer用于实现二进制数据的存储与转换
child_process用于实现子进程的创建与管理
cluster用于实现多进程
console用于为控制台输出信息
crypto用于实现数据的加密解密处理
debugger用于实现一个内置调试器来帮助开发者调试程序
dns用于实现与dns相关的处理
domain用于实现多个i/o之间的协作处理
events用于为事件处理提供一个基础类
fs用于操作文件及文件系统
http用于实现http服务器端及客户端
https用于实现https服务器端及客户端
net用于创建tcp服务器与客户端
os用于获取操作系统信息
path用户处理文件路径
punycode用于处理punycode字符串的编码及解码
querystring用于处理http请求中使用的查询字符串
readline用于读取一行标准输入流
repl用于实现repl交互式运行环境
stream用于为流的输入/输出处理提供一个基础类
string_decoder用于实现从二进制数据到字符串数据之间的转换
tls用于实现openssl来实现tls/ssl通信处理
tty用于获取来自于tty总端的信息
url用于实现url字符串的解析与格式化
util用于实现各种实用函数
vm用于为javascript脚本代码提供一个独立的运行环境
zlib内部使用zlib类库来实现数据的压缩及解压处理
  
  

nodejs如何加载模块以及调用模块的方法属性

原生模块的调用
var httpModule = require('http'); //require http模块
文件模块调用方法
var test = require('/path/test.js'); //也可 require('/path/test')

在文件模块中,只有exports和module.exports对象暴露给外部的属性和方法,才能通过require对象进行调用,其他的属性和方法无法获取的。module.exports包含exports。
例如:
test.js
/**
 * Created by wanq on 14/11/13.
 */
/**
 * exports test code
 */

exports.name = "testname";
exports.test = function () {
    console.log("test");
};

var yourname = "tester";
function yourTest() {
    console.log("your do test");
}
app.js
/**
 * Created by wanq on 14/11/13.
 */
var test = require('./test.js');

console.log(test);

结果:

一个简单的demo

example.js
/**
 * Created by wanq on 14/11/13.
 */
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<head><meta charset="utf-8"/></head>');
    res.end('您好\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');



我们认识了什么nodejs,并且会用nodejs写个小例子。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值