【nodejs】浅析nodejs

Node.js是一个能在服务器端运行JS的运行环境

Node有啥用

  • node中可以使用所有的JS内建对象

    String, Number, Boolean, Math, Date ......

  • node可以在后台编写服务器(单线程服务器)

    • 传统的服务器都是多线程的,每进来一个请求,就创建一个新的线程去处理请求
    • node在处理请求的时候是单线程的,但是在其后台拥有一个I/O线程池

模块化

  • 在node中,一个js文件就是一个模块

  • 使用require()函数来引入外部的模块,require()函数可以传递一个文件的路径作为参数,node会自动的根据该路径来引入外部模块

  • 使用require()函数引入模块以后,require()函数会返回一个对象,该对象就代表这个引入的模块

    var model = require("./111.txt")
    
  • 在node中,每一个js文件的js代码都被看做是是独立的运行在一个函数中,而不是我们平时理解的全局作用域。所以一个模块中的变量和函数在其他模块中无法访问,除非引入的模块主动暴露一些方法和属性

  • 当node在执行模块中的代码时,node引擎会给模块的代码用一个函数包起来,此函数接收五个对象作为实参

    function(exports, require, module, __filename, __dirname){
      //模块代码
    }
    
    • exports:用于暴露变量或函数到模块外部
    • require:用于引入外部模块
    • module:代表当前模块本身,exports就是module的属性
    • __filename:当前模块的完整路径
    • __dirname:当前模块所在文件夹的完整路径

暴露

通过exports对象向外部暴露,将需要暴露给外部的变量和方法设置为exports的属性即可

exports.x = '我是x'

模块标识

一种找到指定模块的方式,例如通过require()函数引入外部模块时,函数接收的路径就是一种模块标识

  • 核心模块:由node引擎提供的模块

    • 核心模块的标识就是该模块的名字

      var fs = require("fs") //直接引入文件模块
      
  • 文件模块:用户自己创建的模块

    • 文件模块的标识就是文件路径(绝对路径 、相对路径)

      var model = require("./111.txt")
      

global对象

一个在node中的全局对象,作用和浏览器里面的window对象类似

  • 在全局中创建的变量都会作为global的属性保存

  • 在全局中创建的函数都会作为global的方法保存

你可能感兴趣的:(【nodejs】浅析nodejs)