Node.js基础学习(第一幕)

1、Node.js概述:
    ①Node.js是使用C++编写的基于V8引擎的js运行时环境。——js解释器
    ②Node.js是一门后端编程语言,基于ECMAScript的,提供了很多前端js中没有的扩展对象。——后端编程语言
      前端js中的对象:
      1)ES原生对象:String、Number、Math、Date、Error、RegExp、Function、Array、Boolean、Object
      2)BOM&DOM
      3)自定义对象
      Node.js中的对象:
      1)ES原生对象
      2)Node.js核心对象
      3)大量的第三方对象
      4)自定义对象
    ③Node.js可以编写独立的web服务器端应用,无需借助于任何其他web服务器。——web服务器
      Node.js的意义:
      1)执行效率高
      2)使用一门语言统一了前后端开发——基于ES  ——》  全栈工程师
      Node.js的特点:
      1)单线程逻辑处理
      2)非阻塞
      3)异步I/O处理
      4)事件驱动编程
2、Node.js的两种运行模式:
    ①交互模式——用于测试
        在交互模式下,Node.js自带的模块无需引入,直接使用。
        执行方法:输入js语句,回车执行
    ②脚本模式——用于开发
        把要执行的js语句编写在一个文本文件中 ,一次性的提交给nodejs解释器执行。这个文本文件可以是.js结尾的,也可以是没有后缀的。    
        在脚本模式下,除了全局对象的成员外,所有其他模块和方法必须使用require()引入。
        执行方法:node  文件路径
    注意:Node.js中没有BOM和DOM对象!

3、Node.js的基础语法和ES6新特性
    ①数据类型
        1)原始类型
            原始类型的数据直接赋值就可以:string、number、boolean、null、undefined
        2)引用类型——对象类型
        包含ES原生对象、Node.js对象、自定义对象: 引用类型数据一般使用new关键字创建
    ②模板字符串
        ES6中提供的一种新的字符串形式。
        1)使用模板字符串定义的字符串,数据可以实现换行 // `内容:${变量}`
        2)可以在模板字符串内部进行变量之间的运算  //`内容:${变量+变量}`
    ③严格模式:是ES5新增的比普通模式更加严格的一种js运行模式。——全新的模式
      使用方法:2个范围
      1)是整个脚本文件的起始启用严格模式
          在脚本文件开头:"use strict";
      2)在单个函数中启用严格模式。
          function(){ "use strict"; ......}
     严格模式的规格:
      1)修改常量的值是非法的。——将静默失败升级为错误
      2)不允许对未声明的变量赋值
      3)匿名的this不再指向全局,是undefined
    ④变量的作用域
    全局作用域、局部作用局(函数作用局)、块级作用域
    块级作用域:只能在当前代码块中使用
    代码块:任何一个大括号{}就是一个“代码块”,if/for/while,每一个代码块就是一个独立的作用域
    在代码块中使用let声明块级作用域变量,出了块,就不能访问。
    ⑤逻辑结构
    (1)循环结构

      
        for....of...——ES6新特性(遍历数组的元素值)
      (2)选择结构
    ⑥函数
    匿名函数的自调

     
    箭头函数  =>
    箭头函数仅在匿名函数中使用;箭头函数多用于回调函数中 ()=>{}
    使用箭头函数实现闭包
     
    ⑦对象
        对象的分类:
        (1)ES原生对象
        (2)Node.js核心对象
        (3)大量的第三方对象
        (4)自定义的对象
        创建对象的四种方式:
        (1)对象直接量
        (2)构造函数的方式
        (3)原型继承方式
        (4)class方式——ES6新特性
        class,类,一组相似对象的属性和行为的抽象集合
        instance,实例化,是从属于某一个类的具体对象
        class Emp{
              constructor(ename){
                    this.ename=ename;
              }
              work(){}
        }
        使用class定义的对象,如何实现继承:
        class Programmer extends Emp{
              constructor(ename,salary,skills){
                    super(ename,salary);
                    this.skills=skills;
              }
              work(){
                    return super.work()+'He\'s skills is '+this.skills;
              }
        }

4、全局对象
    Node.js中的全局对象为Global
    在交互模式下,声明的全局变量和函数,都是global对象的成员——全局对象污染
    在脚本模式下,声明的全局变量和函数,不是global对象的成员——避免全局对象污染
    Global对象的成员属性和成员方法:
    ①console    向stdout(标准输出)和stderr(标准错误)中输入信息
    console.log() & console.info()         向stdout输出日志信息
    console.error() & console.warn()     向stderr输出错误信息
    console.trace()                向stderr输出栈轨迹信息
    console.dir()                 向stdout输出指定对象的字符串表示
    console.assert()              断言,为真的断言,错误信息不回输出,为假的断言,抛出错误对象,输出错误信息,并且终止脚本运行。错误信息可以自定义。
    console.time()                测试代码的执行时间
    console.timeEnd()

    注意:console对象的方法是异步的,书写顺序不一定和执行结果顺序一致

    ②process  进程
    process.arch    //获取CPU架构类型
    process.platform    //获取操作系统类型
    process.env    //获取操作系统的环境变量
    process.cwd()    //获取当前所在的工作目录
    process.execPath    //获取node解释器所在目录
    process.versions    //获取node版本信息
    process.uptime()    //获取node进程运行时间(s)
    process.memoryUsage() //获取node进程的内存使用情况
    process.pid    //获取当前进程id号
    process.kill(pid)    //向指定进程id号发送退出信号

    ③定时器
    setTimeout()        //一次性定时器
    setInterval()        //周期性定时器
    setImmediate()        //下次事件循环开始前立即执行的计时器
    process.nextTick()        //本次事件循环结束后立即执行的计时器
      

        
Node.js的模块系统:
    Node.js中使用"Module(模块)"来规划不同的功能对象。
    模块的分类:
    (1)核心模块——nodejs的内置模块
    (2)第三方模块——例如:mysql模块,自己下载
    (3)自定义模块
    每一个被加载的.js文件对应一个模块对象,包含相应的功能和函数。
    模块中声明的变量或函数的作用域是“模块作用域”,不是golbal的成员,默认只能在当前js文件(即当前模块)中使用。
    Node.js启动时运行的第一个模块,成为“主模块”。——mail module,也是自身模块。除主模块之外的其他模块,称为“子模块”。

  nodejs官网:nodejs.org

posted @ 2017-02-22 17:00  橙子2017  阅读(203)  评论(0编辑  收藏  举报