Node.js概述:
    Node.js:
    1.Node.js是C++编写的基于V8引擎的JS运行时环境。
    2.Node.js是一门基于ECMAScript开发的服务器端语言,提供了(全端JS没有的)很多扩展对象。
    前端js:
        1.ES原生对象:String、Number、Boolean、Math、Date、Error、Function、Object、Array、
        2.BOM&DOM
        3.自定义对象
    Node.js:
        1.ES原生对象
        2.Node.js内置对象
        3.大量的第三方对象
        4.自定义对象
    3.Node.js可以编写独立的服务器应用,无需借助于其他web服务器。
    Node.js的意义:
        1.执行效率比PHP/JSP/JAVA要快
        2.用一种语言统一了前后端开发。
    全栈工程师
    特点:
        1.单线程逻辑处理
        2.非阻塞
        3.异步I/O处理
        4.事件驱动编程
2.Node.js的两种运行方式:
    1.交互模式——用于测试
    读取用户输入、执行运算、输出执行结果、继续下一循环
    执行方法:输入一行js语句,回车执行
    2.脚本模式——用于开发
    把要执行的所有js语句编写在一个独立的js文件中,一次性的提交给nodejs处理。此文件可以没有后缀
    执行方法:node d:\xx\xx.js
3.Node.js的基础语法及ES6新特性
    1.数据类型:
    (1)原始类型
        string、number、
        原始类型数据直接赋值即可
    (2)引用类型
        ES原生对象、Node.js对象、自定义对象
        引用类型通常需要使用new关键字创建
    2.模板字符串
    ES6中提供的一种新的字符串形式
    (1)使用模板方式定义字符串,数据可以实现换行
    (2)可以使用${}拼接变量,并且可以执行运算
    3.严格模式
    ES5中新增一种比普通模式更为严格的js运行模式。
    使用方法:
        (1)在整个脚本文件中启用严格模式
        在脚本文件的开头:"use strict";
        用于新项目
        (2)在单个函数内启用严格模式
        function info(){
            "use strict";
            .........
        }
        用于老项目维护
    规则:
    (1)修改常量的值是非法的——将静默失败升级为错误
    (2)不允许对未声明的变量赋值
    (3)匿名函数的this不再指向全局
    4.变量的作用域
    全局作用域、局部作用域、块级作用域(ES6中专有)
    块级作用域:只在当前代码块中使用
    代码块:任何一个{}都是一个代码块,if/
    代码块中使用“let”声明块级作用域变量,出了代码块,便不可使用。使用let需要启用严格模式。
    5.循环结构
    f...(ES6)
    遍历数组的元素值
    6.函数
    匿名函数的自调
    => 箭头函数
        () => {
   
        }
    箭头函数只用于匿名函数
    箭头函数中不存在arguments对象
    7.对象
        创建对象的方式:
        (1)对象直接量
        (2)构造函数方式
        (3)原型继承方式
        (4)class方式——ES新增
        class    类:是一组相似对象的属性和行为的抽象集合。(描述一类事物统一的属性和功能的程序结构)
        事物的属性就是class的属性,事物的功能就是class的方法。
        使用class方式创建自定义对象是,必须启用严格模式。
        "use strict";
        //创建自定义对象
        class Emp {
              constructor(ename){ 
                ame=ename;
              }
              work(){   
              }
        }
        var e1=new Emp("tom");
        实现继承:
        class Programmer extends Emp{
              constructor(ename,salary,skills){
                    super(ename,salary);
                    this.skills=skills;
              } 
javascript的特性        }
4.全局对象
    Node.js中的全局对象是Global.
    在交互模式下,声明的全局变量是global的成员。——全局对象的污染
    在脚本模式下,声明的全局变量不是global的成员。——避免了全局对象的污染
    Global对象的成员属性和成员方法
    1.console 用于向stdout(标准输出)和stderr(标准错误)输出信息。
   
    console.log()    //向stdout输出日志信息
    console.info()    //同上
    ()    //向stderr输出错误信息
    console.warn()    //同上
    ace()    //向stderr输出栈轨迹信息
    console.dir()    //向stdout输出指定对象的字符串表示
    console.assert()    //断言,为真的断言,错误信息不会输出;为假的断言,抛出错误对象,输出错误信息,并且终止脚本的运行,可以自定义错误信息。
    console.time()  console.timeEnd()//测试代码的执时间   
    注意:console中的成员方法是异步的,输出顺序和书写顺序不一定完全一致。
    2.process 进程
    process.arch    //获取CPU架构类型
    process.platform    //获取操作系统类型
    v    //获取操作系统环境变量
    process.cwd()    //获取当前文件所在工作目录
    Path    //获取Node.js解释器所在目录
    process.versions    //获取Node.js版本信息
    process.uptime()    //获取Node.js进程运行时间(s)
    Usage()//获取Node.js进程内存使用信息
    process.pid    //获取进程ID号
    process.kill( pid )    //向指定进程ID号发送退出信号
    3.定时器
    global.setTimeout()    //一次性定时器
    global.setInterval()    //周期性定时器
    global.setImmediate()//在下次事件循环开始之前立即执行的定时器
    Tick()    //本次事件循环结束之后立即执行的定时器
5.模块系统:
    Node.js中使用“Module(模块)”来规划不同的功能对象。
    模块的分类:
    (1)核心模块——Node.js的内置模块(有些不需引入可直接使用,有些需要引入)
    (2)第三方模块
    (3)自定义模块
    每一个被加载的js文件对应一个模块对象,包含响应的功能和函数。
    模块中声明的变量或函数的作用域叫做“模块作用域”,这些变量和函数都不是global的成员,默认只能在当前的js文件(当前模块)中使用。
    Node.js启动时运行的第一个模块叫做“主模块”——main module,也是自身模块。
    获取主模块对象:
    process.mainModule
    require.main
    除主模块之外的其他模块都称为子模块。
    默认情况下,某一个模块不能直接使用其他模块中封装的数据,但是每个模块可以导出(
exports)自己内部的对象供其他模块使用,也可用引入(require)并使用其他模块导出的对象。
   
    每一个模块内部都可以使用一个变量:module,指向当前模块自己。
    //判断当前模块是否主模块
    console.log(require.main===module);
    模块的引入:require()
    (在交互模式下,Node.js自带的模块无需引入,直接使用)
1.模块系统:
    Node.js中使用“Module(模块)”来规划不同的功能对象。
    模块的分类:
    (1)核心模块——Node.js的内置模块(有些不需引入可直接使用,有些需要引入)
    (2)第三方模块
    (3)自定义模块
    每一个被加载的js文件对应一个模块对象,包含响应的功能和函数。
    模块中声明的变量或函数的作用域叫做“模块作用域”,这些变量和函数都不是global的成员,默认只能在当前的js文件(当前模块)中使用。
    Node.js启动时运行的第一个模块叫做“主模块”——main module,也是自身模块。
    获取主模块对象:
    process.mainModule
    require.main
    除主模块之外的其他模块都称为子模块。
    默认情况下,某一个模块不能直接使用其他模块中封装的数据,但是每个模块可以导出(exports)自己内部的对象供其他模块使用,也可用引入(require)并使用其他模块导出的对象。
   
    每一个模块内部都可以使用一个变量:module,指向当前模块自己。
    //判断当前模块是否主模块
    console.log(require.main===module);
    模块的引入:require()
    (在交互模式下,Node.js自带的模块无需引入,直接使用)
    导出模块中的属性和方法供其他模块使用:exports
    预定义的模块作用域成员:
    __dirname    //当前模块文件所在的目录
    __filename  //当前模块文件所在的目录以及文件名
    module        //指向当前模块的引用
    ports  //指向当前模块中待导出的供其他模块使用的对象
    exports        //指向ports对象的引用
    require //引入其他模块,使用其他模块的ports对象
    自定义模块:
    (1)文件模块
        没有后缀的文件模块,被作为js文件加载
        .js后缀的文件模块,被作为js文件加载
        .json后缀的文件模块,被作为JSON字符串加载,会自动解析为对象
        .node后缀的文件模块,被作为C/C++二进制加载
    (2)目录模块——目录模块引入时只需引入目录名即可
        包含一个package.json文件的目录模块
            "main":""  指向该模块的主文件
        包含index.js文件的目录模块
        包含index.json文件的目录模块
        包含de文件的目录模块
    放到node_modules目录下的模块,引入的时候直接写模块名称即可,不必指定路径。
    模块查的顺序:
    (1)文件/目录模块的缓存

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。