export 和export default的使用和区别

摘要:
我主要是从vue项目使用常量和方法角度取分析,从具体例子出发(在js中也可以导入其他js中的数据和方法)涉及到HelloWord.vue和common.js两个文件一、使用export导出变量和方法common.js//导出变量(方式1)constmyName='小明'constmyEge='18'export{myNameasmyname,//导入时只能myname,否则报错myEge}//导出

我主要是从vue项目使用常量和方法角度取分析,从具体例子出发

(在js中也可以导入其他js中的数据和方法)

涉及到HelloWord.vue和common.js两个文件

一、使用export导出变量和方法

common.js

//导出变量(方式1)
const myName = '小明'
const myEge = '18'export {
  myName as myname, //导入时只能myname,否则报错
myEge
}
//导出变量(方式2)
export const myAdd = 'beijing'

//导出方法(方式1)
const getMyEge = () =>{
  returnmyEge
}
const getMyAdd = () =>{
  returnmyAdd
}
export {
  getMyEge,
  getMyAdd
}
//导出方法(方式2)
export function getMyName () {
  returnmyName
}

HelloWord.vue

<template>
  <div class="hello">
      <div>{{myname}}</div><!--未定义直接使用会报错,"myname" is not defined,必须在data或者computed中定义-->
      <div>{{myEge}}</div>
      <div>{{myadd}}</div>
  </div>
</template>

<script>import {myname, myEge, myAdd as myadd, getMyName, getMyEge} from '@/utils/common'export default{
  name: 'HelloWorld',
  data () {
    return{
      myEge: myEge
    }
  },
  computed: {
    myadd () {
      returnmyadd
    }
  },
  mounted () {
    console.log(myname)
    console.log(myadd)
    console.log(getMyName())
    console.log(getMyName) //执行方法必须后加括号,否则打印出来是ƒ getMyName() {eturn myName;}
console.log(getMyEge())
  }
}
</script>

先就export的使用总结一下下

在common.js中

1.export 导出变量和方法都有两种方式

方式1:先定义再整体导出 export {}

方式2:一段代码直接导出一个,如 export const a=1

2.使用方式1导出时是可以改变方法名或者变量名的,as英文翻译'作为',那么下面的示例就是,将myName 作为myname导出,后期在导入时就要使用myname,否则就会报错

export {myName as myname}

在HelloWorld中

1.导入变量和方法

import {myname, myEge, myAdd as myadd, getMyName, getMyEge} from '@/utils/common'

此处的myAdd as myadd同样是将myAdd改成了myadd,使用时用myadd,方法名也是可以改的

2.导入的myname不能在{{myname}}使用,会报错"myname" is not defined,需要在data或computed中定义赋值,

在js中可以直接使用console.log(myname)

3.console.log(getMyName) // 执行方法必须后加括号,否则打印出来是ƒ getMyName() {eturn myName;}

二、使用export default导出变量和方法

1.一个js只能使用一个export default

下面代码使用两个,在运行时就会报错

// common.js
const
myname = '小红'export defaultmyname const myname2 = '小红'export default myname2

2.export和export default是否可以同时出现

可以,使用不同的导入方式,可以得到export和export default相应的值

可以看以下验证示例

const myname2 = '小红1'
const myname = '小红'
const myFun = () =>{
  returnmyname2
}
export {
  myname2,
  myname
}

export default{
  myname2,
  myname,
  myFun,
  myFun2: function () {
    returnmyname
  }
}
<template>
  <div class="hello">
  </div>
</template>

<script>import myname2, {myname2 as myname1} from '@/utils/common1'
export default{
  name: 'HelloWorld',
  data () {
    return{
    }
  },
  computed: {
  },
  mounted () {
    console.log(myname2)//{myname2: "小红1", myname: "小红"}
console.log(myname2.myname2)//小红1
console.log(myname1)//小红1
console.log(myname2.myFun())//小红1
console.log(myname2.myFun2())//小红
}
}
</script>

三、export 和export default区别

1.export default 在同一个模块中只能出现一次,export可以出现多次(export和export default 可同时使用)

2.导入方式不同,export导入需要加{}

3.export default const str = 'hello world'会报错,export default后不能跟let const 等

免责声明:文章转载自《export 和export default的使用和区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql 参数read_rnd_buffer_size的真正含义JS字符编码----ASCII,Unicode 和 UTF-8下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CFileFind类的详解以及应用实例

CFileFind类在afx.h头文件中声明。功能:执行本地文件的查找,支持通配符。类的成员函数:1、查找操作类: 1 //搜索目录下指定的文件,成功返回非0。第二个参数不必理会2 virtual BOOL FindFile(LPCTSTR pstrName = NULL,DWORD dwUnused = 0); 3 virtual BOOL F...

Android-Native-Server 启动和注册详细分析

Android-Native-Server 启动和注册详细分析 以mediaService为实例来讲解: mediaService的启动入口 是一个 传统的 main()函数 源码位置E:src_androidandroid_4.1.1_r1android_4.1.1_r1frameworksavmediamediaservermain_mediaserv...

INNO Setup 使用笔记

INNO Setup 使用笔记[Setup] AppName={#MyAppName} AppVerName={#MyAppVerName} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppUR...

Node.js &amp;amp; Kubernetes Graceful Shutdown

k8s-graceful-shutdown:该库提供了使用 Kubernetes 实现 Graceful Shutdown(优雅退出) Node.js App 的资源。 问题描述 在 kubernetes 中运行微服务时。我们需要处理 kubernetes 发出的终止信号。这样做的正确方法是: 监听 SIGINT, SIGTERM 收到信号后,将服务...

使用 ESlint+stylelint+prettier 对前端项目代码进行规范

使用 ESlint+stylelint+prettier 对前端项目代码进行规范 说明:该规范主要针对的是使用的是 react+typescript+tsx 框架的代码进行相关规范   目录 项目初始化 添加eslint相关配置及规范约束 添加prettiter 项目配置及约束 添加stylelint相关配置及约束 设置git 代码提交检查及eslint...

小程序canvas生成二维码图片踩的坑

1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等)  == 》 建议:因为 canvas 的组件层级(z-index)是最高的,无法通过层级改变,如自定义的弹框类似的组件总会被挡住   == 》 若不想给挡住,便要控制 canvas 隐藏(hidden 、 wx:if)  ...