• 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模块指令如下:

  • 相关阅读:
    十分钟-Nginx 入门到上线
    83.面向忙碌开发者的 Android 知识点收录 (转)
    技术人,为什么需要构建知识图谱 (转载)
    C# 4.0四大新特性代码示例与解读
    .NET 项目代码风格要求
    .NET 推荐博客
    C# 五、谈扩展方法的理解
    ASP.NET 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
    ASP.NET 你必须知道的EF知识和经验
    Linq表达式、Lambda表达式你更喜欢哪个?
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/9932808.html
Copyright © 2020-2023  润新知