module.exports和improt

在vue中module.exports暴露的数据,到底该如何导入?
这里以lodash依赖的throttle函数为例!

img

img


这个暴露的数据算是默认暴露吗?
请大家帮忙讲解

    在 node_modules 中的第三方包通过在package.json中进行了注册,在包中使用 module.exports 进行了暴露,使用 import进行引用时,首先是在package.json 中进行查询,如果有同名包则进行第三方的引用,如果没有,则根据写的路径进行调用自己写的组件。一般引用第三方的包的时候,推荐用第一种写法吧,看着也简洁啊
很高兴回答你的问题
在这里 有两个知识点1.(vue)前端模块化  2.(node)后端模块化
模块化:
所谓的模块化  就是把某块功能的代码 抽里成一个js文件
用到的时候直接引入当做函数一样的调用  这点我觉得有点像java的面向对象的思想
前端模块化:
以vue为例子   那些.vue文件 就是一个块
前端的导入 和 抛出
抛出 就是 export 后面就是对外暴露的代码
引入 就是 import 把抛出的东西拿过来

例如
math.jsexport function add(a,b){
   return a+b
}
理解就是 抛出了一个对象 里面存在一个 {add:Function}
app.vue
你需要使用解构赋值 来取得抛出的add
import {add} from "./math" //暴露{add}  符合结构 add 取得数据
import {adds} from "./math" //暴露{add}  不符合结构 add 取不到数据
import add from "./math"   //不符合解构赋值 取不出来

特殊词 default
例如
math.jsexport default function add(a,b){
   return a+b
}
app.vue
一个js文件中只能存在个 default
此时抛出来的就是一个值
import add from "./math"  //暴露值[default]add  add=add  可以取出来
import adda from "./math"  //暴露值[default]add  adda=add  可以取出来
import {adda} from "./math"  //暴露值[default]add  
{ } 是用来取出 不带default抛出的代码
直接一个值  是用来取出 带default抛出的代码
于是会出现下面情况
例如
math.jsexport default function add(a,b){
    return a+b
}
export function lose(a,b){
    return a-b
}
app.vue
import aa,{lose} from "./math"
aa=[default]add  {lose}={lose}


后端模块化:
后端模块化 道理一样  只是使用的模块化标准不同而已
一般是 node的模块化
导出 module.export  请记住export本身就是个对象
导出来的东西一般都是export的属性
例如
module.exports.add=function(a,b){return a+b}
//exports: { add: [Function] },  
// 导入时 用的是 require("模块")  也支持解构赋值 但是他可以直接赋值
var a= require("模块")  a={ add: [Function] }
var {add}= require("模块")  add= add: [Function] 



例子
math.js
module.exports={
    add:function(a,b){return a+b}
}
app.vue
import  {add} from "./math"  {add}={add} add取出来
import  {adda} from "./math"  {adda}={add}  adda取不出来adda=undefined
import  add from "./math"      add={add}   add等于了{add} 可以add.add使用



你的这种情况明显的属于 抛出和接受的问题

你使用 module.exports=throttle  exports是一个对象 只不过被throttle覆盖了

你使用 import  去导入 
按道理道说应该使用 对象的解构赋值
但是module.exports 抛出可以直接接受 也可以解构赋值接受
import {throttle} from "throttle" {throttle}={这里需要抛出的throttle对象存在 key 是throttle的属性}

import throttle from "throttle" 
throttle={}   此时的throttle 就完全的是哪个抛出的对象