• NodeJs


    一  什么是NodeJs

    Node.js就是运行在服务端的JavaScript。Node.js是一个基于Chrome JavaScript运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行JavaScript的速度非常快,性能非常好。

    二    创建node.js应用

    第一步:引入required模块

    第二步:创建服务器

    三   NodeJs回调函数

    Node.js异步编程的直接体现就是回调,异步编程依托于回调来实现,但不能说使用了回调程序就异步化了。回调函数在完成任务后就会被调用,Node使用了大量的回调函数,Node所有API都支持回调函数。

    四   事件循环

    Node.js是单进程单线程应用程序,但是通过事件和回调支持并发,性能非常高。

    Node.js的每一个API都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。

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

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

    五   Node.js  EventEmitter

    EventEmitter提供了多个属性,如on和emit,on函数用于绑定事件函数,emit属性用于触发一个事件。

    比如:

    addListener(event,listener)[为指定事件添加一个监听器到监听器数组的尾部]

    on(event,listener)[为指定事件注册一个监听器,接受一个字符串event和一个回调函数]

    once(event,listener)[为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器]

    removeListener(event,listener)[移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器]

    removeAllListener([event])[移除所有事件的所有监听器,如果指定事件,则移除指定事件的所有监听器]

    setMaxListeners(n)[默认情况下,EventEmitters如果你添加的监听器超过10个就会输出警告信息。setMaxListeners函数用于提高监听器的默认限制的数量]

    listeners(event)[返回指定事件的监听器数组]

    emit(event,[arg1],[arg2],[...])[按参数的顺序执行每个监听器,如果事件有注册监听返回true,否则返回false]

    error事件

    EventEmitter定义了一个特殊的事件error,它包含了错误的语义,我们在遇到异常的时候通常会触发error事件。当error被触发时,EventEmitter规定如果没有响应的监听器,Node.js会把它当做异常,退出程序并输出错误信息。我们一般要为触发error事件的对象设置监听器,避免遇到错误后整个程序崩溃。

    六   Node.js模块系统

    模块是Node.js应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个Node.js文件就是一个模块,这个文件可能是JavaScript代码、JSON或者编译过的C/C++扩展。

    Node.js提供了exports和require两个对象,其中exports是模块公开的接口,require用于从外部获取一个模块的接口,即所获取模块的exports对象。

    七   Node.js函数

    在JavaScript中,一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。

    比如:

    function say(word){

         console.log(word);

    }

    function execute(someFunction,value){

         someFunction(value);

    }

    execute(say,"hello");

    在以上代码中,我们把say函数作为execute函数的第一个变量进行了传递。这里返回的不是say的返回值,而是say本身!这样一来,say就变成了execute中本地变量someFunction,execute可以调用someFunction来使用函数。当然,因为say有一个变量,execute在调用someFunction时可以传递这样一个变量。

    匿名函数

    我们可以把一个函数作为变量传递,但是我们不一定要绕这个“先定义,再传递”的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数。

    function execute(someFunction,value){

         someFunction(value);

    }

    execute(function(word){

       console.log(word)

       },"Hello");

    我们在execute接受第一个参数的地方直接定义了我们准备传递给execute的函数。用这种方式,我们甚至不用给这个函数起名字,这也是为什么它被叫做匿名函数。

  • 相关阅读:
    error: conflicting type qualifiers for 'xxxxx'
    每天进步一点点——负载均衡之DNS域名解析
    hdu 1348 Wall(凸包模板题)
    offsetTop和scrollTop的差别
    OnContextMenu事件
    写给即将面临毕业的程序猿们
    hibernate uniqueResult方法
    UpdatePanel的用法
    Spring MVC 3 深入总结
    优麒麟(UbuntuKylin)不是国产Linux操作系统
  • 原文地址:https://www.cnblogs.com/watchmen/p/5417688.html
Copyright © 2020-2023  润新知