Table of Contents
The relationship between module.exports and exports
Compare exports and module.exports
Usage scenarios of exports and module.exports
Summary
Home Web Front-end Front-end Q&A nodejs exports usage

nodejs exports usage

May 14, 2023 am 10:31 AM

Node.js is a programming language based on the Chrome V8 engine that allows JavaScript to run on the server. It can use modules and packages to easily organize programs and manage dependencies. Among them, module.exports and exports are commonly used concepts in modularization. This article will introduce their usage in Node.js.

The relationship between module.exports and exports

In Node.js, each file is an independent module. If you want to use the variables and functions inside the file in other modules, you need to Export it. Both variables module.exports and exports can be exported.

In Node.js, each module has a module object, which contains module-related information, including an exports attribute. exports Mount the variables or functions to be exported on this attribute, and then reference the module externally through the require() function and call its exported variables and functions.

By default, exports points to the reference of module.exports, so through exports and module.exportsYou can export modules, but it should be noted that the pointing relationship between the two is not always the same, so sometimes we need to use module.exports instead of exports.

Compare exports and module.exports

When we use exports to export an object, we actually add an attribute to exports and assign a value . For example:

// add.js
exports.add = function (a, b) {
  return a + b;
}
Copy after login

In the above code, we use exports to export the add() method. Equivalent to executing the following code:

exports.add = function (a, b) {
  return a + b;
}

module.exports = exports; // exports被默认指向module.exports
Copy after login

Next let us look at an example:

// math.js
exports.add = function (a, b) {
  return a + b;
};

exports.sub = function (a, b) {
  return a - b;
};

// app.js
const math = require('./math');
console.log(math.add(1, 1)); // 2
console.log(math.sub(1, 1)); // 0
Copy after login

Reference the math module through the require() function and Call its exported method and the result is output correctly. Why is it correct?

We know that exports points to module.exports by default, and when we directly point exports to a new object, module The pointing relationship of .exports has been changed. When Node.js loads a module, it actually returns the module.exports object instead of the exports object, so after pointing exports to a new object , and then use the new object as the value of module.exports, which is the real export operation.

exports = {
  add: function (a, b) {
    return a + b;
  },
  sub: function (a, b) {
    return a - b;
  },
}

module.exports = exports;
Copy after login

Note: If you just reassign the attribute of exports, it will not change the pointing relationship between it and module.exports.

For example:

// multiply.js
exports = {
  mul: function (a, b) {
    return a * b;
  }
}

// app.js
const multiply = require('./multiply');
console.log(multiply.mul(2, 5)); // TypeError: multiply.mul is not a function
Copy after login

In the above code, exports points to a new object, but its properties are not assigned, so the exported value is undefined, so a TypeError will occur when calling.

Usage scenarios of exports and module.exports

In most cases, we can directly use exports to export modules. But sometimes, we need to export a function or object directly from the module instead of mounting them on exports. In this case, we need to use module.exports.

For example:

// foo.js
module.exports = function () {
  console.log('Hello World!')
}

// app.js
const foo = require('./foo');
foo(); // Hello World!
Copy after login

In the above code, directly assigning a function to module.exports actually uses the function as the export object of the entire module.

Summary

exports and module.exports are variables used to export modules in Node.js. They can expose the variables or functions of the module to external use during use. , it should be noted that exports points to module.exports by default, and its relationship does not always point to the same object. As a result, sometimes we need to use module.exports instead of exports. When choosing to use exports and module.exports to export modules, you can choose according to the actual situation.

The above is the detailed content of nodejs exports usage. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

React's Role in HTML: Enhancing User Experience React's Role in HTML: Enhancing User Experience Apr 09, 2025 am 12:11 AM

React combines JSX and HTML to improve user experience. 1) JSX embeds HTML to make development more intuitive. 2) The virtual DOM mechanism optimizes performance and reduces DOM operations. 3) Component-based management UI to improve maintainability. 4) State management and event processing enhance interactivity.

React Components: Creating Reusable Elements in HTML React Components: Creating Reusable Elements in HTML Apr 08, 2025 pm 05:53 PM

React components can be defined by functions or classes, encapsulating UI logic and accepting input data through props. 1) Define components: Use functions or classes to return React elements. 2) Rendering component: React calls render method or executes function component. 3) Multiplexing components: pass data through props to build a complex UI. The lifecycle approach of components allows logic to be executed at different stages, improving development efficiency and code maintainability.

What are the limitations of Vue 2's reactivity system with regard to array and object changes? What are the limitations of Vue 2's reactivity system with regard to array and object changes? Mar 25, 2025 pm 02:07 PM

Vue 2's reactivity system struggles with direct array index setting, length modification, and object property addition/deletion. Developers can use Vue's mutation methods and Vue.set() to ensure reactivity.

What are the benefits of using TypeScript with React? What are the benefits of using TypeScript with React? Mar 27, 2025 pm 05:43 PM

TypeScript enhances React development by providing type safety, improving code quality, and offering better IDE support, thus reducing errors and improving maintainability.

React and the Frontend: Building Interactive Experiences React and the Frontend: Building Interactive Experiences Apr 11, 2025 am 12:02 AM

React is the preferred tool for building interactive front-end experiences. 1) React simplifies UI development through componentization and virtual DOM. 2) Components are divided into function components and class components. Function components are simpler and class components provide more life cycle methods. 3) The working principle of React relies on virtual DOM and reconciliation algorithm to improve performance. 4) State management uses useState or this.state, and life cycle methods such as componentDidMount are used for specific logic. 5) Basic usage includes creating components and managing state, and advanced usage involves custom hooks and performance optimization. 6) Common errors include improper status updates and performance issues, debugging skills include using ReactDevTools and Excellent

How can you use useReducer for complex state management? How can you use useReducer for complex state management? Mar 26, 2025 pm 06:29 PM

The article explains using useReducer for complex state management in React, detailing its benefits over useState and how to integrate it with useEffect for side effects.

What are functional components in Vue.js? When are they useful? What are functional components in Vue.js? When are they useful? Mar 25, 2025 pm 01:54 PM

Functional components in Vue.js are stateless, lightweight, and lack lifecycle hooks, ideal for rendering pure data and optimizing performance. They differ from stateful components by not having state or reactivity, using render functions directly, a

How do you ensure that your React components are accessible? What tools can you use? How do you ensure that your React components are accessible? What tools can you use? Mar 27, 2025 pm 05:41 PM

The article discusses strategies and tools for ensuring React components are accessible, focusing on semantic HTML, ARIA attributes, keyboard navigation, and color contrast. It recommends using tools like eslint-plugin-jsx-a11y and axe-core for testi

See all articles