二次封装elementui,封装成vue组件,并发布到npm上

elementui在开发vue项目时很好使,然而公司在开发时,总有一些特殊也常用的需求,比如整数框,elementui的’el-input-number’框限制数值,但是可以输入其他字符,blur时自动清空保留数值,但是公司要求不能输入其他字符,所以就需要根据公司的需求进行二次封装,并发布在npm上以便在项目中使用。

  1. 选择一个文件夹(组件库项目所在文件夹),在路径中输入cmd按下’回车‘打开终端
    打开终端

  2. 创建vue项目vue create myEle
    在这里插入图片描述

  3. vue项目创建成功后,目录结构如下:
    在这里插入图片描述

  4. 在components下添加若干个vue文件,用于封装组件。组件内容如下,以input_number为例。
    在这里插入图片描述

<template>
    <el-input-number id="InputNumber"
                     style="width: 100%;"
                     size="small"
                     placeholder="请输入整数"
                     percision="0"
                     :controls="false"
                     @keyup.native="valueChange"
                     @keydown.native="valueChange"
                     :max="100000000"
                     v-model="insideValue"
                     v-bind="$attrs"
                     v-on="$listeners">
    </el-input-number>
</template>

<script>
    export default {
        name: 'input_number',
        // 让父组件 v-model 传参
        model: {
            prop: 'numberValue',
            event: 'change',
        },
        props: {
            numberValue: {
                type: [Number, String],
                default: undefined,
            }
        },
        data() {
            return {
                insideValue: undefined
            };
        },
        methods: {
            valueChange(e) {
                e.target.value = e.target.value.replace(/[^\d]/g, '')
                if (e.target.value > 100000000) {
                    e.target.value = 100000000
                }
            }
        }
    };
</script>
<style lang="less" scoped>
    #InputNumber /deep/ .el-input__inner {
        text-align: left;
    }
</style>
  1. 在components下添加一个index.js文件,用于注册第四步封装的组件并暴露出方法。
import {message} from './message.js';
import InputNumber from './input_number';
import InputUserName from './input_userName';
import InputPassword from './input_password';
import PageLayout from './page_layout'
const MyEle = {
    install(Vue) {
        // 在此处添加自定义的全局组件
        Vue.component('InputNumber', InputNumber);
        Vue.component('InputUserName', InputUserName);
        Vue.component('InputPassword', InputPassword);
        Vue.component('PageLayout', PageLayout);
        //在此处添加自定义的全局方法
        Vue.prototype.$message = message;
    }
};
export default MyEle;
  1. 在main.js文件中引入组件
    在这里插入图片描述
  2. 在views文件夹下面新建一个usageExamples.vue文件,用于测试组件封装。
    在这里插入图片描述
  3. 运行项目,npm run serve,测试封装是否成功,若有报错,挨个查询解决即可。
  4. 第八步没有问题后,说明组件封装成功,接下来将组件包上传到npm。

组件包上传到npm

1.去npm官网注册一个账号,绑定qq邮箱。记住账号密码。
2.修改package.json。
在这里插入图片描述
在这里插入图片描述
3. 在package.json设置忽略发布文件。我们发布到 npm 中,只有编译后的 lib 目录、package.json、README.md才是需要被发布的设置。
在这里插入图片描述
4.登录npm账号。
在这里插入图片描述
5.执行npm run lib进行打包
6.步骤五成功后,目录会多一个lib文件夹,里面存放的是我们打包的文件
在这里插入图片描述
7.执行npm publish发布到npm上。
8.在其他项目安装npm install myEle
9.在其他项目main.js中引入
在这里插入图片描述

至此,封装组件,上传到npm,并在其他项目引用就完成了。注意:上传到npm时,每次都需要更改版本号。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种用于构建用户界面的渐进式JavaScript框架,它可以通过封装组件来实现可复用、模块化以及易于维护的代码。下面我将介绍如何对Vue组件进行封装,并将其打包发布npm上供他人使用。 首先,我们需要创建一个Vue项目,并在项目中使用Vue CLI来进行组件的开发和构建。可以通过以下命令创建一个新的Vue项目: ``` vue create my-component ``` 接下来,您可以通过Vue CLI支持的任何方式(如单文件组件、JavaScript脚本等)创建自定义组件。在组件的开发过程中,可以利用Vue提供的各种功能和特性,比如计算属性、生命周期钩子函数、模板语法等。确保你的组件功能完备、可复用且易于理解。 完组件的开发后,我们需要将其打包可用的npm包。Vue CLI可以帮助我们自动进行打包,只需执行以下命令: ``` npm run build ``` 该命令将生一个dist文件夹,其中包含了打包后的组件代码。 接下来,我们需要在项目的根目录中创建一个package.json文件,用于描述我们的npm包,并设置一些配置信息。其中,name字段用于定义npm包的名称,version字段用于定义npm包的版本号。其他字段根据您的需要进行设置。然后,执行以下命令将package.json文件拷贝到dist文件夹中: ``` cp package.json dist/ ``` 然后,我们需要登录到npm官方网站,并创建一个账户。接着,使用以下命令进行登录: ``` npm login ``` 在登录功后,使用以下命令发布npm包: ``` npm publish dist/ ``` 完上述步骤后,您的自定义Vue组件就已经发布到了npm上。其他开发者可以通过以下命令安装并使用您的组件: ``` npm install your-component ``` 然后,在他们的Vue项目中,可以通过import语句引入您的组件,并在模板中使用它。 至此,我们已经学习了如何封装自定义Vue组件,并通过npm发布,供他人使用。希望这能帮助到您!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值