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