javaScript 接口暴露和引入方式:require 和 import

在JavaScript中,requireimport是用于模块引入的两种主要方式,它们主要是遵循的规范不同,前者遵循CommonJS规范,后者遵循ES6规范。

require的接口暴露和引入

在使用require的模块系统中,接口暴露通常通过module.exportsexports对象来实现。开发者可以将函数、对象、变量等赋值给这些对象,从而使其能够被其他模块通过require引入。

module.exports:

/*
*  单个暴露
*/
const aa = ()=>{
...
}
module.exports = aa;  // 或者 module.exports = {aa};

/*
*  单个引入
*/
const aa = require("...");  // 或者 const {aa} = require("...");


/*
*  多个暴露
*/
const aa = ()=>{
...
}
const bb = ()=>{
...
}
module.exports = {aa,bb};

// 或者

module.exports = {
  aa:()=>{
    ...
  },
  bb:()=>{
    ...
  }
}

/*
*  多个引入
*/
const {aa,bb} = require("...");

module.exports不同暴露方式对应引入方式是不同的,注意区分。(使用大括号暴露时,引入的话也要用大括号!

exports:

// 暴露模块
exports.aa = ()=>{
  ...  
}

exports.bb = ()=>{
  ...
}

// 引入模块
const {aa,bb} = require("...");

exports必须使用 .模块名 的方式来暴露模块,单个还是多个,都是用大括号的方式引入的。

import的接口暴露和引入

在使用import的模块系统中,接口暴露通常通过exportexport default对象来实现。开发者可以将函数、对象、变量等赋值给这些对象,从而使其能够被其他模块通过import引入。

export:

// 暴露模块
export const aa = ()=>{
  ...  
}

export const bb = ()=>{
  ...  
}
// 引入模块
import {aa,bb} from "...";
...
aa();
bb();

export default:

// 单个暴露
const aa = ()=>{
  ...
}
export default aa;
// 单个引入
import aa from "...";   // default方式引入名称可以自定义,不过为了一致性,建议还是使用暴露出来的名称来引入

export default 只能单个暴露,想要多个暴露的话使用export方式!

 

注意:同一文件下,不可以既有CommonJS写法,又有ES6写法!

posted @ 2025-07-23 17:46  抽风的皮鞭  阅读(33)  评论(0)    收藏  举报