Nodejs基本概念及Nodejs、npm安装测试

前景提要javascript

  JavaScript是解释性语言前端

  JavaScript 源代码放在Html头里 java

目前使用建议<script></script>node

  从前→<script language=”javascript”></script>linux

       →<script type=”text/javascript”></script>express

  目前→<script></script>npm

再来理解两个概念

Window 对象

  Window 对象表示浏览器中打开的窗口。编程

    若是文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档建立一个 window 对象,并为每一个框架建立一个额外的 window 对象。windows

Document 对象

  每一个载入浏览器的 HTML 文档都会成为 Document 对象。后端

  Document 对象使咱们能够从脚本中对 HTML 页面中的全部元素进行访问。

  提示:Document 对象是 Window 对象的一部分,可经过 window.document 属性对其进行访问。

  其余更多请访问w3c:http://www.w3school.com.cn/js/index.asp

 

1、概念引用(均摘自其余学习资料,杂交,欢迎转载)

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

  Node.js 是一个基于Chrome JavaScript 运行时创建的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 很是适合 运行在分布式设备 的 数据密集型 的实时应用

  Node.js采用C++语言编写而成,是一个Javascript的运行环境。为何采用C++语言呢?据Node.js创始人Ryan Dahl回忆,他最初但愿采用Ruby来写Node.js,可是后来发现Ruby虚拟机的性能不能知足他的要求,后来他尝试采用V8引擎,因此选择了C++语言。

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

   V8引擎执行Javascript的速度很是快,性能很是好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好

  更多简介请自行:google

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

  Node.js的设计思想中以事件驱动为核心,它提供的绝大多数API都是基于事件的、异步的风格。以Net模块为例,其中的net.Socket对象就有如下事件:connect、data、end、timeout、drain、error、close等,使用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服务器,在本地监听80端口,对于任意的http请求,服务器都返回一个头部状态码为200、Content-Type'值为text/plain'的”Hello World“文字响应。从这个小例子中,咱们能够看出几点:

  • Node.js的网络编程比较便利,提供的模块(在这里是http)开放了容易上手的API接口,短短几行代码就能够构建服务器。
  • 体现了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(采用Javascript的匿名函数实现),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。

1.3 Node.js的特色

事件驱动、异步编程.(1.2 已说明)

RESTful API

单线程

  Node.js能够在不新增额外线程的状况下,依然能够对任务进行并行处理 —— Node.js是单线程的。它经过事件轮询(event loop)来实现并行操做,对此,咱们应该要充分利用这一点 —— 尽量的避免阻塞操做,取而代之,多使用非阻塞操做。

非阻塞IO

Node.js的性能不错

  按照创始人Ryan Dahl的说法,性能是Node.js考虑的重要因素,选择C++和V8而不是Ruby或者其余的虚拟机也是基于性能的目的。Node.js在设计上也是比较大胆,它以单进程、单线程模式运行(这和Javascript的运行方式一致),事件驱动机制是Node.js经过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切,习惯了传统语言的网络服务开发人员可能对多线程并发和协做很是熟悉,可是面对Node.js,咱们须要接受和理解它的特色。

  还有很多实践者对Node.js作了性能分析,总的来讲,它的性能让人信服,也是受欢迎的重要缘由。既然Node.js采用单进程、单线程模式,那么在现在多核硬件流行的环境中,单核性能出色的Node.js如何利用多核CPU呢?创始人Ryan Dahl建议,运行多个Node.js进程,利用某些通讯机制来协调各项任务。目前,已经有很多第三方的Node.js多进程支持模块发布,

编程语言是Javascript

  Node.js的另外一个特色是它支持的编程语言是Javascript关于动态语言和静态语言的优缺点比较(本身google去),说几个我的发现说辞比较好的:

  1. Javascript做为前端工程师的主力语言,后台人员也基本有所了解。我的认为就是太通用,看看如今的移动开发,wp八、苹果、安卓等均有使用js开发。Wp8建立的项目里面就有,刚刚在VS2013中发现,其余平台可使用,sencha touch、JQuery mobile等。Unity 3D脚本语言就有JS。虽然有所差别,可是根本是JS。
  2. Javascript的匿名函数和闭包特性很是适合事件驱动、异步编程,从helloworld例子中咱们能够看到回调函数采用了匿名函数的形式来实现,很方便。闭包的做用则更大,看下面的代码示例:
     1 var hostRequest = http.request(requestOptions,function(response) {
     2     var responseHTML ='';
     3     response.on('data', function (chunk) {
     4         responseHTML = responseHTML + chunk;
     5     });
     6 
     7     response.on('end',function(){
     8         console.log(responseHTML);
     9         // do something useful
    10    });
    11 });
    View Code

      在上面的代码中,咱们须要在end事件中处理responseHTML变量,因为Javascript的闭包特性,咱们能够在两个回调函数以外定义responseHTML变量,而后在data事件对应的回调函数中不断修改其值,并最终在end事件中访问处理。

  3.  Javascript在动态语言中性能较好。

 

2、Node.js&NPM的安装与配置

  Node.js 是一个基于Chrome JavaScript 运行时创建的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 很是适合 运行在分布式设备 的 数据密集型 的实时应用

  NPM,全称Node Package Manager。NPM的全称是,是一个NodeJS包管理和分发工具,现已成为了官方的发布Node模块(包)的标准内置。

2.1 Windows平台下的Node.js安装

Windows下的NodeJS安装是比较方便的(v0.6.0版本以后,支持windows native)

  1. 登录官网(http://nodejs.org/),点击“INSTALL”按钮,而后“NEXT”就能够了。

    (Windows的安装msi文件在过程当中会直接添加path的用户变量,变量值是C:\Users\Administrator\AppData\Roaming\npm)

    固然也能够选择:download:https://nodejs.org/en/;选择本身系统及版本

  2.  Windows下查看校验安装是否成功,cmd(命令行)下:

    node –v

    接下来你会看到版本号:v0.10.28

2.2 *unx下安装(主要linux)

  待更新

2.2 npm 安装

  npm是nodejs插件的管理工具。

  因为新版的NodeJS已经集成了npm,因此以前npm也一并安装好了,不再用像之前那么苦逼了。

  Cmd下:

    npm –v

    接下来你会看到版本号:1.4.9

 

  Npm基本命令说明(更多:https://www.npmjs.org/doc/) 
    npm help:查询可用的命令
    npm help command :如:npm help list ,查询具体指令的用法。
    npm list: 列出已经安装的插件
    npm show express:列出express插件信息
    npm install(npm install -d):安装插件
    npm update:升级插件
    npm update express:升级指定插件
    npm uninstall express:卸载插件

  这样,NodeJS搭建已经完成了,能够直接在cmd命令行下:

    →node (进入node开发模式下【输入以后有一个>】),

    →console.log('hello world')         //能够看到有Hello world输出。

相关文章
相关标签/搜索