`
天梯梦
  • 浏览: 13631372 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

各平台安装Node.js

 
阅读更多

下载: http://nodejs.org/download/

 

Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node.js会假设在POSIX环 境下运行Linux 或 Mac OS X。如果是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境。在Node中,Http是首要的。Node为创建http服务器作 了优化,所以在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)

 

从名字说起

 

有关Node.js的技术报道越来越多,Node.js的写法也是五花八门,有写成NodeJS的,有写成Nodejs的,到底哪一种写法最标准呢,我们不妨遵循官方的说法。在Node.js的官方网站上, 一直将其项目称之为”Node“或者”Node.js“,没有发现其他的说法,”Node“用的最多,考虑到Node这个单词的意思和用途太广泛,容易让 开发人员误解,我们采用了第二种称呼——”Node.js“,js的后缀点出了Node项目的本意,其他的名称五花八门,没有确切的出处,我们不推荐使 用。

 

Node.js不是JS应用、而是JS运行平台

 

看到Node.js这个名字,初学者可能会误以为这是一个Javascript应用,事实上,Node.js采用C++语言编写而成,是一个 Javascript的运行环境。为什么采用C++语言呢?据Node.js创始人Ryan Dahl回忆,他最初希望采用Ruby来写Node.js,但是后来发现Ruby虚拟机的性能不能满足他的要求,后来他尝试采用V8引擎,所以选择了 C++语言。既然不是Javascript应用,为何叫.js呢?因为Node.js是一个Javascript的运行环境。提到Javascript, 大家首先想到的是日常使用的浏览器,现代浏览器包含了各种组件,包括渲染引擎、Javascript引擎等,其中Javascript引擎负责解释执行网 页中的Javascript代码。作为Web前端最重要的语言之一,Javascript一直是前端工程师的专利。不过,Node.js是一个后端的 Javascript运行环境(支持的系统包括*nux、Windows),这意味着你可以编写系统级或者服务器端的Javascript代码,交给 Node.js来解释执行,简单的命令类似于:

#node helloworld.js

 

Node.js采用了Google Chrome浏览器的V8引擎,性能很好,同时还提供了很多系统级的API,如文件操作、网络编程等。浏览器端的Javascript代码在运行时会受到 各种安全性的限制,对客户系统的操作有限。相比之下,Node.js则是一个全面的后台运行时,为Javascript提供了其他语言能够实现的许多功 能。

 

Node.js采用事件驱动、异步编程,为网络服务而设计

 

事件驱动这个词并不陌生,在某些传统语言的网络编程中,我们会用到回调函数,比如当socket资源达到某种状态时,注册的回调函数就会执行。 Node.js的设计思想中以事件驱动为核心,它提供的绝大多数API都是基于事件的、异步的风格。以Net模块为例,其中的net.Socket对象就 有以下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的开发人员需要根据自己的业 务逻辑注册相应的回调函数。这些回调函数都是异步执行的,这意味着虽然在代码结构中,这些函数看似是依次注册的,但是它们并不依赖于自身出现的顺序,而是 等待相应的事件触发。事件驱动、异步编程的设计(感兴趣的读者可以查阅笔者的另一篇文章《Node.js的异步编程风格》), 重要的优势在于,充分利用了系统资源,执行代码无须阻塞等待某种操作完成,有限的资源可以用于其他的任务。此类设计非常适合于后端的网络服务编 程,Node.js的目标也在于此。在服务器开发中,并发的请求处理是个大问题,阻塞式的函数会导致资源浪费和时间延迟。通过事件注册、异步函数,开发人 员可以提高资源的利用率,性能也会改善。

 

从Node.js提供的支持模块中,我们可以看到包括文件操作在内的许多函数都是异步执行的,这和传统语言存在区别,而且为了方便服务器开 发,Node.js的网络模块特别多,包括HTTP、DNS、NET、UDP、HTTPS、TLS等,开发人员可以在此基础上快速构建Web服务器。以简 单的helloworld.js为例:

 

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

 

上面的代码搭建了一个简单的http服务器(运行示例部署在http://helloworld.cnodejs.net/中,读者可以访问),在本地监听80端口,对于任意的http请求,服务器都返回一个头部状态码为200、Content-Type'值为text/plain'的”Hello World“文字响应。从这个小例子中,我们可以看出几点:

 

  • Node.js的网络编程比较便利,提供的模块(在这里是http)开放了容易上手的API接口,短短几行代码就可以构建服务器。
  • 体现了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(采用Javascript的匿名函数实现),当 有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。当然,这个例子相对简单,没有太多的事件注册,在以后的文章中读者会看到 更多的实际例子。

 

Node.js的特点

 

下面我们来说说Node.js的特点。事件驱动、异步编程的特点刚才已经详细说过了,这里不再重复。

Node.js的性能不错。按照创始人Ryan Dahl的说法,性能是Node.js考虑的重要因素,选择C++和V8而不是Ruby或者其他的虚拟机也是基于性能的目的。Node.js在设计上也是比较大胆,它以单进程、单线程模 式运行(很吃惊,对吧?这和Javascript的运行方式一致),事件驱动机制是Node.js通过内部单线程高效率地维护事件循环队列来实现的,没有 多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切,习惯了传统语言的网络服务开发人员可能对多线程 并发和协作非常熟悉,但是面对Node.js,我们需要接受和理解它的特点。由此我们是否可以推测出这样的设计会导致负载的压力集中在CPU(事件循环处 理?)而不是内存(还记得Java虚拟机抛出OutOfMemory异常的日子吗?),眼见为实,不如来看看淘宝共享数据平台团队对Node.js的性能测试

  • 物理机配置:RHEL 5.2、CPU 2.2GHz、内存4G
  • Node.js应用场景:MemCache代理,每次取100字节数据
  • 连接池大小:50
  • 并发用户数:100
  • 测试结果(socket模式):内存(30M)、QPS(16700)、CPU(95%)

从上面的结果,我们可以看到在这样的测试场景下,qps能够达到16700次,内存仅占用30M(其中V8堆占用22M),CPU则达到95%,可 能成为瓶颈。此外,还有不少实践者对Node.js做了性能分析,总的来说,它的性能让人信服,也是受欢迎的重要原因。既然Node.js采用单进程、单 线程模式,那么在如今多核硬件流行的环境中,单核性能出色的Node.js如何利用多核CPU呢?创始人Ryan Dahl建议,运行多个Node.js进程,利用某些通信机制来协调各项任务。目前,已经有不少第三方的Node.js多进程支持模块发布,专栏后面的文 章会详细讲述Node.js在多核CPU下的编程。

 

Node.js的另一个特点是它支持的编程语言是Javascript。关于动态语言和静态语言的优缺点比较在这里不再展开讨论。只说三点:

    1. Javascript作为前端工程师的主力语言,在技术社区中有相当的号召力。而且,随着Web技术的不断发展,特别是前端的重要性增 加,不少前端工程师开始试水”后台应用“,在许多采用Node.js的企业中,工程师都表示因为习惯了Javascript,所以选择Node.js。
    2. Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程,从helloworld例子中我们可以看到回调函数采用了匿名函数的形式来实现,很方便。闭包的作用则更大,看下面的代码示例:
      var hostRequest = http.request(requestOptions,function(response) {
          var responseHTML ='';
          response.on('data', function (chunk) {
              responseHTML = responseHTML + chunk;
          });
          response.on('end',function(){
              console.log(responseHTML);
              // do something useful
         });
      });
       

在上面的代码中,我们需要在end事件中处理responseHTML变量,由于Javascript的闭包特性,我们可以在两个回调函数之外定义responseHTML变量,然后在data事件对应的回调函数中不断修改其值,并最终在end事件中访问处理。

  1. Javascript在动态语言中性能较好,有开发人员对Javacript、Python、Ruby等动态语言做了性能分析,发现Javascript的性能要好于其他语言,再加上V8引擎也是同类的佼佼者,所以Node.js的性能也受益其中。

来源:http://www.infoq.com/cn/articles/what-is-nodejs

 

Installing Node.js via package manager

The packages on this page are maintained and supported by their respective packagers, not the node.js core team. Please report any issues you encounter to the package maintainer. If it turns out your issue is a bug in node.js itself, the maintainer will report the issue upstream.

 

Gentoo

Node.js is available in the portage tree.

# emerge nodejs

 

Debian, LMDE

Node.js is available in official repo for Debian Sid(unstable).

For Debian Wheezy, your best bet is to compile node by yourself:

sudo apt-get install python g++ make checkinstall
mkdir ~/src && cd $_
wget -N http://nodejs.org/dist/node-latest.tar.gz
tar xzvf node-latest.tar.gz && cd node-v*
./configure
checkinstall #(remove the "v" in front of the version number in the dialog)
sudo dpkg -i node_*

 

Uninstall:

sudo dpkg -r node

 

In case you get a permission denied on the node executable, an alternative path might be:

umask 0022
./configure
make
checkinstall -D --umask 0022 --reset-uids --install=no
dpkg -i node_*.deb

 

Ubuntu, Mint

Example install:

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

 

It installs current stable Node on the current stable Ubuntu. Quantal (12.10) users may need to install the software-properties-common package for the add-apt-repository command to work:

sudo apt-get install software-properties-common

 

As of Node.js v0.10.0, the nodejs package from Chris Lea's repo includes both npm and nodejs-dev.

There is a naming conflict with the node package (Amateur Packet Radio Node Program), and the nodejs binary has been renamed from node to nodejs. You'll need to symlink /usr/bin/node to /usr/bin/nodejs or you could uninstall the Amateur Packet Radio Node Program to avoid that conflict.

 

openSUSE & SLE

Node.js stable repos list. Also node.js is available in openSUSE:Factory repository.

Available RPM packages for: openSUSE 11.4, 12.1, Factory and Tumbleweed; SLE 11 (with SP1 and SP2 variations).

 

Example install on openSUSE 12.1:

sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/nodejs/openSUSE_12.1/ NodeJSBuildService 
sudo zypper in nodejs nodejs-devel

 

Fedora

Node.js and npm are available in Fedora 18 and later. Just use your favorite graphical package manager or run this on a terminal to install both npm and node:

sudo yum install npm

 

RHEL/CentOS/Scientific Linux 6

Node.js and npm are available from the Fedora Extra Packages for Enterprise Linux (EPEL) repository. If you haven't already done so, first enable EPEL and then run the following command to install node and npm:

su -c 'yum install npm'

 

Arch Linux

Node.js is available in the Community Repository.

pacman -S nodejs

 

FreeBSD and OpenBSD

Node.js is available through the ports system.

/usr/ports/www/node

 

Development versions are also available using ports

cd /usr/ports/www/node-devel/ && make install clean

 

or packages on FreeBSD

pkg_add -r node-devel

 

OSX

Using a package ,

Simply download Macintosh Installer.

 

Using homebrew:

brew install node

 

Using macports:

port install nodejs  

 

Windows

Using a package,

Simply download Windows Installer.

 

Using chocolatey to install Node:

cinst nodejs 

 

or for full install with NPM:

cinst nodejs.install

 

 来源:https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager#ubuntu-mint

 

 

 

 

 

 

分享到:
评论

相关推荐

    如何安装node.js安装.zip

    如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js安装.zip如何安装node.js...

    如何安装node.js教程.docx

    node.js安装如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js...

    如何安装node.js教程

    node.js安装如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js教程如何安装node.js...

    Node.js(node-v16.15.1-win-x64.zip)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    Node.js(node-v16.15.1-win-x86.zip)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    Node.js英文书籍2015出版共9本(一次下载)

    Full Stack Javascript - Learn Backbone.js, Node.js and MongoDB (APress 2015).epub Learning Node.js for Mobile Application Development (Packt 2015).pdf Microsoft Press Node.js for .NET Developers (2015...

    Node.js(node-v16.15.1.pkg)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    Node.js(node-v16.15.1.tar.gz 源码)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    【JavaScript源代码】node.js安装及HbuilderX配置详解.docx

    node.js安装及HbuilderX配置详解  npm安装教程:  官网:https://nodejs.org/en/  webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包。 vue-cli:...

    Node.js安装及环境配置指南.pdf

    Node.js是一个开源的、跨平台的JavaScript运行环境,它使得JavaScript可以在服务器端运行。Node.js安装及环境配置指南 一、Node.js的安装 安装Node.js之前,首先需要确保你的电脑已经安装了合适的编译器和开发环境...

    Node.js(node-v16.15.1-linux-arm64.tar.xz)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    node.js(v16.16.0) 安装包

    node.js(v16.16.0) 安装包

    Node.js 开发指南.pdf

    2.2.1 Microsoft Windows系统上安装Node.js 14 2.2.2 Linux发行版上安装Node.js 16 2.2.3 Mac OS X上安装Node.js 16 2.3 编译源代码 17 2.3.1 在POSIX系统中编译 17 2.3.2 在Windows系统中编译 18 2.4 ...

    Node.js(node-v16.15.1-aix-ppc64.tar.gz)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    Node.js高级编程.pdf

    可是,它有自己的学习曲线,这本较为深入的指南性图书首先介绍了Node.js平台的安装,然后重点关注:创建和加载模块;使用缓冲区对二进制数据进行处理、编码和编码;用事件发射器模式简化事件绑定等。《Node.js高级...

    Node.js(node-v16.15.1-darwin-arm64.tar.gz)

    Node.js 是一个用于可扩展服务器端和网络应用程序的软件平台。Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度...

    Beginning Node.js

    From this book you will learn how to write maintainable server-side JavaScript using Node.js, how to test your code and deploy it on the internet. Table of Contents Chapter 1: Setting up for Node.js...

    Node.js-TensorFlowNode.js为Node.js用户提供惯用的JavaScript语言绑定和高层API

    TensorFlow Node.js 为Node.js用户提供惯用的JavaScript语言绑定和高层API

    Node.js安装及环境配置.pdf

    Node.js 安装及环境配置 一、安装环境 1. 本机系统:Windows 10 Pro 2. Node.js:LTS Version: 12.16.2 64 位(includes npm 6.14.4) 二、安装步骤 1. 下载Node.js:https://nodejs.org/en/download/ 2. 选择安装目录...

Global site tag (gtag.js) - Google Analytics