node.js入门基础
Node.js简介
- Node.js是基于Chrome JavaScript运行时建立的一个平台,使用C++编写的,实际上它是对Google Chrome V8(V8是Google Chrome浏览器的JavaScript引擎)进行了封装,它主要用于创建快速的、可扩展的网络应用。node.js采用事件驱动和非阻塞I/O模型,使其变得轻微和高效,非常适合构建运行在分布式设备的数据密集型实时应用。
- Node.js为什么会出现
-
以前是没有人会想到用JavaScript作为自己的web server 这是因为什么呢?因为JavaScript是比较慢和乱 - V8引擎解决了JavaScript慢的问题
- commonjs解决了乱的问题
- Node的特性是事件驱动
- 为了弥补JavaScript在服务器端的空白
安装
- 先安装好HomeBrew
- HomeBrew是什么?
- Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件。
- Homebrew安装
- Homebrew的安装非常简单,打开终端复制、粘贴以下命令,回车,搞定
- ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
- brew install node
- 或者官网直接下载
- node -v出现版本号安装成功
异步式I/O(非阻塞式)
1.针对所有I/O操作不采用阻塞策略,当线程遇到I/O操作时,不会以阻塞的方式等待I/O操作的完成或数据的返回,
而只是讲IO请求发送给操作系统,继续执行下一条语句,当操作系统完成IO操作时,以事件的形式通知执行IO操
作的线程,线程会在特定时候处理这个事件,为了 处理异步IO,线程必须有事件循环,不断的检查有没有未处理
的事件,依次予以处理
编写首个服务器程序
1.“Hello World: node.js Web服务器
var http = require(‘http’);//http库
http.createServer(function (req, res) //新服务器
res.writeHead(200, {‘Content-Type’: ‘text/plain; charset=utf-8’});//设置http响应头,否则不能返回真实内容给客户端
res.end('大家下午好');
}).listen(7777, "localhost");
2.对于express 新手来说,我推荐一个 express脚手架工具。Express基于Node.js的一个Web框架。
npm install –g express
npm install -g express-generator
express -e myapp
候处理这个事件,为了 处理异步IO,线程必须有事件循环,不断的检查有没有未处理的事件,依次予以处理
核心API
1.Events 在浏览器中Event模型是绑定在DOM上的,所以Node创建了EventEmitter类来提供基础的事件功能。所有node的事件功能都围绕这EventEmitter。
- EventEmitter提供了一系列方法,其中最主要的是on和emit,on方法为事件创建了监听器。
- 创建一个新类支持EventEmitter事件
- var utils = require(‘utils’);//为了调用它的inherits方法
- EventEmitter = require(‘events’).EventEmitter;//引入
- var Sever = function () {console.log(‘init’)}//sever函数
- utils.inherits(Server, EventEmitter)//给Sever继承用
- var s = new Sever();//创建基础sever类
- s.on(‘abc’, function(){console.log(‘abc’)});//监听事件
- s.emit(‘abc’);//触发事件
- HTTP var http = require(’http’);
- URL. var URL = require(‘url’);
var myUrl = “http://www.nodejs.org’’
parsedUrl = URL.parse(myUrl); - querystring
var qs = require(‘querystring’);
qs.parse(‘a=1&b=2&c=d’); - I/O
var fs = require(‘fs’);
var filehandle = fs.readFile(‘data.txt’, function(err, data){console.log(data)});

浙公网安备 33010602011771号