心血来潮,总结了一个Nodejs入门秘籍。看了你就想学NodeJs了。
一、简单介绍nodejs
初学nodejs ,直接上简单实例。先简单说明一下:nodejs ,nodejs相当于服务器端的 可以轻易搭建一个服务器端。
nodejs是用C++开发的一种运行于服务器端的语言,可以写网站后台程序,可以做服务端应用开发,语法和JAVASCRIPT一样,会JS,就是会NodeJS,区别于,普通JS是脚本运行客户端,而NODEJS中的JS是运行于服务器端,NODEJS的作用相当PHP,ASP等语言。
Nodejs最大的特性之一:非阻塞(事件驱动IO),这也让nodejs的性能有不小的提升。
传统的web server多为基于线程模型。你启动Apache或者什么server,它开始等待接受连接。当收到一个连接,server保持连接连通直到页面或者什么事务请求完成。如果他需要花几微妙时间去读取磁盘或者访问数据库,web server就阻塞了IO操作(这也被称之为阻塞式IO).想提高这样的web server的性能就只有启动更多的server实例。
相反的,Node.Js使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)\
考虑下面这个过程:
1,你用浏览器访问nodejs服务器上的"/about.html"
2,nodejs服务器接收到你的请求,调用一个函数从磁盘上读取这个文件。
3,这段时间,nodejs webserver在服务后续的web请求。
4,当文件读取完毕,有一个回调函数被插入到nodejs的服务队列中。
5,nodejs webserver运行这个函数,实际上就是渲染(render)了about.html页面返回给你的浏览器。
好像就节省了几微秒时间,但是这很重要!特别是对于需要相应大量用户的web server。
下面我们来构建一个简单实例:
准备工作:在linux上安装好nodejs(自带npm包管理器)。npm是nodejs的包管理器,后续需要用到的比如express,socket.io等模块都是通过npm 下载。
npm init 生成一个包管理文件:package.json.
npm install express --save 安装express --save 可以自动更新package.json 文件,将express 作为项目以来添加到package.json里面。同时npm会自动新建node_modules文件夹,存放各种包。
Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用。Express框架建立在node.js内置的http模块上。
新建app.js ,用于搭建简单的web服务器。
$vim app.js
var express = require(‘express‘) //加载express模块
var app = express()
var port = process.env.PORT || 3000 //监听的端口
app.use(express.static(__dirname + ‘/static‘))
app.use(function (req , res){
res.sendfile(‘./static/index.html‘)
})
app.listen(port,function(){
console.log(‘TechNode is on port‘ + port + ‘!‘ )
})
将静态文件放在static目录下;在static目录下还会放index.html文件,它将会作为整个应用的启动页面。除了静态文件的请求以外,其他所有的HTTP请求,我们都会输出index.html文件,服务端不关心路由,所有的路由逻辑可以都交给在浏览器端的Angular.js(另一神器,正在学习)去处理。
如果想查看服务器端的请求日志,加上下面这两句即可,但是加之前别忘了 npm install morgan --save哦:
var logger = require(‘morgan‘)
app.use(logger(‘dev‘));
接下来,我们随便在static目录下建个index.html,里面加点内容,我们就可以在敲入 $node app.js
便可以在浏览器端 浏览 :http://服务器Ip:3000/ 。
让我们回顾下,整个目录下就只由这几部分组成:
[email protected]:~/test27$ ls
app.js node_modules package.json static
很简单对不对。nodejs的学习之路这就开始了!学好nodejs主要要学习他的核心框架,模块加载机制,路由处理,异步编程机制,http框架==。