NodeJS学习_1
2015-10-21 20:21
405 查看
NodeJs : 使用Javascript作为开发语言的一种后台语言,更确切的来讲应该是一种语言框架,使用Chrome的V8引擎作为Javascript的解析器,使得javascript的解析性能不再成为瓶颈,整个Nodejs使用异步调用的方式大大的提高了整个系统的性能
为什么异步调用可以提升系统的响应性能,这个也是相对而言的,如果系统是一个计算密集型的系统,那么异步调用并不能显著的提升性能,但是如果系统是一个类似于微博,消息等社交应用的话,则异步调用则显示出其强大的灵活性,系统没必要阻塞在某个较慢的响应部件上,而是直接处理其他的请求,等到该部件执行完操作后,通知我继续后续的操作即可,打个比方要读取一个较大的文件,此时磁盘的IO会比较慢,如果阻塞在此处则整个系统的响应速度就会及其的慢,而如果cpu此时只是发送一个读取磁盘文件的命令,而去处理其他的请求,等到磁盘已经将数据准备好了后,再通知我继续执行后续的操作,则系统的响应不会因此而被阻塞。
其实异步模型在nginx,tomcat等中也已经很成熟了,如nginx中如果在linux平台上开启了epoll则会自动的使用异步io的方式响应请求,其原理也基本上是异曲同工。只是nodejs在语言以及框架层面上提供了此种能力,让异步编程变得更加的灵活。
当然异步模型也有其缺点,个人认为最主要的缺点就是整个系统的代码会散落在系统的各个地方,打乱了代码的架构,从而使得系统变大了之后,系统的代码比较难维护。
下面切入正题:
1. nodejs的安装:
nodejs提供的有windows版和linux版,对于开发的童鞋来说一般在windows上做开发,由于js是脚本语言,本身不会经过编译,因此在windows上开发,调测完成后,在将相关的源代码拷贝到linux机器上上线运行。因此开发只需要安装windows版本的node即可,
在node的官网上下载node的最新版本,当前最新的版本是V4.0,安装包为标准的windows的msi安装包,直接一路next即可。
安装完毕后,一般node会将自己的home目录添加到path环境变量中,只需要运行cmd,即可执行node程序。
2. 第一个小程序:
在安装完node后,打开一个顺手的编辑器,我一般使用notepad++,新建一个文本文件,
输入
var sys = require("util")
sys.puts("Hello world");
保存为test.js 然后在命令行中切换到该文件的目录所在,执行node test.js即可在console上看到helloworld输出。
3. 创建一个服务器如此简单
上面第一个小程序如此的简单,当然nodejs的主要功能在web服务上。
首先创建一个httpserver.js文件
文件内容如下
var sys = require("util") //需要加载util模块
var http = require("http"); //需要加载http模块
http.createServer(function(request, response) {
// response.sendHeader(200, {"Content-Type": "text/html"});
response.writeHeader(200, {"Content-Type": "text/html"});
response.write("Hello World!");
// response.close();
response.end();
}).listen(8080); //创建一个server,该server在8080端口监听客户的请求,同时如果有请求到来了则执行function回调函数
sys.puts("Server running at http://localhost:8080/");
在console中运行node httpserver.js 会开始运行服务器,在本机的8080端口监听客户端的请求,
此时通过浏览器访问http://localhost:8080则会在浏览器中看到Hello Wrold的结果输出。
创建一个server如此的简单
4. 总结:
node可以作为静态资源服务器,响应客户端的静态资源的请求,也可以作为动态请求的服务器返回json字符串或者其他动态页面给客户端浏览器,上面只是node的最简单的应用,而一个应用服务器不可能如此的简陋,如 如何解析客户端传递过来的参数,如何保存客户端的session,如何与数据库进行交互,如何返回动态页面等等,当然在node中也都有较为完成的解决方案,如express框架等可以较好的解决以上问题。。
node还处于发展的初期,但是前途绝对是光明的。。。
为什么异步调用可以提升系统的响应性能,这个也是相对而言的,如果系统是一个计算密集型的系统,那么异步调用并不能显著的提升性能,但是如果系统是一个类似于微博,消息等社交应用的话,则异步调用则显示出其强大的灵活性,系统没必要阻塞在某个较慢的响应部件上,而是直接处理其他的请求,等到该部件执行完操作后,通知我继续后续的操作即可,打个比方要读取一个较大的文件,此时磁盘的IO会比较慢,如果阻塞在此处则整个系统的响应速度就会及其的慢,而如果cpu此时只是发送一个读取磁盘文件的命令,而去处理其他的请求,等到磁盘已经将数据准备好了后,再通知我继续执行后续的操作,则系统的响应不会因此而被阻塞。
其实异步模型在nginx,tomcat等中也已经很成熟了,如nginx中如果在linux平台上开启了epoll则会自动的使用异步io的方式响应请求,其原理也基本上是异曲同工。只是nodejs在语言以及框架层面上提供了此种能力,让异步编程变得更加的灵活。
当然异步模型也有其缺点,个人认为最主要的缺点就是整个系统的代码会散落在系统的各个地方,打乱了代码的架构,从而使得系统变大了之后,系统的代码比较难维护。
下面切入正题:
1. nodejs的安装:
nodejs提供的有windows版和linux版,对于开发的童鞋来说一般在windows上做开发,由于js是脚本语言,本身不会经过编译,因此在windows上开发,调测完成后,在将相关的源代码拷贝到linux机器上上线运行。因此开发只需要安装windows版本的node即可,
在node的官网上下载node的最新版本,当前最新的版本是V4.0,安装包为标准的windows的msi安装包,直接一路next即可。
安装完毕后,一般node会将自己的home目录添加到path环境变量中,只需要运行cmd,即可执行node程序。
2. 第一个小程序:
在安装完node后,打开一个顺手的编辑器,我一般使用notepad++,新建一个文本文件,
输入
var sys = require("util")
sys.puts("Hello world");
保存为test.js 然后在命令行中切换到该文件的目录所在,执行node test.js即可在console上看到helloworld输出。
3. 创建一个服务器如此简单
上面第一个小程序如此的简单,当然nodejs的主要功能在web服务上。
首先创建一个httpserver.js文件
文件内容如下
var sys = require("util") //需要加载util模块
var http = require("http"); //需要加载http模块
http.createServer(function(request, response) {
// response.sendHeader(200, {"Content-Type": "text/html"});
response.writeHeader(200, {"Content-Type": "text/html"});
response.write("Hello World!");
// response.close();
response.end();
}).listen(8080); //创建一个server,该server在8080端口监听客户的请求,同时如果有请求到来了则执行function回调函数
sys.puts("Server running at http://localhost:8080/");
在console中运行node httpserver.js 会开始运行服务器,在本机的8080端口监听客户端的请求,
此时通过浏览器访问http://localhost:8080则会在浏览器中看到Hello Wrold的结果输出。
创建一个server如此的简单
4. 总结:
node可以作为静态资源服务器,响应客户端的静态资源的请求,也可以作为动态请求的服务器返回json字符串或者其他动态页面给客户端浏览器,上面只是node的最简单的应用,而一个应用服务器不可能如此的简陋,如 如何解析客户端传递过来的参数,如何保存客户端的session,如何与数据库进行交互,如何返回动态页面等等,当然在node中也都有较为完成的解决方案,如express框架等可以较好的解决以上问题。。
node还处于发展的初期,但是前途绝对是光明的。。。
相关文章推荐
- 【Glassfish】GlassFish中Domain、DAS、cluster、 instance以及node agent之间的关系
- nodejs图片转换字节保存
- nodejs实战express笔记之实现用户和文章页面
- Nodejs 模块
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- Node入门训练【7】【用express写出hello world】
- node.js学习网址
- Understanding the node.js event loop
- LeetCode 19 Remove Nth Node From End of List(从列表尾部删除第N个结点)(*)
- Node入门训练【6】【将data写本地log】
- nodeJS实现图片上传和展示
- Node入门训练【4】【根据url路径参数打印相应盘符目录】
- nodejs实战express之使用Markdown
- 自己写的一本nodejs小教程
- LeetCode 19: Remove Nth Node From End of List
- node-mysql使用
- Node入门训练【3】【打印本地目录下的所有文件名】
- Node入门【2】【打印本地文件内容】
- Node.js中的异步执行
- LLVM 笔记(二)—— PHI node