zoukankan      html  css  js  c++  java
  • Node.js 入门篇

    Node.js 使用C++开发的。 Node.js是一个事件驱动服务端JavaScript环境,只要能够安装相应的模块包,就可以开发出需要的服务端程序,如HTTP服务端程序、Socket程序等。

    Node 有两大特点是:

    1. 基于事件驱动

    2.无阻塞

    所以node非常适合处理并发请求

    我们大家都知道node的本质是javaScript,所以基于事件驱动并不难理解,事件驱动简单的讲就是用户点击什么按钮(即产生什么事件)然后电脑执行操作(调用函数)

    而我们知道javascript是单线程,那是怎么做到无阻塞的?  答:node通过大量的回调函数来实现无阻塞

    编写一个最简单的HTTP服务器程序,客户端通过浏览器请求该服务器,并在浏览器页面中显示Hell World。服务器的app.js文件代码如下:

    var http = require('http');
    http.createServer(
        function (req, res)
        {
            //发送HTTP头部,HTTP状态码:200:OK,内容类型:text/plain
            res.writeHead(200, { 'Content-Type': 'text/plain' });
            //发送响应数据“Hello World”
            res.end('HelloWorld
    ');
        }).listen(3000, '127.0.0.1');
    console.log('Server running at http://127.0.0.1:3000/'); 

      运行结果如下:

     

     Node.js应用是由哪几部分组成的:

    1.引入required模块:我们可以使用require指令来载入Node.js模块

    2.创建服务器:服务器可以监听客户端的请求,类似Apche、Nginx等HTTP服务器

    3.接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送HTTP请求,服务器接收请求后返回响应数据。

    我们使用require指令来载入http模块,并将实例化的HTTP赋值给变量http,实例如下:

    var http=require("http");
    

    接下来我们使用http.createServer()方法创建服务器,并使用listen方法绑定3000端口。函数通过request,response参数来接收和响应数据。

     NPM使用介绍:

    NPM是随NodeJs一起安装的包管理工具,能解决NodeJs代码部署的很多问题,常见的使用场景有以下几种:

    允许用户从NPM服务器下载别人编写的命令包到本地使用。

    允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用

    允许用户将字节编写的包或命令行程序上床到NPM服务器供被人使用

    使用npm命令安装模块

    安装好之后,express包就放在了工程目录下的node_modules目录中,因此在代码只需要通过require('express')的方式就好,无需制定第三方包路径

    var express=require('express');
    

      全局安装与本地安装

    npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别知识有没有-g 而已,比如

    npm install express   #本地安装
    npm install express -g  #全局安装
    

      如果出现以下错误:

    npm err:Error:connect ECONNREFUSED 127.0.0.1:8087
    

      解决办法为:

    npm config set proxy null

     本地安装

    1.将安装包放在 ./node_modules下(运行npm命令时所作的目录),如果没有node_modules目录,会在当前执行npm命令的目录下生产node_modules目录。

    2.可以通过require()来引入本地安装的包

    全局安装

    1.将安装在/usr/local下或者你node的安装目录

    2.可以直接在命令行里使用

    如果你希望具备两者功能,则需要在两个地方安装它或使用npm link

     Node.js回调函数

    Node.js异步编程的直接体现就是回调。

    异步编程依托回调函数来实现,但不能说使用了回调后程序就异步化了。

    回调函数在完成任务后就会被调用,Node使用了大量的回调函数,Node所有API都支持回调函数。

    例如我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件I/O操作。这就大大提高了Node.js的性能,可以处理大量的并发请求。

    回调函数一般作为函数的最后一个参数出现:

    阻塞代码实例:

    创建一个文件input.txt,内容如下:

    who are you ?

    创建test.js 文件,代码如下:

    var fs=require("fs");
    var data=fs.readFileSync('input.txt');
    console.log(data.toString());
    console.log("程序执行结束!");
    

      运行结果如下:

    非阻塞代码实例:

    创建一个test.js文件,代码如下:

    var fs=require("fs");
    fs.readFile('input.txt',function(err,data){
    	if(err)return console.error(err);
    	console.log(data.toString());
    })
    ;
    console.log("程序执行完毕!");
    

      运行结果如下:

     Node.js是单进程单线程应用程序,但是因为V8引擎提供的异步执行回调函数,通过这些接口可以处理大量的并发,所以性能非常高。

    Node.js几乎每一个API都是支持回调函数的。

    Node.js基本上所有的事件机制都是设计模式中观察者模式实现。

    Node.js单线程类似进入一个while(true)的时间模式,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。

    使用socket.io

    Node.js提供了高效的服务器运行环境,但是由于客户端(PC浏览器、移动设备浏览器等)对HTML5的支持不一样,为了兼容所有的浏览器、提供实时的用户体验,Node.js推出了Socket.io技术,官方网站http://socket.io提供了Socket.IO技术的基本介绍

      具体地说,Socket.IO是一个WebSocket库,包括客户端的JavaScript库和服务器端的Node.js模块,它可以构建在不同浏览器和移动设备上使用的实时通信。Socket.IO具有Node.js事件触发机制,能够实现客户端与服务器双向通信。

       Socket.IO服务器端开发

    想要开发Socket.IO服务器端程序,需要安装Node.js模块的Socket.IO模块包。在Node.js模块包的管理使用npm指令。安装Socket.IO模块指令如下:

  • 相关阅读:
    PAIRING WORKFLOW MANAGER 1.0 WITH SHAREPOINT 2013
    Education resources from Microsoft
    upgrade to sql server 2012
    ULSViewer sharepoint 2013 log viewer
    Top 10 Most Valuable Microsoft SharePoint 2010 Books
    讨论 Setsockopt选项
    使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
    Nagle's algorithm
    Nagle算法 TCP_NODELAY和TCP_CORK
    Design issues Sending small data segments over TCP with Winsock
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/9932808.html
Copyright © 2011-2022 走看看