hel-micro

我的博客

这篇文章少了图片(本地找不着了),可以在上面的链接中看到

关于

模块联邦sdk化,免构建、热更新、工具链无关的微模块方案

文档

开发并发布到npm

开发远程 vue 组件
####克隆模板库

克隆远程 vue 组件模板项目为rvc-xxx(名字请按实际需要修改,此处仅做示例)

https://github.com/hel-eco/hel-tpl-remote-vue-comp

改 package.json

nameappGroupName改为 hel 模块组名

  "name": " rvc-xxx",
  "appGroupName": " rvc-xxx",

开发组件

src/components目录下新增组件,并src/components/index文件里导出即可

例子

像是这里已经发布的一个版本(已打包):
link
我这里只修改了:
src/components/index.js:

/*  
|--------------------------------------------------------------------------  
|  
| 这些组件暴露给使用方  
|  
|--------------------------------------------------------------------------  
*/  
import App from './App.vue';  
import HelloWorld from './HelloWorld.vue';  
import Button from '@/components/button.vue'  
import add from './tools'  
  
export default {  
  App,  
  HelloWorld,  
  Button,  
  add  
};

src/components/button.vue:

<template>  
  <div class="button">  
    <slot></slot>  </div></template>  
  
<script>  
export default {  
  name: "button"  
}  
</script>  
  
<style scoped>  
.button {  
  border-radius: 4px;  
  padding: 0 3px;  
  margin: 3px 6px;  
}  
</style>

src/components/tools/index.js:

export default {  
    add: function (a, b) {  
        return a + b  
    }  
}

然后:

npm build
npm publish

即可,但是推送可能会有一定延迟
上面的例子是可以被调用的,这里写了一个button,一个add的方法

注意

在build之前改版本号
build之后的生成物是个版本号有关系的,如果版本号冲突,是无法推送的

调用(vue中)

我这里使用的例子:
link
会在上面的代码基础上进行增加并调用自己的远程库:

这里我在需要展示的vue文件中:

<template>  
  <div class="hello">  
    <h1>{{ msg }}</h1>  
    <p>      你好  
    </p>  
    <h5>下面这个是远程组件</h5>  
    <RemoteComp name="loaded in codesandbox"/>  
    <h5>下面这个是我自定义的组件</h5>  
    <remoteTest/>    <h5>下面这个是我的第二个组件</h5>  
    <remoteTestApp></remoteTestApp>    <h5>上面这个是远程组件</h5>  
    <button @click="remoteClick">点击加载</button>  
    <br>    <input type="text" v-model="a">+  
    <input type="text" v-model="b">  
    ={{ c }}  
    <button @click="add">add</button>  
  </div></template>  
  
<script>  
// https://github.com/hel-eco/hel-tpl-remote-vue-comp  
import comps from "hel-tpl-remote-vue-comps"  
  
import dtlib from 'ice-test-remote'  
  
console.log(dtlib)  
export default {  
  name: "HelloWorld",  
  components: {  
    RemoteComp: comps.App,  
    remoteTest: dtlib.HelloWorld,  
    remoteTestApp: dtlib.App  
  },  
  props: {  
    msg: String,  
  },  data () {  
    return {  
      a: 0,  
      b: 0,  
      c: 0  
    }  
  },  methods: {  
    async remoteClick () {  
      const helMicro = await import('hel-micro')  
      const lib = await helMicro.preFetchLib('hel-tpl-remote-lib', { versionId: '2.0.1' })  
      console.log(lib.num.random(22))  
    },    async add () {  
      const helMicro = await import('hel-micro')  
      const { add } = await helMicro.preFetchLib('ice-test-remote', { versionId: '1.5.2' })  
      // 调用自定义方法  
      this.c = add.add(parseInt(this.a), parseInt(this.b))  
    }  },  mounted () {  
  
  }}  
</script>  
  
<!-- Add "scoped" attribute to limit CSS to this component only -->  
<style scoped>  
h3 {  
  margin: 40px 0 0;  
}  
  
ul {  
  list-style-type: none;  
  padding: 0;  
}  
  
li {  
  display: inline-block;  
  margin: 0 10px;  
}  
  
a {  
  color: #42b983;  
}  
</style>

这里调用function目前是点击时触发加载,第一次加载时会比较慢
这里的组件:dtlib,comps是本地已经安装的
这里是在使用到的组件中单独引入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无名之辈无名之辈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值