默认暴露,分别暴露,整体暴露的再次学习及常用知识

76 篇文章 2 订阅
18 篇文章 1 订阅

三个暴露相同点

  1. 可以理解为都是暴露出一个对象给其他使用!

  2. 无论是哪一个暴露方式,想要直接获取到暴露出去的对象,可以使用

    import * as 名称 from "xxx.js"
    //比如
    import * as $API from "xxx.js"
    

默认暴露

  1. 默认暴露js代码里面,只可以有一个默认暴露(也就是只能由一个export default出现)否则出现Uncaught SyntaxError: Identifier '.default' has already been declared (at 1.js:2:8)报错
  2. 暴露出一个对象,直接就可以拿来使用

1.js内容

export default {
    a:10,
    b:100
}
//相当于向外暴露一个对象,对象当中只有一个default属性,值为暴露对象的值
// 上面暴露相当于是暴露下方对象给其他使用
{
    default:{
        a:10,
        b:100
    }
}

1.html内容

<body>
    <script type="module">
        // 默认暴露
        // 代码等同于 import {default as content} from "./1.js"
        import content from "./1.js"
        
        console.log(content);//输出{a: 10, b: 100}
    </script>
</body>

部分(分别)暴露

  1. 将暴露的内容汇聚成为一个对象给其他使用

1.js内容

export let a = 10;
export var b = function() { };
// 代码等同于暴露下方对象
{
    a: 10,
    b: function(){ }
}

1.html内容

<body>
    <script type="module">
        //部分(分别)暴露 并且进行解构赋值
        import { a, b } from "./1.js";
        console.log(a,b);//10   ƒ () { }
    </script>
</body>

整体(统一)暴露

1.js内容

//整体暴露
const a = 10;
let b = 10;
var c = {
    age:"18"
}
// 整体(统一)暴露只可以写成es6简写模式!
export {
    a,
    b,
    c
}
//整体(统一)暴露相当于暴露下方对象给其他使用
{
    a:10,
    b:10,
    c:{
        age:18
    }
}

1.html内容

<body>
    <script type="module">
        //整体暴露
        import * as content from "./1.js";
        console.log(content);//输出结果看图
    </script>
</body>

点开后

三种暴露获取暴露出去的对象

import * as 名称 from "xxx.js"
//比如
import * as $API from "xxx.js"
默认暴露
//js代码
	//默认暴露
export default {
    a:10,
    b:100
}
//html代码
<script type="module">
    // 默认暴露
    import * as content from "./1.js"
    console.log(content);//如图
</script>
输出结果如图

部分(分别)暴露
//js代码
	//部分(分别)暴露
export var a = 10;
export var b = function() { };

//html代码
<script type="module">
    // 部分(分别)暴露
    import * as content from "./1.js"
    console.log(content);//如图
</script>
输出结果如图

整体(统一)暴露
//js代码
	//整体暴露
const a = 10;
let b = 10;
var c = {
    age:"18"
}
export {
    a,
    b,
    c
}

//html代码
<script type="module">
    // 整体暴露
     import * as content from "./1.js"
     console.log(content);//如图
</script>
输出结果如图

默认暴露的引入并暴露一次性完成

  1. 在做项目的时候,有时候需要把所有的默认暴露的模块整合到一个模块当中去以便后期使用

    • 也就是 A.js ,B.js ,C.js ,D.js 模块统一在 All.js 当中引入
  2. 用法格式: import { default as 别名名称 } from "模块路径" 针对默认暴露

    //代码等同于
    
    // module1.js
    export default {
        a(){},
        b(){},
        C(){},
    }
    
    // All.js
    export {default as module1} from "./module1.js";
    //上面一行代码等同于下面二行代码的代码效果
        //1
    import {default as module1} from "./module1.js"
        //2
    export module1 {
        a(){},
        b(){},
        C(){}
    }
    
    
  3. 或者export * as xxx from "./1.js" 针对分别暴露

  4. 后期如果需要使用到 All.js 整合暴露的东西

    1. 比如绑定在Vue原型上: import * as A P I f r o m " . / A l l . j s " ; V u e . p r o t o t y p e . API from "./All.js"; Vue.prototype. APIfrom"./All.js";Vue.prototype.API = A P I ; 后 期 m o d u l e 1 就 这 样 子 t h i s . API; 后期module1就这样子this. API;module1this.API.module1.a(); this. A P I . m o d u l e 1. b ( ) ; t h i s . API.module1.b(); this. API.module1.b();this.API.module1.c();

总结

  • 默认暴露是一个对象default为属性defau1t后面值为值的一个对象只能写一次
  • 部分(分别)暴露是一个对象它是最终暴露出去的时候把所有暴露的变量自动封装到对象当中
  • 整体(统一)暴露是一个对象这个对象是我们自己需要写的,把所有的需要暴露的变量写到我们的对象当中
  • 7
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
对外暴露Dubbo服务的入口是在ServiceConfig的export()方法中。在该方法中,主要进行了三件事情:配置的校验和更新、暴露服务、分发服务暴露事件。具体来说,通过调用export()方法,可以将Dubbo服务暴露到本地JVM和远程两个范围内。 首先,Dubbo会进行服务的配置校验和更新。接着,Dubbo会根据配置的scope属性来确定服务的暴露范围,其中"none"表示不暴露服务,"local"表示仅暴露到本地JVM,"remote"表示暴露到远程。默认情况下,Dubbo会同时暴露到本地JVM和远程。 接下来,Dubbo会进行服务的本地暴露。在本地暴露阶段,Dubbo会根据URL的协议加载对应的Protocol实现,以Dubbo协议为例,对应的是DubboProtocol的export方法。在该方法中,Dubbo会创建DubboExporter对象,并将其存入exporterMap中。此外,Dubbo还会开启服务以供Consumer调用。 综上所述,对外暴露Dubbo服务的过程可以通过ServiceConfig的export()方法实现。在该方法中,Dubbo会进行配置的校验和更新、服务的暴露以及分发服务暴露事件。同时,Dubbo会根据配置的scope属性来确定服务的暴露范围,并根据URL的协议加载对应的Protocol实现进行服务的本地暴露。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Dubbo服务暴露流程](https://blog.csdn.net/qq_32099833/article/details/121863474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未成年梦想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值