首页 > 其他分享 >ES6代码暴露的三种方式

ES6代码暴露的三种方式

时间:2023-06-11 22:48:43浏览次数:40  
标签:ES6 exports console log qwe 暴露 module js 三种

JS模块化主要有 CommenJS(node)、JS module(es6)。

一、Commen JS

Commen JS主要是node环境中用于模块化开发,每一个js文件都是一个模块,有自己的作用域,其中的变量和函数都是私有的,对外部js文件不可见。

使用module.exports或exports关键字进行对外暴露,*可以在普通的js文件中使用*

1.text.js中的模块 module.exports写法(以下三中写法完全一样)

function a(){
  console.log('a');
}
function b(){
  console.log('b');
}
module.exports = {a,b}
module.exports = {
  a(){
    console.log('a');
  },
  b(){
    console.log('b');
  }
}
module.exports.a = function(){
  console.log('a');
}
 
module.exports.b = function(){
  console.log('b');
}

在index.js中使用require引用

const qwe = require('./text')
qwe.a()  // 'a'
qwe.b()  // 'b'

2.当使用module.exports暴露一个数据时,引用有所不同

// text.js中对外暴露的模块
module.exports = function(){
  console.log(123);
}
 
 
// index.js中引用
const qwe = require('./text')
qwe() // 注意此处直接调用即可

3.text.js中的模块 exports写法(只有一种写法)

exports.a = function(){
  console.log('a');
}
 
exports.b = function(){
  console.log('b');
}

在index.js中使用require引用

const qwe = require('./text')
qwe.a()  // 'a'
qwe.b()  // 'b'

二、JS module

JS module是es6中的语法,用来模块化的开发。使用export、import语法,有三种对外暴露方式:分别暴露、统一暴露、默认暴露。

JS module并不能在普通的js文件中使用

*exportimport关键字仅可在模块系统(如vue项目中)中使用----所以不能在普通的js脚本中使用*

1.分别暴露

test.js中的模块

export function a(){
  console.log('a');
}
export function b(){
  console.log('b');
}

index.js中引入

import {a,b} from './text.js'
a() // 'a'
b() // 'b'

2.统一暴露

test.js中的模块

function a(){
  console.log('a');
}

function b(){
  console.log('b');
}

export {a,b}

index.js中引入

import {a,b} from './text.js'
a() // 'a'
b() // 'b'

3.默认暴露

test.js中的模块

export default {
  a(){
    console.log('a');
  },
  b(){
    console.log('b');
  }
}

index.js中引入

import qwe from './text.js'
qwe.a() // 'a'
qwe.b() // 'b'

三、在HTML页面中使用JS module

在HTML页面中不能使用Commen JS,Commen JS用于node模块系统。

在HTML页面可以使用JS module,但是需要一些配置。

如test.js中的模块

export default {
  a(){
    console.log('a');
  },
  b(){
    console.log('b');
  }
}

在HTML(index.html)中引用

<script type="module">
    import qwe from './text.js'
 
    qwe.a() // 'a'
    qwe.b() // 'b'
</script>

注意点:

1.type = "module" 必须标识

2.引用路径必须使用相对路径

3.文件名不能省略 .js 后缀

4.必须使用 Live Server 插件运行(vs中安装即可)

如果不开启 Live Server 运行,而是直接双击HTML文件打开,会因为浏览器的安全机制不允许在本地运行,会当作跨域访问报错。

img

img

开启 Live Server,以域名的形式进行访问:

img

img

标签:ES6,exports,console,log,qwe,暴露,module,js,三种
From: https://www.cnblogs.com/javaxubo/p/17473771.html

相关文章

  • ES6箭头函数=>的用法
    基本语法:参数=>函数体1、当箭头函数没有参数或者有多个参数,要用()括起来。如()=>3+5、(a,b)=>a+b2、函数体是代码块(多行语句)时,用{}如()=>{varresult=a+b;returnresult;}3、当函数返回的是对象时,需要用()将对象包围起来如()=>({id:1,name:'小红'})4.1ES6函数......
  • Oracle 三种心跳机制
    前言对于集群的节点驱逐问题来说,我们可以通过集群心跳机制分为三大类:1.网络问题导致网络心跳超时发生的节点驱逐2.存储设备或链路问题导致磁盘心跳超时发生的节点驱逐3.服务器资源不足/CSSD进程故障导致本地心跳超时发生的节点驱逐本文主要在上述三个心跳机制的方向下,简述几种常......
  • Python三种方法统计4位自然数变为黑洞数6174所需次数分布
    对于各位数字互不相同的4位自然数,其各位数字能够组成的最大数减去能够组成的最小数,对得到的差进行同样的操作,7次之内必然得到6174。详见:使用Python验证6174猜想编写程序,统计各位数字互不相同的所有4位自然数变为6174所需要的操作次数,分别统计所需次数一样的数字个数,最后绘制柱状图......
  • 大家都说Java有三种创建线程的方式!并发编程中的惊天骗局!
    在Java中,创建线程是一项非常重要的任务。线程是一种轻量级的子进程,可以并行执行,使得程序的执行效率得到提高。Java提供了多种方式来创建线程,但许多人都认为Java有三种创建线程的方式,它们分别是继承Thread类、实现Runnable接口和使用线程池。但是,你们知道吗?其实在创建线程的过程中......
  • 墨菲定律 三种(is2120)
    根据“墨菲定律”:一、任何事都没有表面看起来那么简单;二、所有的事都会比你预计的时间长;三、会出错的事总会出错;四、如果你担心某种情况发生,那么它就更有可能发生。墨菲定律的原句是这样的:Iftherearetwoormorewaystodosomething,andoneofthosew......
  • java 实现对象排序,实现java对象排序的三种方式
    1.自然排序:要排序的对象类实现Comparable<>接口,重写其compareTo()方法,方法体中实现对象的比较大小规则2.自定义排序,需编写匿名内部类,先new一个Comparator接口的比较器对象c,同时实现compare()其方法;然后将比较器对象c传给Collections.sort()方法的参数列表中,实现排序功能,......
  • vue项目之vue-cli创建项目&目录结构&编写规范&es6导入导出语法
    1vue-cli创建项目#单页面应用:spa -以后vue项目就只有一个xx.html页面-定义很多组件,不可能都写在xx.html中#单文件组件(一个组件一个文件) https://v2.cn.vuejs.org/v2/guide/single-file-components.html#ad#一个组件中有的东西 1html内容:以后html都放......
  • .NET Core 实现 Windows 系统 Development、Staging、Production 三种环境的无感部署
    阅读目录〇、前言一、配置文件二、程序读取配置1.配置文件信息读取实现2.关于本机测试三、Windows服务器配置回到顶部〇、前言日常开发中,程序的环境切换是相当频繁的了,如果不同环境中的某些参数不同,那就需要每次编辑之前手动进行修改,比较麻烦,效率低下。本文......
  • 盘点| 三种移动跨平台方案
    跨平台技术是前端人必备技能,今天就来为大家解读一下近几年业界主流的三大移动端跨平台方案:Web天然跨平台:WebApp、PWA(ProgressiveWebApps)、HybridApp、PHA(ProgressHybridApp)都可以实现跨平台,WebView是一种基于浏览器内核的跨平台解决方案,通过在移动应用中嵌入一个浏览器......
  • 【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险
    问题描述在创建AzureAppService时,服务端的配置使用Java8+Tomcat8.5。默认的根目录页面显示出AppServiceTomcat版本信息,存在一定的安全隐患。如何来避免这个问题呢? 问题解答因为在初始创建AppService时,Azure会根据所选Stack,WebServer的信息默认生成首页内容。大多是情况......