nodejs exports usage
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.exports
You 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; }
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
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
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;
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
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!
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics





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 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.

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.

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

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

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.

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

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
