六. 3、vue3 + ts 批量注册全局组件

注册全局组件的方法,可直接在组件中使用,无需引入!

1、新建存放全局组件插件的文件:src/components/SvgIcon/index.vue

<template>
  <!-- svg:图标外层容器借点,内部需要与use 标签结合使用 -->
  <svg :style="{ width: width, height: height }">
    <!-- xlink:href 执行的图标属性需为 #icon-图标名称 -->
    <use :xlink:href="prefix + name" :fill="color"></use>
  </svg>
</template>

<script setup lang="ts">
defineProps({
  //xlink:href属性值的前缀
  prefix: {
    type: String,
    default: '#icon-',
  },
  //svg矢量图的名字
  name: String,
  //svg图标的颜色
  color: {
    type: String,
    default: '',
  },
  //svg宽度
  width: {
    type: String,
    default: '20px',
  },
  //svg高度
  height: {
    type: String,
    default: '20px',
  },
})
</script>
<style scoped></style>

2、配置全局ts代码:src/components/index.ts

// 引入全局组件
import SvgIcon from '@/components/SvgIcon/src/Icon.vue' // svg图标
import Pagination from '@/components/Pagination/index.vue' // 分页器
// 全局对象
const allGloablComponent: any = { SvgIcon, Pagination}

const global = {
  // 函数名必须为install
  install(app: any) {
    // 注册项目全部全局组件
    Object.keys(allGloablComponent).forEach((key) => {
      // 注册组件为全局组件
      app.component(key, allGloablComponent[key])
    })
  },
}

export const setupGlobal = (app: any) => {
  app.use(global)
}

3、在main.ts中加入以下代码

// 全局组件
import { setupGlobal } from '@/components'

// 创建实例
const setupAll = async () => {
  const app = createApp(App)
  await   setupGlobal(app)
  app.mount('#app')
}

setupAll()

4、页面中使用:若有参数,传入指定参数即可。

5、页面显示

  • 43
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Bootstrap 是全球最受欢迎的前端组件库,用于开发响应式布局、移动设备优先的 WEB 项目。 Bootstrap 是一套用于 HTML、CSS 和 JS 开发的开源工具集。利用我们提供的 Sass 变量和大量 mixin、响应式栅格系统、可扩展的预制组件、基于 jQuery 的强大的插件系统,能够快速为你的想法开发出原型或者构建整个 app 。 下面是一些颇受关注的亮点: 从Less迁移到Sass: 现在,Bootstrap已加入Sass的大家庭中。得益于Libsass,Bootstrap的编译速度比以前更快; 改进网格系统:新增一个网格层适配移动设备,并整顿语义混合。 支持选择弹性盒模型(flexbox):这是项划时代的功能——只要修改一个Boolean变量,就可以利用flexbox的优势快速布局。 废弃了wells、thumbnails和panels,使用cards代替:Cards是个全新概念,但使用起来与wells、thumbnails及panels很像,且更方便。 将所有HTML重置样式表整合到Reboot中:在用不了Normalize.css的地方可以用Reboot了,它提供了更多选项。例如box-sizing: border-box、margin tweaks等都存放在一个单独的 Sass 文件中。 新的自定义选项:不再像上个版本一样,将渐变、淡入淡出、阴影等效果分放在单独的样式表中。而是将所有选项都移到一个Sass变量中。想要给全局或考虑不到的角落定义一个默认效果?很简单,只要更新变量值,然后重新编译就可以了。 不再支持IE8,使用rem和em单位:放弃对IE8的支持意味着开发者可以放心地利用CSS的优点,不必研究css hack技巧或回退机制了。使用rem和em代替px单位,更适合做响应式布局,控制组件大小。如果要支持IE8,只能继续用Bootstrap 3。 重写所有JavaScript插件:为了利用JavaScript的新特性,Bootstrap 4用ES6重写了所有插件。现在提供UMD支持、泛型拆解方法、选项类型检查等特性。 改进工具提示和popovers自动定位:这部分要感谢Tether工具的帮助。 改进文档:所有文档以Markdown格式重写,添加了一些方便的插件组织示例和代码片段,文档使用起来会更方便,搜索的优化工作也在进行中。 更多变化:支持自定义窗体控件、空白和填充类,此外还包括新的实用程序类等。
===============组件使用简要介绍=============== 1、在页面中引入ymPrompt.js。如:<script type="text/javascript" src="ymPrompt.js"></script> 2、在页面中引入对应的皮肤文件的CSS,如:<link rel="stylesheet" type="text/css" href="skin/qq/ymPrompt.css" /> 3、自定义组件的默认配置信息(此步骤可选,该方法可以在任意时间调用) 页面的js中通过ymPrompt.setDefaultCfg(cfg)方法修改组件部分或全部的默认属性。 如:ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}) 组件的默认配置(对于没有设定的项将采用该配置项的默认值): { titleBar:true, //显示标题栏 fixPosition:true, //随滚动条浮动 dragOut:false, //不允许拖出页面 autoClose:true, //点击按钮后自动关闭页面 maskAlphaColor:'#000', //遮罩透明色 maskAlpha:0.1, //遮罩透明度 winAlpha:0.8, //拖动窗体时 窗体的透明度,默认为0.8 title: '标题', //消息框标题 message: '内容', //消息框按钮 width: 300, //宽 height: 185, //高 iframe:false, btn:null, icoCls:'', handler: function(){} //回调事件 showMask: true, //是否显示遮罩 winPos: 'c', //弹出窗口默认位置 closeBtn:true, //是否显示关闭按钮 //按钮文本,可通过自定义这些属性实现本地化 closeTxt: '关闭', okTxt:' 确 定 ', cancelTxt:' 取 消 ' } 4、根据您的需要调用相应的消息函数(两种参数传入方式): ymPrompt.alert(参数) //消息提示类型 ymPrompt.succeedInfo(参数) //成功信息类型 ymPrompt.errorInfo(参数) //错误信息类型 ymPrompt.confirmInfo(参数) //询问消息类型 ymPrompt.win(参数) //自定义窗口类型 参数传入方式包含两种: 第一种即传统的参数传入,按照顺序传入相应的参数值即可(一定要按照顺序),对于不需要设定的值请传入null。如ymPrompt.alert('内容',null,null,'标题') 参数顺序:message,width,height,title,handler,maskAlphaColor,maskAlpha, iframe,icoCls,btn,autoClose,fixPosition,dragOut,titleBar,showMask,winPos,winAlpha (推荐)第二种即JSON的传入方式,需要指定字段名,没有顺序,根据需要设定相关属性。如ymPrompt.alert({title:'标题',message:'内容'}) 五个方法的参数意义完全相同(所有参数均为可选,不传入则使用默认参数值),具体含义如下: message:消息组件要显示的内容,默认为“内容”。 width:消息框的宽度,默认为300。 height:消息框的高度,默认为185。 title:消息组件标题,默认为“标题” handler:回调函数。当确定/取消/关闭按钮被点击时会触发该函数并传入点击的按钮标识。如ok代表确定,cancel代表取消,close代表关闭 maskAlphaColor:遮罩的颜色,默认为黑色。 maskAlpha:遮罩的透明度,默认为0.1。 fixPosition:设定是否弹出框随滚动条一起浮动,保持在屏幕的固定位置,默认为true dragOut:设定是否允许拖出屏幕范围,默认为false。 autoClose:设定用户点击窗口中按钮后自动关闭窗口,默认为true(设定为false后程序中可以通过调用close方法关闭)。 titleBar:是否显示标题栏,默认显示。注意,如果没有标题栏需要自己在程序中控制关闭。 showMask:是否显示遮罩层,默认为true winPos:弹出窗口的位置,支持8种内置位置(c,l,t,r,b,lt,rt,lb,rb)及自定义窗口坐标,默认为c。 各参数意义:c:页面中间,l:页面左侧,t:页面顶部,r:页面右侧,b:页面顶部,lt:左上角,rt:右上角,lb:左下角,rb:右下角 winAlpha:弹出窗体拖动时的透明度,默认为0.8 //以下三个参数主要用于win方法(当然你也可以通过设定这些覆盖前面四个消息类型的默认属性)。 iframe:是否使用iframe方法加载内容,该属性如果为true或者object,组件则尝试将message内容作为url进行加载(如果属性值为一个object,则将object的内容添加为iframe的属性,如iframe:{id:'myId',name:'myName',src:'http://www.baidu.com'}则iframe的id为myId,name为myName,src为http://www.baidu.com)。默认为false。 icoCls:图标类型。传入的内容为className,具体写法可以参考ymprompt.css中对图标的定义方式。默认为空。 btn:按钮定义。传入的是数组形式。每个按钮的格式为['按钮文本','按钮标识'], 如[['确定','ok'],['取消','cancel'],['关闭','close']]等。 注意单个按钮应该是这样的:[['确定','ok']] closeBtn:是否显示关闭按钮,默认为true(显示)。 //以下参数可用于对组件语言本地化,如用于英文等系统中 okTxt:确定按钮的文本描述,默认为“确定” cancelTxt:取消按钮的文本描述,默认为“取消” closeTxt:关闭按钮的文本描述(鼠标放在关闭按钮上时显示),默认为“关闭” 5、操作接口: 属性: version:当前版本号 如:alert(ymPrompt.version) pubDate:当前版本的发布日期 如:alert(ymPrompt.pubDate); cfg:组件的当前的默认配置 方法: setDefaultCfg(cfg):设定组件的默认属性,设定后的所有弹出均默认采用cfg中的设置。 如:ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}); //设定遮罩层颜色为蓝色,透明度0.2 getPage():在iframe窗口模式下,获取到iframe的dom对象。 如:alert(ymPrompt.getPage().contentWindow.document.body.outerHTML); //获取iframe页面的html内容 resizeWin(w,h):通过程序动态修改窗口的大小。参数:w:宽度,h:高度 如:ymPrompt.resizeWin(400,300); //修改弹出框宽度为400px,高度为300px doHandler(sign,autoClose):模拟触发某个按钮的点击事件。参数sign:传给回调函数的标识,autoClose:是否自动关闭窗口(默认采用全局配置) 如:ymPrompt.doHandler('ok',false); //触发确定按钮的点击事件,并且执行完回调函数后不关闭窗口 getButtons():获取当前弹出窗口的所有按钮对象,返回结果是一个对象集合(数组)。 如:var btnID=ymPrompt.getButtons()[0].id; //获取第一个按钮的id close():关闭当前弹出的窗口 如:ymPrompt.close() 6、其他说明:如果觉得“对象.方法”的调用方式比较麻烦,可以采用如下方式简化调用: 在调用之前设定var Alert=ymPrompt.alert。之后就可以使用Alert()的方式进行

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大大大大大白呢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值