zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

Nodejs安装npm测试 基本概念
2023-09-14 09:08:49 时间

前景提要

  JavaScript是解释性语言

  JavaScript 源代码放在Html头里 

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

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

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

  目前→<script></script>

再来理解两个概念

Window 对象

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

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

Document 对象

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

  Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

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

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

 

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

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作为前端工程师的主力语言,后台人员也基本有所了解。个人认为就是太通用,看看现在的移动开发,wp8、苹果、安卓等均有使用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在动态语言中性能较好。

 

二、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输出。