export、export default、import 的注意和require

export 暴露有两种形式,一个是声明,一个是直接暴露简写的对象,如下


//第一种:直接声明函数或者变量
export let a = 1;
export let b = 1;
export function sing() { }      

//第二种:直接暴露对象
function fun(a, b) {
    return a + b
}
let a = 1;
let b = 1;
export { a, b, fun }

两种方式的暴露结果都是一个对象,都是{a:1,b:1},所以导入必须用 {} 接收
import { a, b, fun } from './18.js';

//错误写法
export {a:1,b:1,fun(){} )

使用export default 后面必须是表达式,也就是有返回值的,例如

let a = 1;
export default a
export default { b: 1 }
export default function () { return 1 }      //这是函数表达式,不是函数声明
export default 1 > 0 ? 1 : 0

import suibian from '....'    //名字随便起,不能加大括号{}

// 错误写法
export default let a = 1;
export default function sing(){}

一个js文件只能有一个export default

总结:export和export default:

相同点:

1、export和export default均可用于导出常量,函数,文件,模块等。

不同点:

1、在一个文件或模块中,export、import可以有多个,但是export default仅有一个。

2、通过export方式导出,在导入时要加{},例如:import  {***}  from  ../../***(路径)。

3、通过 export default 方式导出,导入不加{},例如:import  ***  from  ../../***(路径)。

4、使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名。

如何使用:

1、如果只是对外提供一个简单的判断跳转的方法而已,可以使用export function jump(){ }声明一个函数,import { jump }后就可以直接使用jump了;或者使用export default function() {} 暴露一个匿名函数,import jump 就可以直接使用jump了;

2、如果对外提供了很多的方法和属性,直接使用export default { sing( ){ }, data:{ }}

module.exports 和 require

//暴露
const a = 1;
module.exports.a = 1

// 引用
const m1 = require('./06.m1.js')   //整个module.exports对象
const { a } = require('./06.m1.js');
console.log(a);   // 1
console.log(m1);    // {a:1}
const age = 20   //不暴露的话age就是私有的成员
// 向 module.exports 对象上挂载 username 属性  ,就是添加属性
module.exports.username = 'zs'
module.exports.sayHello = function () {
  console.log('Hello!')
}
module.exports.age = age;
// 让 module.exports 指向一个全新的对象, 以前添加的那些属性方法都没了,如果下面代码写在前面就都有
module.exports = {
  nickname: '小黑'
}

const m = require('./11.自定义模块')
console.log(m)   // { nickname: '小黑' }

console.log(exports)   // {}
console.log(module.exports)   // {}
console.log(exports === module.exports)   //true  他们两个一开始都是指向同一个空对象,如果你不去改变其中一个的指向,那么他们两个都是相同的指向

module.exports.username = 111;
module.exports = {    //你把module.exports重新指向了
  a: 1123
}
exports = {     //你把exports重新指向,无所谓,还是以module.exports 指向的对象为准
  name: '123'
}
exports.age = 20     //用module.exports和exports都可以,只不过exports更加简单
exports.sayHello = function () {
  console.log('大家好!')
}
console.log(exports === module.exports)  //改变了指向,地址不同,结果为false


const m = require('./13.exports对象')
console.log(m)      //{ a: 1123 }

记住一句话,向外共享的结果,永远都是 module.exports 所指向的对象

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这些关键字都是用于在 JavaScript 中导出模块的方式。 1. `module.exports` 是 CommonJS 规范中用于导出模块的方式。在 Node.js 中,`module.exports` 是一个指向当前模块导出对象的引用。可以通过给 `module.exports` 赋值来导出一个对象或函数。 例如: ``` // 导出一个函数 function add(a, b) { return a + b; } module.exports = add; ``` 2. `exports` 是 `module.exports` 的一个辅助对象,可以通过给 `exports` 对象的属性赋值来导出模块。 例如: ``` // 导出一个对象 exports.name = 'Tom'; exports.age = 18; ``` 这个模块实际上等价于: ``` module.exports = { name: 'Tom', age: 18 }; ``` 3. `export` 是 ES6 中用于导出模块的关键字。可以通过 `export` 关键字导出一个变量、函数或对象。 例如: ``` // 导出一个变量 export const name = 'Tom'; // 导出一个函数 export function add(a, b) { return a + b; } // 导出一个对象 export default { name: 'Tom', age: 18 }; ``` 4. `export default` 也是 ES6 中用于导出模块的关键字,但是它只能导出一个默认值。 例如: ``` // 导出一个默认值 export default function add(a, b) { return a + b; } // 导出一个默认对象 export default { name: 'Tom', age: 18 }; ``` 在导入模块时,可以使用 `import` 关键字来引入模块。例如: ``` // 导入 CommonJS 模块 const add = require('./add'); // 导入 ES6 模块 import { name, add } from './module'; import person from './person'; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值