首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js的模块,有哪些全局变量?

一、模块的作用 把实现某个功能的函数,放到单独 js 文件中,这个 js 文件就被称模块(module),其他代码只需导入这个 js 文件,即可使用其功能,达到代码复用的目的。...二、全局变量 模块被 Node.js 加载时,会用函数将其进行包裹,所以就有了5个模块内全局变量: // Node.js 包裹模块的函数如下: (function(exports, require,...require : 包含本模块导入其他模块的信息。require.main 等同于 module 。 module :指向当前模块的引用,包含当前模块的路径、目录等信息。...console.log("exports : ", exports, "\r\n\r\n************************"); // 查看本模块导入模块的信息 console.log...("path.dirname(__filename) : ", path.dirname(__filename)); 四、参考文档 Node.js的模块,有哪些全局变量?

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Node 导入模块:require()和导出模块:module.exports、exports的用法及注意点

    1、require()导入模块 注意:使用require方法加载模块,会执行被加载模块中的代码 /* 模块有三大分类:内置模块、自定义模块、第三方模块 */ /* 示例:使用require方法加载模块...*/ // 注意:使用require方法加载模块,会执行被加载模块中的代码 // 1、加载内置模块 const fs = require('fs') // 2、加载自定义模块 const riven...导出模块 注意:require()导入模块时,得到的永远是module.exports指向的对象 console.log('这是我的自定义模块:Riven-custom'); /* 时刻谨记,require...()模块时,得到的永远是module.exports指向的对象*/ // module.exports===exports(只是在默认情况下全等,指向改变后不是全等) /* 指向误区:谨记以module.exports...指向的对象为准 */ // 1、2指向的是不同的对象,3、4指向的是同一个对象 // 1、指向:{ username: '李四' } exports.username = '张三' module.exports

    1.2K30

    Es6中的模块化Module,导入(import)导出(export)

    以上代码是在node中,通过module.exports对外暴露变量对象,函数等常见方式,而通过require()的方式引入本地模块或者导入包 这个module.exports是node提供的一个私有全局变量属性...· 如果想从一个文件(模块)访问另一个文件(模块)的功能,则需要通过import关键字在另一个模块中引入数据,import语句的两个部分组成分别是:要导入的标识符和标识符应当从那个模块导入,另外,导入的标识符的顺序可以是任意位置...(import也不能在其他语句或者函数内使用,否则会报错) 由于同样的原因,不能动态的导入或导出绑定,export和import关键字被设计成静态的 以上这种通过import导入模块与require的写法的具体区别是.../exportExample.js" // from前面双大括号中的变量对象是不可以被修改的,想尝试修改就会报错 console.log(name); // 随笔川迹,此时访问name是全局变量...,以及在Node中通过babel将es6代码转化为Es5代码在Node中执行,模块的导出(导出数据,函数和类)模块的导入(单个导入,多个导入,导入整个) 模块中在用export关键字导出所要暴露的对象和用

    2.6K20

    JS 的 9 种作用域,你能说出几种?

    这就是浏览器环境下用 let const 声明全局变量时的特殊作用域,script 作用域。可以直接访问这个全局变量,但是却不能通过 window.xx 访问。...说到特殊的作用域,其实还有一些: Catch Block 作用域 Catch 语句也会生成一个特殊的作用域,Catch Block 作用域,特点是能访问错误对象: 在 node 里也是一样,只不过还有一层模块作用域...没错,都会形成闭包,但是保存的变量不一样了: 你会发现它把所有外部的作用域的变量都保存到了 Closure 作用域,包括模块作用域的变量。 为什么呢?...但是这样明显性能不好,会占用更多的内存,所以闭包里尽量不要用 eval。 前面说模块作用域是特殊的函数作用域,为什么这么说呢? 这就与 node 模块的执行机制有关系了。...Script 作用域,这些变量可以直接访问,但却不能通过 window.xx 访问 模块作用域:其实严格来说这也是函数作用域,因为 node 执行它的时候会包一层函数,算是比较特殊的函数作用域,有 module

    2.4K41

    Typescript真香秘笈

    但是反过来,用typescript语法编写的代码,却不能在浏览器或者Node环境下直接运行,因为typescript本身并不是Ecmascript标准语法。 3. 为什么要使用Typescript?...: any; } export 导出变量 在声明文件中只要用到了export、import就会被视为模块声明文件。模块声明文件中的declare关键字不能声明全局变量。...bar = foo.bar; export as namespace 库声明全局变量 既可以通过 标签引入,又可以通过 import导入的库,称为 UMD 库。...node项目: 在node项目中,可以直接使用tsc编译文件,然后重启服务,但是这样在开发阶段显然是非常低效的。 能不能让node直接执行ts文件呢?...它的原理是对node进行了一层封装,在require ts模块的时候,先调用tsc将ts文件编译成js文件,然后再用node执行。

    5.7K20

    TS4类型系统扩展

    一、declare关键字1、declare关键字在 TypeScript 中,declare 关键字主要用于声明全局变量、函数、模块、类型别名或枚举,以便在 TypeScript 代码中引用它们,而无需实际定义它们...声明全局变量或函数当在 TypeScript 代码中访问某个全局变量或函数,但这个变量或函数并不是在 TypeScript 代码中定义的,而是在 JavaScript 运行时环境中定义的(如浏览器 API...: any): void;声明模块当需要告诉 TypeScript 编译器某个模块存在,但不想(或不能)在 TypeScript 中实际定义它时。...2、"declaration": true,在现代 TypeScript 项目中,通常不需要手动声明浏览器或 Node.js 的全局变量和函数,因为 TypeScript 已经内置了这些环境的声明文件(...这些声明文件包含了 TypeScript 源文件的类型信息,但不包含实现细节。它们的主要用途是允许其他 TypeScript 文件导入和使用这些类型,而无需直接访问实现文件。

    10800

    加速 Webpack

    运行在 Node.js 之上的 Webpack 是单线程模型的,也就是说 Webpack 需要处理的任务需要一件件挨着做,不能多个事情一起做。.../node_modules 中找,再没有就去 ../../node_modules 中找,以此类推,这和 Node.js 的模块寻找机制很相似。 当安装的第三方模块都放在项目根目录下的 ....当需要导入的模块存在于某个动态链接库中时,这个模块不能再次被打包,而是去动态链接库中获取。 页面依赖的所有动态链接库需要被加载。..._dll_react 可以访问到它里面包含的模块。 { // 描述该动态链接库文件暴露在全局的变量名称 "name":"_dll_react", "content":{ "....main.js 文件是编译出来的执行入口文件,当遇到其依赖的模块在 dll.js 文件中时,会直接通过 dll.js 文件暴露出的全局变量去获取打包在 dll.js 文件的模块。

    1.9K50

    【Node.js】模块化学习

    模块化规范  Node.js中的模块化         Node.js中模块的分类          加载模块         Node.js中的模块作用域                 ...Node.js中的模块化         Node.js中模块的分类 Node.js中根据模块来源的不同,将模块分为了三大类,分别是: 内置模块: 有官方提供的模块,如http,path等; 自定义模块...Node.js中的模块作用域                 什么是模块作用域 和函数作用域类似,再自定义模块中定义的变量,方法等成员,只能在当前定义的模块内被访问,这种模块机别的访问限制,被叫做模块作用域...,导入模块后 也不能使用模块内的函数等,                 模块作用域好处 防止了全局变量污染的问题,这个问题 我再之前的es6文章 let const var定义函数中说过。...Node.js中的模块化规范 Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖。

    1.8K20

    webpack模块化的原理

    webpack将这些模块组成一个对象(属性名是模块路径(模块id),属性值为模块内容)传入一个立即执行函数,立即执行函数中定义了一个函数 __webpack_require__类似node中的require...函数,实现了导入模块的作用。...就很容易理解这个函数了: 首先查看这个模块是否已经被加载过,所以就需要一个全局变量installedModules用来记录所有被加载过模块的导出 没有加载过的模块就先构造一个module对象,关键是要有一个...首先我们先看一下他们互相导入的时候的导入结果是什么样的: 图片 图片 我们来看看 webpack 是如何实现的,先修改一下模块: index.js const { a, test } = require...并且利用立即执行函数的特点实现了作用域的封闭避免了全局变量的污染,非常的巧妙。

    50320

    Electron入门教程1 —— 编写第一个桌面应用程序

    用它开发出来的桌面应用程序其实就是套壳浏览器的应用,这就是为什么它可以用web前端技术来开发,并且可以跨平台的原因了。...6.在项目的根目录下创建一个名为main.js的文件,这个文件是整个应用程序的入口 // 我们需要导入两个electron模块 const { app, BrowserWindow } = require...要实现此功能,请侦听app模块的activate事件,如果没有打开浏览器窗口,则调用您现有的createWindow()方法。因为不能在事件之前创建窗口,所以你应该只在你的应用程序ready之后。...在主进程中通过Node的全局进程对象访问这些信息是很简单的。但是,您不能仅仅从主进程编辑DOM,因为它无法访问渲染器的文档上下文。它们处于完全不同的进程中! 关于这些进程相关的以后具体学习讲解。...预加载脚本在渲染进程被加载之前运行,并且可以访问渲染全局变量(例如窗口和文档)和Node.js环境。

    3.2K40

    webpack模块化的原理_2023-02-27

    webpack将这些模块组成一个对象(属性名是模块路径(模块id),属性值为模块内容)传入一个立即执行函数,立即执行函数中定义了一个函数 __webpack_require__类似node中的require...函数,实现了导入模块的作用。...就很容易理解这个函数了: 首先查看这个模块是否已经被加载过,所以就需要一个全局变量installedModules用来记录所有被加载过模块的导出 没有加载过的模块就先构造一个module对象,关键是要有一个...首先我们先看一下他们互相导入的时候的导入结果是什么样的: 图片 图片 我们来看看 webpack 是如何实现的,先修改一下模块: index.js const { a, test } = require...并且利用立即执行函数的特点实现了作用域的封闭避免了全局变量的污染,非常的巧妙。

    58020

    每天 3 分钟,小闫带你学 Python(二十六)

    3.模块导入 3.1 import 大家常见的方式。这种方式会一次性的将模块中所有的全局变量和函数之类的内容全部导入。...使用的时候不需要写模块名,可以直接使用全局变量名等。 导入模块语法格式: from 模块名 import * 使用导入的模块内容: 全局变量名 函数名 ... 就和自己的一样,想咋用咋用,随你开心。...但是不推荐使用此方式,因为你导入了一堆名字,也就意味着你自己文件中名字不能和这些名字冲突。当你的全局变量名和导入的模块中某名字相同时,不会提示你怎么错了,是个十分头疼的问题。...如果使用 from 模块名 imoport 全局变量名,函数名 方式导入模块, 且被导入的全局变量、函数和本模块中的全局变量、函数的名字重名的时候,可以使用 as 指定全局变量、函数、类的别名。...__all__ 列表中保存的全局变量、函数名等,在其他模块使用如下方式导入时,能够被使用: from 模块名 import 名称 也就是说, __all__ 可以规定哪些变量和函数等被其他模块使用,哪些不能被使用

    51730

    typescript声明文件:全局变量模块拆分自动生成声明文件

    库后,改变一个全局变量的结构模块插件:通过 或 import 导入后,改变另一个模块的结构全局变量全局变量是最简单的一种场景,之前举的例子就是通过 标签引入 jQuery...由于是通过 import 语句导入的模块,所以声明文件存放的位置也有所约束,一般有两种方案:创建一个 node_modules/@types/foo/index.d.ts 文件,存放 foo 模块的声明文件...依赖一个全局变量的声明文件在另一个场景下,当我们需要依赖一个全局变量的声明文件时,由于全局变量不支持通过 import 导入,当然也就必须使用三斜线指令来引入了29:// types/node-plugin...最后在使用到 foo 的时候,传入了 node 中的全局变量 process。...由于引入的 node 中的类型都是全局变量的类型,它们是没有办法通过 import 来导入的,所以这种场景下也只能通过三斜线指令来引入了。

    3.5K11

    深度讲解TS:这样学TS,迟早进大厂【12】:声明文件

    这里只演示了全局变量这种模式的声明文件,假如是通过模块导入的方式使用第三方库的话,那么引入声明文件又是另一种方式了,将会在后面详细介绍。...模块插件:通过 `` 或 import 导入后,改变另一个模块的结构 全局变量§ 全局变量是最简单的一种场景,之前举的例子就是通过 `` 标签引入 jQuery,注入全局变量 $ 和 jQuery。...由于是通过 import 语句导入的模块,所以声明文件存放的位置也有所约束,一般有两种方案: 创建一个 node_modules/@types/foo/index.d.ts 文件,存放 foo 模块的声明文件...依赖一个全局变量的声明文件§ 在另一个场景下,当我们需要依赖一个全局变量的声明文件时,由于全局变量不支持通过 import 导入,当然也就必须使用三斜线指令来引入了29: // types/node-plugin...由于引入的 node 中的类型都是全局变量的类型,它们是没有办法通过 import 来导入的,所以这种场景下也只能通过三斜线指令来引入了。

    5.7K51
    领券