node模块化

    xiaoxiao2022-07-14  183

    在学习node时,最先接触的概念就是 “模块化”,我们将一些 .js 文件看做是一个模块进行封装起来,并通过exports、require来暴露出去、导入进来使用。

    模块系统:

    node中没有全局作用域的概念

    node中,只能通过 require 方法来加载执行多个js脚本文件

    require 会形成模块作用域

    模块是完全封闭的内外部无法互相访问

    构成: 核心模块(fs、path、http等),自己写的模块

    /* 思考:exports、require 1.window不是node的全局变量 2.node中只有一个全局变量 global 3.exports、require本质上是函数的参数 通过arguments(函数的标识)来获取函数的所有参数 通过打印 arguments.callee 来获取函数自身 arguments.callee.toString() 4.本质上node模块外部是一个函数 所有模块中的代码都是包装在一个函数中执行的,并且在函数执行的同时传递进去5个参数 function (exports, require, module, __filename, __dirname) { ...函数体(就是该 .js 模块文件中的内容)... } 剖析node模块结构: exports:该对象将函数内部的局部变量或局部函数暴露到外部 require:用来引入外部的模块 module:代表的是当前模块本身,exports就是起属性,可以使用exports或module.exports导出 __filename:当前文件的完整路径 __dirname:当前文件所在文件件的路径 exports、module.exports的主要区别: exports只能通过 .语法 来向外暴露内部语法, exports.*** = ***; module.exports 即可以通过 .语法 也可以通过直接赋值一个对象 module.exports = {***:***}; 二者之间的关系: let md = new Object(); md.exports = new Object({}); let exports = md.exports; exports.name = "***"; 这样操作之后,exports 的本质发生了变化,不在是module.exports对象了 */ console.log(module.exports === exports); //true
    node 中的模块化require做的事情:
    执行导入模块中的代码;获取导入模块的 exports 对象;但是js中的模块引入是为了共享使用各个模块中的内容;

    扩展IP和端口号:

    ip 地址目的是为了找到对应的机器; 端口号是为了找到机器上的应用程序; 任何需要联网通信的程序都需要对应端口号才能精确定位;

    最新回复(0)