| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 【Node.js】require到底是什么? -> 正文阅读 |
|
[JavaScript知识库]【Node.js】require到底是什么? |
目录 要想弄明白require到底是什么,我们首先得知道,在node环境中JS的几个基本特性: 1.Node中的JS
? ? ? ? ? ? ? ? 没有DOM、BOM,因为服务器没有页面,也就不需要DOM、BOM操作了。
核心模块Node为JS提供了很多服务器界别的API,这些API绝大多数被包装到了一个具名的核心模块中了。 例如:文件操作的fs核心模块,http服务构建的
注意:虽然上面的变量名可以自定义,但建议还是设置为核心模块的名称,以便于实现语义化,方便开发人员读写代码。 2.Node.js中的作用域node中没有全局作用域,只有模块作用域 为了理解这句话,我们可以用两个例子来说明: 因为node一次只能执行一个文件,如图: ?它的结果只能执行第一个文件,结果为"hellow nodejs",而并行的文件二的内容并没有展现,因此,我们需要用到require()方法,在一个文件中引用另一个文件。 如以下示例一: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?示例1 最终打印结果顺序如下:a? ?b? ?c ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?示例1 3.使用require和exports连接两个模块既然既然是模块作用域(两个模块是封闭的),那如何让模块与模块之间进行“通信”呢? 有时候,我们加载文件的目的不是为了简简单单的执行里面的代码,更重要是为了使用里面的方法和属性 ?试想有这样一个场景:我们的a文件需要引用b文件中的方法,比如引用b文件的加法操作, 我们仍然使用示例1的方式看看是否可以成功: ?很遗憾,最后失败了,错误信息是getAdd方法未定义,也就是说并没有从a.js文件中获取到b.js文件的方法。 原因很简单:Node.js中,每个文件模块都提供了一个空对象,exports。 ?????????????????????也就是说,exports默认是一个空对象。 我们可以来验证一下: ?我们从a.js文件中引入了b文件,并把它放到了b_js这个变量中,输出变量后发现它的确是一个空对象。 这里,我们要重新来定义一下require的作用了: 1.加载文件模块并执行里面的代码 2.拿到被加载文件模块中的接口对象:exports, 也就是说?require方法是有返回值的,返回值就是exports空对象 而我们要做的就是,把所有需要被外部访问的成员“挂在”这个exports对象中去 操作如下: ?如上图我们可以看到,在b.js文件中,我们动态地为这个exports添加成员:foo属性以及getAdd方法,使它不再是一个空对象,因此,我们在a.js文件中就可以调用b文件里的属性和方法了,也就完成了两个文件的“通讯”方式。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:18:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |