将自己写的组件封装成类似element-ui一样的库,可以cdn引入

在写好自己的组件之后

第一步 修改目录结构

  在根目录下创建package文件夹,用于存放你要封装的组件

第二部

  在webpack配置中加入

  pages与publicpath同级

  pages: {

    index: {

      entry: ‘src/main.js‘,

      template: ‘public/index.html‘,

      filename: ‘index.html‘

    }

  },

第三部 编写组件

  在package文件夹下

  新建一个你的组件名的文件夹 

  里面存放一个你的组件的.vue文件

  再新建一个js文件  用于将你的组件暴露出来

  

    import Grid from ‘./grid.vue‘

    // 为组件提供 install 安装方法,供按需引入

    Grid.install = function (Vue) {

      Vue.component(Grid.name, Grid)

    }

    // 默认导出组件

    export default Grid;

第四步  在package文件夹下新建一个js 文件(我命名index.js)

  

  import Toolbar from ‘./toolbar/index‘;

  // 存储组件列表

  const components = [

    Toolbar

  ]

  // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册

  const install = function (Vue) {

    // 判断是否安装

    if (install.installed) return

    // 遍历注册全局组件

    components.map(component => Vue.component(component.name, component))

  }

  // 判断是否是直接引入文件

  if (typeof window !== ‘undefined‘ && window.Vue) {

    install(window.Vue)

  }

  export default {

    // 导出的对象必须具有 install,才能被 Vue.use() 方法安装

    install,

    // 以下是具体的组件列表

    Toolbar,

  }

最后一步

  package.json文件中添加命令

  "scripts": {

    "serve": "vue-cli-service serve",

    "build": "vue-cli-service build",

    "lint": "vue-cli-service lint",

    "lib": "vue-cli-service build --target lib --name my --dest lib packages/index.js"

  },

最后运行  npm run lib  就发现多了一个lib文件夹  里面就存放的你打包好的js以及css

参考:https://www.jb51.net/article/148692.htm

 

原文地址:https://www.cnblogs.com/Mr-Rshare/p/11022915.html

时间: 2024-08-28 05:22:49

将自己写的组件封装成类似element-ui一样的库,可以cdn引入的相关文章

vue + elementui 中的弹窗组件封装成公共组件

如果一个弹窗比较简单,可以直接放在页面中,通过visible属性的true,false控制显示隐藏就可以了,我们今天要说的是将个比较复杂的弹窗组件封装成全局组件,然后可以在项目中的任何一个页面引用~~下面走起 1.首先要注册个全局组件,用下面的全局API  Vue.component('my-component', { /* ... */ }) 在js文件中首先引入这个弹窗组件,组件名称是iesPersonRadioDialog,项目中会引入一个js文件,这个js文件中在分别引入其他的js,模块

Android Binder进程间通信---注册Service组件---封装进程间通信数据

本文参考<Android系统源代码情景分析>,作者罗升阳 一.测试代码: -/Android/external/binder/server ----FregServer.cpp ~/Android/external/binder/common ----IFregService.cpp ----IFregService.h ~/Android/external/binder/client ----FregClient.cpp Binder库(libbinder)代码: ~/Android/fra

造个自己的Vue的UI组件库类似Element

前言 随着前端的三大框架的出现,组件化的思想越来越流行,出现许多组件库.它能够帮助开发者节省时间提高效率, 如React的Ant-design,Vue的iView,Element等,它们的功能已经很完善了. 我写这遍文章的目的:记录自己搭建UI库的过程(对Vue的理解加深了好多)演示地址首先讲一下思路: 平常写组件时,写一个组件要用时直接导入就行了,如你写了一个time.vue,用的时候 import time from '路径' 现在要写一个组件库,是不是把所有组件一个文件夹里(如button

js封装成插件

由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件.感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了下如何封装.....虽然之前看了很多源码,但是感觉就算了解也是野路子..... 什么是封装呢? 我的理解就是 把一个功能单独做成一个组件,就像做饺子,以前做饺子必须自己先用面粉做饺子皮,再做饺子馅,然后再手工包饺子,但是现在人们发明了自动包饺子机器,虽然机器里面的每一步骤和你自己包饺子是一样的,但是

django-admin 仿写stark组件action,filter筛选过滤,search查询

写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染,所以StandLi这个类里面的方法如果你找不到就是在给前端传数据用的 tag.py 1 from django.conf.urls import url 2 from django.shortcuts import render, redirect, reverse 3 from django.ut

Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着不重复发明轮子的原则).于是我就在 GitHub 上找寻.确实找到了不少,但是与需求之间的差距还比较大.从零开始写又不太现实(时间摆在那里,加之自己的前端也是刚学,还没有从零开始手撸一个控件的能力),所以在已有组件的基础上进行二次封装便成了一个比较可行的方法(几乎也是唯一解).遂在 npm 上以 c

ReactNative: 将自定义的ReactNative组件制作成第三方库的详细流程(制作--&gt;发布)

一.简介 在讲本篇博文之前,需要你熟知怎么自定义ReactNative组件,然后才好学习将自定义的ReactNative组件制作成第三方库.本文中的自定义的ReactNative组件LoginManager API 源自上篇文章,所以需要先看一下上篇博文.言归正传,ReactNative的确提供了一个非常便捷的方式来扩展Native模块.如果要把模块做成第三方组件的话,还有一些工作要做:首先以一个静态库工程来编译模块代码,提供JavaScript的封装,最后创建Package.json来支持no

Angular 4 自定义组件封装遇见的一些事儿

你用Angular 吗? 一.介绍 说说封装Angular 组建过程中遇见的一些问题和感悟.用久了Angular,就会遇见很多坑,许多基于Angular开发的框架最喜欢做的事情就是封装组件,然后复用.....因为这是最省事的. 二.基本构建组件思想 界面构建草图 简要介绍上图: 1.View 就是我们需要完成的界面,但是界面无非就是由若干个label,button,table,img,list等一些基本控件构成的,所有的前端页面构成都是一样,只是加上CSS排版确定最后的显示效果. 2.五种基类,

Asp.net Core中使用NLog,并封装成公共的日志方法

1.安装NLog "NLog.Extensions.Logging": "1.0.0-rtm-alpha4" 2.配置NLog public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging&quo