现在的位置: 首页 > 综合 > 正文

Node.js入门经典-入门

2018年09月30日 ⁄ 综合 ⁄ 共 2006字 ⁄ 字号 评论关闭
文章目录

1. Node.js介绍

Ryan Dahl在V8引擎之上创建JavaScript环境,由于

V8引擎极快

V8专注于Web,在处理HTTP协议、DNS协议和TCP协议等事务上驾轻就熟

JavaScript在Web上人尽皆知

Node.js是一个事件驱动的 服务器端Javascript环境,专注于网络以及创建网络交互的软件。

Hello World 服务端server.js

var http = require ('http');
http.createServer(function (req,res) {
	res.writeHead(200,{'Content-Type':'text/plain'});
	res.end('Hello World\n');
}
).listen(3000,'127.0.0.1');

运行node server.js,并打开浏览器输入127.0.0.1:3000

2. Node包管理器NPM

npm(node package manager)在Node.js中创建、共享并重用模块。

使用模块 var module = require('module');

安装模块 npm install underscore

模块来源   

官方来源      https://www.npmjs.org/

非官方来源  http://blago.dachev.com/modules   http://toolbox.no.de/

本地安装:将项目安装在本地一个名为node_modules的文件夹下,以便项目使用,默认是这种方式。

全局安装:有些模块带有可执行文件,你希望能够在文件系统的任何位置都能运行这些可执行文件。加-g参数  npm install -g express

模块文档

npm docs underscore    打开 浏览器指向所提供的帮助页面

npm bugs underscore   查看bug

npm edit underscore

使用package.json指定依赖关系

利用package.json文件来管理模块,在项目根目录创建相关json文件,运行npm install

{
  "name": "example02",
  "version": "0.0.1",
  "dependencies": {
    "underscore": "~1.2.1"
  }
}

3. Node.js的作用

Node.js是构建在Chrome的JavaScript运行时之上的一个平台,用于简单快速的、可扩展的网络应用程序,Node.js使用事件驱动的、非阻塞的I/O模型,这让其既轻量又高效,是运行于不同发布设备上的数据密集型实时应用程序的完美平台。

网络上I/O是不可预测的

Node的事件化的I/O模型让我们无须担心互锁和并发这两个在多线程异步I/O中常见的问题。

JavaScript是一个事件驱动型语言

4. 回调

 函数可以作为参数传递到另外一个函数中,然后被调用。

同步(阻塞)指代码的执行会在函数返回之前停止,如果某个操作阻塞,脚本将无法继续执行。

异步(非阻塞)指基于回调的、允许脚本并行执行操作的方法,脚本无需等待某个操作的结果才能继续前进,因为操作结果会在事件发生时由回调来处理。

Node.js使用JavaScript的事件循环Event Loop来支持其所推崇的异步编程风格。基本上,事件循环使得系统可以将回调函数先保存起来,而后事件在将来发生时再运行。

Node.js经常被当做一个网络编程框架,因为它的设计旨在处理网络中数据流的不确定性。

由于事件循环以单一进程为基础,为了确保高性能需要遵循以下规则:

• 函数必须快速返回
• 函数不得阻塞
• 长时间运行的操作必须移动另一个进程中

事件循环Loopage 

Douglas Crockford教程 

并发处理的两种方法:thread、Event Loop


Pro 优点
Con缺点
Thread
•No rethinking is necessary.
•Blocking programs are ok.
•Execution continues as long as any thread is not blocked.
•Stack memory per thread.
•If two threads use the same memory, a race may occur.
•Overhead.
•Deadlock.
•Thinking about reliability is extremely difficult.
•System/Application confusion
Event Loop
•Completely free of races and deadlocks.
•Only one stack.
•Very low overhead.
•Resilient. If a turn fails, the program can still go on
•Programs must never block.
•Programs are inside out! Waa!
•Turns must finish quickly

抱歉!评论已关闭.