1.windows上的node.js怎么用
node.js 是有windows实现版本的,请到它的官网node.org下载。有两种 exe和msi都可以使用。下载后安装和正常软件安装一样。使用方法:
在开始菜单打开,选择 Node.js command prompt ,它自动帮你加入了环境变量,直接可以使用 node 和npm命令。
node命令: node (空格)js程序,请用绝对地址。其他参数可以用node -h查看,有详细的解释
npm命令:npm是node安装第三方模块的命令,使用非常简单npm install 模块名即可。其他参数可以可以使用npm -h 查看
这里npm的模块都必须在npm.org上注册使用。
另外在提供一个中文社区 cnodejs.org不错的中文社区。也提供中文文档。
还有一点关于平台选择,其实并不是linux好,node的核心事件驱动机制在linux使用的是模拟的libev+libeio库模拟的,而windows则本身就提供了系统调用,性能据测试过的人数据是windows占大优势的。当然这并不影响你在windows和linux使用node.js,他是完全跨平台的!
顺带提供一个新手快速入门:
1、新建一个文件,命名为 first.js
2、文件里面写入:
var mander模块为了更高效的编写命令行工具,我们使用TJ大神的commander模块。$ npm install --save commanderhelper文件内容修改为:#!/usr/bin/env node var program = require('commander'); program .version('1.0.0') .parse(process.argv);执行helper -h和helper -V命令:$ helper -h Usage: helper [options] Options: -h, --help output usage information -V, --version output the version number $ helper -V1.0.0commander模块提供-h, --help和-V, --version两个内置命令。
创建命令创建一个helper hello 的命令,当用户输入helper hello ipluser时,终端显示hello ipluser。修改helper文件内容:#!/usr/bin/env node var program = require('commander'); program .version('1.0.0') .usage(' [options]') .command('hello', 'hello the author') // 添加hello命令 .parse(process.argv);在bin目录下新建helper-hello文件:#!/usr/bin/env node console.log('hello author');执行helper hello命令:$ helper hello ipluserhello author解析输入信息我们希望author是由用户输入的,终端应该显示为hello ipluser。
修改helper-hello文件内容,解析用户输入信息:#!/usr/bin/env node var program = require('commander'); program.parse(process.argv); const author = program.args[0]; console.log('hello', author);再执行helper hello ipluser命令:$ helper hello ipluserhello ipluser哦耶,终于达到完成了,但作为程序员,这还远远不够。当用户没有输入author时,我们希望终端能提醒用户输入信息。
提示信息在helper-hello文件中添加提示信息:#!/usr/bin/env node var program = require('commander'); program.usage(''); // 用户输入`helper hello -h`或`helper hello --helper`时,显示命令使用例子program.on('--help', function() { console.log(' Examples:'); console.log(' $ helper hello ipluser'); console.log();}); program.parse(process.argv);(program.args.length Options: -h, --help output usage information Examples: $ helper hello ipluser $ helper hello -h Usage: helper-hello Options: -h, --help output usage information Examples: $ helper hello ipluser。
5.什么软件是用node.js做的
Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。
当前的服务器程序有什么问题?我们来做个数学题。在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。
在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。
当然,这会增加服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技术问题,即 用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。
鉴于上述所有原因,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。Node 解决这个问题的方法是:更改连接到服务器的方式。
每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。
Node 还宣称,运行它的服务器能支持数万个并发连接。现在您有了一个能处理数万个并发连接的程序,那么您能通过 Node 实际构建什么呢?如果您有一个 Web 应用程序需要处理这么多连接,那将是一件很 “恐怖” 的事!那是一种 “如果您有这个问题,那么它根本不是问题” 的问题。
6.为什么要用nodejs
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。作者:FengqiAsia链接:/question/19653241/answer/15993549来源:知乎要讲清楚这个问题,先讲讲整个Web应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈。
瓶颈在于服务器能够处理的并发连接的最大数量。Node.js解决这个问题的方法是:更改连接到服务器的方式。
每个连接发射一个在Node.js引擎的进程中运行的事件,而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)。Node.js不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。
Node.js还宣称,运行它的服务器能支持数万个并发连接。Node本身运行V8 JavaScript。
V8 JavaScript引擎是Google用于其Chrome浏览器的底层JavaScript引擎。Google使用V8创建了一个用C++编写的超快解释器,该解释器拥有另一个独特特征:您可以下载该引擎并将其嵌入任何应用程序。
V8 JavaScript引擎并不仅限于在一个浏览器中运行。因此,Node.js实际上会使用Google编写的V8 JavaScript引擎,并将其重建为可在服务器上使用。
Node.js优点:1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。
而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。2、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。
3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
Node.js缺点:1、可靠性低2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。
不过以上缺点可以可以通过代码的健壮性来弥补。目前Node.js的网络服务器有以下几种支持多进程的方式:#1 开启多个进程,每个进程绑定不同的端口,用反向代理服务器如 Nginx 做负载均衡,好处是我们可以借助强大的 Nginx 做一些过滤检查之类的操作,同时能够实现比较好的均衡策略,但坏处也是显而易见——我们引入了一个间接层。
#2 多进程绑定在同一个端口侦听。在Node.js中,提供了进程间发送“文件句柄” 的功能,这个功能实在是太有用了(貌似是yahoo 的工程师提交的一个patch) ,不明真相的群众可以看这里: Unix socket magic#3 一个进程负责监听、接收连接,然后把接收到的连接平均发送到子进程中去处理。
在Node.js v0.5.10+ 中,内置了cluster 库,官方宣称直接支持多进程运行方式。Node.js 官方为了让API 接口傻瓜化,用了一些比较tricky的方法,代码也比较绕。
这种多进程的方式,不可避免的要牵涉到进程通信、进程管理之类的东西。此外,有两个Node.js的module:multi-node 和 cluster ,采用的策略和以上介绍的类似,但使用这些module往往有一些缺点:#1 更新不及时#2 复杂庞大,往往绑定了很多其他的功能,用户往往被绑架#3 遇到问题难以解决Node表现出众的典型示例包括:1、RESTful API提供RESTful API的Web服务接收几个参数,解析它们,组合一个响应,并返回一个响应(通常是较少的文本)给用户。
这是适合Node的理想情况,因为您可以构建它来处理数万条连接。它仍然不需要大量逻辑;它本质上只是从某个数据库中查找一些值并将它们组成一个响应。
由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。2、Twitter队列想像一下像Twitter这样的公司,它必须接收tweets并将其写入数据库。
实际上,每秒几乎有数千条tweet达到,数据库不可能及时处理高峰时段所需的写入数量。Node成为这个问题的解决方案的重要一环。
如您所见,Node能处理数万条入站tweet。它能快速而又轻松地将它们写入一个内存排队机制(例如memcached),另一个单独进程可以从那里将它们写入数据库。
Node在这里的角色是迅速收集tweet,并将这个信息传递给另一个负责写入的进程。想象一下另一种设计(常规PHP服务器会自己尝试处理对数据库本身的写入):每个tweet都会在写入数据库时导致一个短暂的延迟,因为数据库调用正在阻塞通道。
由于数据库延迟,一台这样设计的机器每秒可能只能处理2000条入站tweet。每秒处理100万条tweet则需要500个服务器。
相反,Node能处理每个连接而不会阻塞通道,从而能够捕获尽可能多的tweets。一个能处理50000条tweet的Node机器仅需20台服务器即可。
3、电子游戏统计数据如果您在线玩过《使命召唤》这款游戏,当您查看游戏统计数据时,就会立即意识到一个问题:要生成那种级别的统计数据,必须跟踪海量信息。这样,如果有数百万玩家同时在线玩游戏,而且他们处于游戏中的不同位置,那么很快就会生成海量信息。
Node是这种场景的一种很好的解决方案,因为它能采集游戏生成的数据,对数据进行最少的合并,然。
7.node.js是什么
Node.js是一个可以快速构建网络服务及应用的平台[2]。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。[2]
V8引擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。[3]
例如,在服务器环境中,处理二进制数据通常是必不可少的,但Javascript对此支持不足,因此,V8.Node增加了Buffer类,方便并且高效地处理二进制数据。因此,Node不仅仅简单地使用了V8,还对其进行了优化,使其在各环境下更加给力
转载请注明出处育才学习网 » node.js怎么用