Node.js 简介

Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。

V8引擎执行Javascript的速度非常快,性能非常好。

Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。

Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

博客原文请见米扑博客:Node.js 安装与开发

Node.js 特性

Node.js 是为网络而生,使用node,可以做以下开发:

  • 具有复杂逻辑的网站;
  • 基于社交网络的大规模 Web 应用;
  • Web Socket 服务器;
  • TCP/UDP 套接字应用程序;
  • 命令行工具;
  • 交互式终端程序;
  • 带有图形用户界面的本地应用程序;
  • 单元测试工具;
  • 客户端 JavaScript 编译器。

此外,Node.js内建了 HTTP 服务器支持,也就是说可以轻而易举地实现一个网站和服务器的组合,这个是它的最大优点。

Node.js 架构

Node标准库就不介绍了,后面开发实例当中会来介绍,比如:http,fs,buffer等。。。

介绍以下图上面的几个英文字母:

V8:指的是谷歌的一款javascript引擎——Google V8引擎,具体可以查阅其相关资料,据说是目前全宇宙执行javascript最快的引擎。

Libeio和Libev:底层的事件驱动和异步式 I/O库,据说也是非常高效的。

IOCP:输入输出完成端口机制。

Libuv:这个主要是用来适用不同的操作系统的,Node刚开始是没有这个的,刚开始只能运行在linux底下,随着发展为了适用于windows,node团队抽象出Libuv这一层。

1. 下载 node.js

官网: https://nodejs.org/en/download/

下载: node-v6.11.1.tar.gz

2. 安装 node.js

tar zxvf node-v6.11.1.tar.gz
cd node-v6.11.1/
./configure --prefix=/usr/local/node
make && make install

配置环境变量

vim /etc/profile

添加如下配置:

NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules

3. 验证安装

# node -v
v6.11.1
# npm -v
3.10.10

  

4. Eclipse 插件安装

1)检查本地是否已安装好node.js

$ which node
/usr/local/bin/node
$ node -v
v6.11.1
$ npm -v
3.10.10

2)安装插件 nodeclipse (安装需要连接VPN)

方式1(推荐,简单便捷)

Help —> Eclipse Marketplace —> 搜索"node.js" —> 找到"Nodeclipse xxx"  —>  安装,如下图:

方式2

Help —> Install New Software... —> Add...

Name:nodeclipse
Location:http://www.nodeclipse.org/updates

如下图:

OK确认后,选择 "nodeclipse",如下图:

安装完毕后,重启Eclipse

Ecplise —> Preferences... —> Nodeclipse,如下图:

6. 测试示例

新建Node.js Project 项目

hello-world-server.js

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

  

1)命令行运行

$ node hello-world-server.js 
Server running at http://127.0.0.1:1337/

2)Eclipse 运行

右键文件"hello-world-server.js" —> Run as  —>  Node.js Application

浏览器里,输入:http://127.0.0.1:1337

最简单的 Hello world 程序,运行成功!

最简单的测试代码

vim hello_mimvp.js

添加一行日志内容:

vim hello_mimvp.js

保存退出运行命令:

$ /usr/local/bin/node hello_mimvp.js 
hello mimvp.com

7. 事务处理示例

本示例意图向读者传递 Node.js 关于 HTTP 处理过程的详实概念。

在不考虑编程语言和环境的情况下,假设您已经知晓通常情况下 HTTP 请求是如何工作的,并且对 Node.js 的 EventEmitters 和 Streams 也已知晓。如果您对他们并不熟悉,通过 API 文档可以快速查阅。

1)创建服务

Node 的网络应用都需要先创建一个网络服务对象,这里我们通过 createServer 来实现。

var http = require('http');
var server = http.createServer(function(request, response) {
// handle your request
});

  

传入 createServer 的 function 在每次 HTTP 请求时都将被调用执行,因此这个 function 也被称为请求的处理者。

事实上,通过 createServer 返回的 Server 对象是一个 EventEmitter,我们需要做的仅仅是在这里保存这个 server 对象,并在之后对其添加监听器。

var http = require('http');
var server = http.createServer();
server.on('request', function(request, response) {
// handle your request
});

  

当 HTTP 请求这个服务时,node 调用请求处理者 function 并传入一些用于处理事务相关的对象:request 和 response。

我们可以非常方便的获得这两个对象。

var http = require('http');
var server = http.createServer();
server.on('request', function(request, response) {
// handle your request
}).listen(8080);

  

为了对实际的请求提供服务,在 server 对象上需要调用 listen 方法。

绝大多数情况你需要传入 listen 你想要服务监听的端口号,这里也存在很多其他的可选方案,参见 API reference。

Node.js 安装与开发的更多相关文章

  1. 【强烈推荐,超详细,实操零失误】node.js安装 + npm安装教程 + Vue开发环境搭建

    node.js安装 + npm安装教程 + Vue开发环境搭建 [强烈推荐,超详细,实操零失误] 原博客园地址:https://www.cnblogs.com/goldlong/p/8027997.h ...

  2. 前端开发学习笔记 - 1. Node.JS安装笔记

    Node.JS安装笔记 Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an ...

  3. 快速使用node.js进行web开发

    首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ...

  4. windows系统下安装 node.js (node.js安装及环境配置)

    node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node. ...

  5. AngularJS 1.x系列:Node.js安装及npm常用命令(1)

    1. Node.js安装 1.1 Node.js下载 Node.js官网:https://nodejs.org 当前下载版本(含npm):Latest LTS Version: v6.10.3 (in ...

  6. 【Visual Studio Code 】使用Visual Studio Code + Node.js搭建TypeScript开发环境

    1.准备工作 Node.js Node.js - Official Site Visual Studio Code Visual Studio Code - Official Site 安装Node. ...

  7. 使用Visual Studio Code + Node.js搭建TypeScript开发环境

    Visual Studio Code搭建Typescript开发环境 —— 相关文章: http://www.cnblogs.com/sunjie9606/p/5945540.html [注意:这里仅 ...

  8. node.js安装步骤

    首先这是node.js的官网:https://nodejs.org/en/ 截至2017年12月9日,node更新在8.9.3该版本,建议开发人员下载6.0以上版本,8以上不是很稳定!  如果有其他需 ...

  9. node.js安装和配置(windows系统)

    node.js安装和配置(windows系统) node javasript vscode  node是javascript的管理工具,所以开发javasript项目都要下载安装和配置node. 传送 ...

随机推荐

  1. 深入理解计算机系统 第十一章 网络编程 part1 第二遍

    客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型的.采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成.服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服 ...

  2. 【原创】大叔问题定位分享(35)spring中session失效时间

    spring项目中将sessionid对应的cookie过期时间设置很长,但是实际session还是在半个小时后失效,跟了一下代码,spring中session实现接口为 org.springfram ...

  3. 【原创】大数据基础之Mongodb(2)常用查询命令

    1 下载 https://www.mongodb.com/download-center/community 比如: https://fastdl.mongodb.org/linux/mongodb- ...

  4. C++:函数先声明后实现

    贼神奇的是,直到昨天在写flex规则的时候我才知道C++中的函数要么在使用之前先定义,要么将实现放在调用之前,不允许先调用后实现.之前一年多竟然不知道这件事,汗````,当然也是可能这件事本身和我思考 ...

  5. pyquery 库的使用

    from pyquery import PyQuery as pq # 文件勿命名为 pyquery.py,会发生冲突 # 字符串初始化 html = ''' <div id="pag ...

  6. LINUX中lrzsz软件的使用

    安装lrzsz 可以在Linux 和 windows直接相互传文件 Linux无论ssh跳过去也可以sz rz打开图像进行传输文件 [root@master2 ~]# yum install lrzs ...

  7. kubernetes资源清单之Deployment

    Deployment为Pod和ReplicaSets提供声明性更新 示例 --- apiVersion: apps/v1 kind: Deployment metadata:     name: de ...

  8. pandas中Series对象下的str所拥有的方法(df["xx"].str)

    在使用pandas的时候,经常要对DataFrame的某一列进行操作,一般都会使用df["xx"].str下的方法,但是都有哪些方法呢?我们下面来罗列并演示一下.既然是df[&qu ...

  9. centos7初始化bashshell脚本

    centos7初始化bashshell脚本 #!/bin/bash if [[ "$(whoami)" != "root" ]]; then echo &quo ...

  10. kubernetes之requests和limits

    说明 1.当集群中的计算资源不很充足, 如果集群中的pod负载突然加大, 就会使某个node的资源严重不足, 为了避免系统挂掉, 该node会选择清理某些pod来释放资源, 此时每个pod都可能成为牺 ...