Node.js 起步

281 阅读3分钟
    1. Node.js是什么

      Node.js是一个能在服务器端运行的javaScript的开放源代码,跨平台的javaScript运行环境。

    1. Node.js在项目中的作用

      小项目可以直接用作web服务器 。

    2. 前后端分离项目则用于页面的渲染工作,架构方式如下图:

  •  1.模块化定义

    在Node中一个.js文件就是个模块,类似于java的类,可以定义变量,常量以及函数,构造方法。

    CommonJS对模块化的定义:

    • 模块引用
    • 模块定义
    • 模块标识

    通过require()来引用模块 , 例如:

      var hello = require("./Hello.js");
    

    每个模块中的函数以及变量都是独立的,被其他模块引用时,该模块无法直接访问被引用模块的函数以及方法,只能通过被引用模块通过 .exports 修饰才能进行外部的访问,例如:

      exports.x = "我是模块中的X";
      
      exports.fn = function(a , b){
          console.log('我是函数fn');
          return a + b  ;
      }
  • 模块的类型:

       1. 核心模块

          - 由node引擎提供的模块

          - 核心模块的表示就是,模块的名字

       引入核心模块的时候只需要直接写名字就行了:

   var fs = require("fs");

       2. 文件模块

           - 由用户自己创建的模块

        引入文件模块则需要加上模块的路径,相对路径要以 . 或者 ..  开头:

    var hello = require("./Hello.js")

注:核心模块类似于Java本身提供的类,例如:java.lang , java.io , java.util。

       文件模块类似于Java用户自己写的类。

  • 模块的属性:

       所有模块的内容都默认封装在一个全局函数里面,该函数具有5个参数,其默认结构如下:

function ( exports , require , module , __filename , __dirname ) {
    //这里是模块的具体类的具体内容
    var a;
    var setA = function (a){
        this.a = a;
    }
} 
  • 五大参数的作用:

         exports

           - 该对象用于将模块的变量或函数暴露到外部 

//单个定义
module.exports.name = "孙悟空";
module.exports.sayName = function(){
    console.log("我是孙悟空");
}
//多个定义
module.exports = {
    name : "孙悟空";
    sayName : function(){
    console.log("我是孙悟空");
    }
}

         注:exports 和 module.exports

               exports只能通过 的方式向外暴露

        exports.hello =  "hello";

             而module.exports 既可以 . 也可以直接赋值

        module.exports.hello  = "hello";
        module.exports = {};

          require

           - 函数,用于引用外部的模块

          module

           - 代表当前模块的本身

           - 注:exports就是module的属性

           - 既可以使用exports导出,也可以使用 module.exports 导出到外部

          __filename

           - 返回当前模块文件的绝对路径

          __dianame

           -  返回当前模块所在文件夹的绝对路径   


课后杂记:

        -  全局对象global

            在node中有一个全局对象 gkobal,作用类似于网页中的window

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

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

     //查看全局里的函数以及变量
      console.log(global)

        -  类(伪)数组对象arguments

                    封装了函数所有实参的对象。

    //查看函数的所有实参,直接在函数里输出
    console.log(arguments)

    //查看当前正在执行的函数对象
    console.log(arguments.callee)

    //查看当前正在执行函数对象的结构
    console.log(arguments.callee + "")   //加  +""  等于你默认调用了toString方法