Maison interface Web Voir.js Comment créer une bibliothèque de composants Vue à partir de zéro et la publier sur npm

Comment créer une bibliothèque de composants Vue à partir de zéro et la publier sur npm

Jan 13, 2022 pm 06:38 PM
vue组件

Comment créer une bibliothèque de composants Vue à partir de zéro et la publier sur npm ? L'article suivant vous guidera étape par étape dans le développement d'une bibliothèque de composants Vue à partir de zéro et verra comment la publier sur npm. J'espère qu'il vous sera utile.

Comment créer une bibliothèque de composants Vue à partir de zéro et la publier sur npm

1. Ouvrez le nouveau dossier dans le terminal et exécutez npm init -y

pour générer package.json comme suit. Notez que si vous souhaitez publier sur npm, le nom ne peut pas avoir de soulignements ni de majuscules. , etc.

{
  "name": "vuecomponentdi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
Copier après la connexion

2 , Établir la structure des répertoires

La structure des répertoires est la suivante

-- vueComponentDi
    -- packages
        -- button
            -- index.js
            -- index.vue
        -- toast
            -- index.js
            -- index.vue
    -- index.js
    -- package.json
Copier après la connexion

3.

export default function(){
    console.log('本地调试')
}
Copier après la connexion

    Créer un nouveau projet vue
  • vue create testvue
    Copier après la connexion
    Sous testvue Les dépendances de test sous package.json ajoutent l'adresse absolue de vueComponentDi/index.js
  • "devDependencies": {
        ...
        "vuecomponentdi": "F:/vueComponent@Di/vueComponentDi",//根据自己实际项目地址填写
        ...
        }
    Copier après la connexion
Exécuter le lien npm

    Exécuter le lien npm dans testvue vers le lien logiciel vuecomponentdi vers node_modules
vuecomponentdi install Eslint

    Depuis que testvue introduit les composants, la détection d'Eslint sera effectuée et une erreur sera signalée s'il n'est pas installé (testvue ferme Eslint pour omettre cette étape)
Méthode d'installation :
 npm install eslint@6.7.2 --save-dev
 ./node_modules/.bin/eslint --init
Copier après la connexion

Utilisez vuecomponentdi dans testvue

    import test depuis "vuecomponentdi"
  • <template>
      <div class="home">
        <img alt="Vue logo" src="../assets/logo.png">
        <HelloWorld msg="Welcome to Your Vue.js App"/>
      </div>
    </template>
    
    <script>
    // @ is an alias to /src
    import HelloWorld from &#39;@/components/HelloWorld.vue&#39;
    import test from "vuecomponentdi"
    export default {
      name: &#39;Home&#39;,
      components: {
        HelloWorld
      },
      created(){
        test()
      }
    }
    </script>
    Copier après la connexion
Impression de console>Débogage local

4 Développer un composant de bouton

.

  • button模块:进入vueComponentDi/packages/button/index.vue

type只支持传入primary属性,v-on="listeners"表示包含了父作用域中的(不含.native修饰器的)von事件监听器。它可以通过von="listeners"表示包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="listeners" 传入内部组件

<template>
    <div>
        <button class="di-button"  v-on="$listeners" :class="[type?`di-button--${type}`:&#39;&#39;]"><slot></slot></button>
    </div>
</template>
<script>
export default {
    name:"di-button",
    props:{
        type:String
    }
}
</script>
<style>
.di-button{
    display: inline-block;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
    background: #fff;
    border: 1px solid #dcdfe6;
    color: #606266;
    -webkit-appearance: none;
    text-align: center;
    box-sizing: border-box;
    outline: none;
    margin: 0;
    transition: .1s;
    font-weight: 500;
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    padding: 12px 20px;
    font-size: 14px;
    border-radius: 4px;
}
.di-button:focus, .di-button:hover {
    color: #409eff;
    border-color: #c6e2ff;
    background-color: #ecf5ff;
}
.di-button:active {
    color: #3a8ee6;
    border-color: #3a8ee6;
    outline: none;
}
.di-button--primary {
    color: #fff;
    background-color: #409eff;
    border-color: #409eff;
}
.di-button--primary:focus, .di-button--primary:hover {
    background: #66b1ff;
    border-color: #66b1ff;
    color: #fff;
}
.di-button--primary.is-active, .di-button--primary:active {
    background: #3a8ee6;
    border-color: #3a8ee6;
    color: #fff;
}
</style>
Copier après la connexion
  • button模块导出:进入vueComponentDi/packages/button/index.js

如果导出一个带有install函数的对象,则在Vue2中可以直接使用Vue.use(xx)调用此函数,既执行 Vue.component(name,option)创建了一个组件

import button from "./index.vue"
button.install=(Vue)=>{
    Vue.component(button.name,button)
}
export default button
Copier après la connexion
  • 聚合导出button:进入vueComponentDi/index.js

因为开发的组件不止一个,所以需要在入口文件统一导出

import diButton from "./packages/button"
export {
    diButton
}
Copier après la connexion
  • 在testvue使用
<template>
  <div class="home">
    <di-button type="primary">按钮</di-button>
  </div>
</template>
<script>
// @ is an alias to /src

import Vue from &#39;vue&#39;
import {diButton} from "vuecomponentdi"
Vue.use(diButton)
export default {
  name: &#39;Home&#39;
}
</script>
Copier après la connexion

5、开发一个toast弹窗

  • toast模块:vueComponentDi/packages/toast/index.vue

type只支持warning和success

<template>
    <div class="di-toast" :class="`di-toast--${type}`" v-if="show">
        {{message}}
    </div>
</template>
<script>
export default {
    data(){
        return {
            message:&#39;&#39;,
            show:false,
            type:&#39;&#39;
        }
    }
}
</script>
<style>
.di-toast{
    width: 60%;
    width: 200px;
    background: rgb(15, 15, 15);
    padding:3px;
    text-align: center;
    color: #fff;
    border-radius: 10px;
    position: fixed;
    left: calc(50% - 100px);
    top: 200px;
}
.di-toast--warning{
    background: #FDF6EC;
    color: #E6A28B;
}
.di-toast--success{
    background: #F0F9EB;
    color: #93C26D;
}
</style>
Copier après la connexion
  • toast模块导出:vueComponentDi/packages/toast/index.js

因为toast弹窗需要在vue中支持this.$toast调用,所以用了Vue.extend方法,这个 API 在日常开发中很少使用,一般在开发组件的时候它才能派上用场,官方定义:使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象

import toast from &#39;./index.vue&#39;
toast.install = (Vue) => {
    const toastConstructor = Vue.extend(toast);//使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。
    let $vm = new toastConstructor();//将这个子类实例化
    let $el = $vm.$mount().$el;//$vm执行$mount()手动挂载会返回一个带有$el的对象,$el就是一个dom对象
    document.querySelector("body").appendChild($el);//将这个dom对象添加到body中
    //在Vue原型上注入$toast方法
    Vue.prototype.$toast = (option) => {
        $vm.show = true
        if (!(option instanceof Object)) {
            //如果传的不是对象直接弹出
            $vm.message = option
        } else {
            $vm.message = option.message
            $vm.type = option.type
        }
        setTimeout(() => {
            $vm.show = false
        }, 2000)
    }
}


export default toast
Copier après la connexion
  • 聚合导出:vueComponentDi/index.js
import diButton from "./packages/button" 
import toast from "./packages/toast" 

export {
    diButton,
    toast
}
Copier après la connexion
  • vuetest中使用toast
<template>
  <div class="home">
    <di-button type="primary" @click="toast">按钮</di-button>
  </div>
</template>
<script>
// @ is an alias to /src

import Vue from "vue";
import { diButton, toast } from "vuecomponentdi";
Vue.use(diButton);
Vue.use(toast);
export default {
  name: "Home",
  methods: {
    toast() {
      // this.toast("这是一个普通弹窗");
      // this.$toast({
      //   message: "这是一个成功弹窗",
      //   type: "success",
      // });
      this.$toast({
        message: "这是一个警告弹窗",
        type: "warning",
      });
    },
  },
};
</script>
Copier après la connexion

6、发布到npm

  • 公有配置

组件开发完成需要发布到npm以便于别人使用;因为发布的是公有包,所以需要在vueComponentDi/package.json中配置

"publishConfig": {
    "access": "public"
  },
Copier après la connexion

完整package.json:

{
  "name": "vuecomponentdi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^8.2.0"
  },
  "publishConfig": {
    "access": "public"
  }
}
Copier après la connexion
  • 发布

npm发布很简单,只需要两个命令:

npm login
npm publish
Copier après la connexion

执行npm login需要你有npm账号,可以到 npm官网 注册

npm官网地址:https://www.npmjs.com/

发布完成之后就可以在任何一个vue2项目中安装使用了:

npm install vuecomponentdi
Copier après la connexion

git地址: vue组件开发(https://gitee.com/geeksdidi/vue-component-di)

【相关推荐:vue.js教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Communication des composants Vue : utilisez $destroy pour la communication de destruction de composants Communication des composants Vue : utilisez $destroy pour la communication de destruction de composants Jul 09, 2023 pm 07:52 PM

Communication entre composants Vue : utilisez $destroy pour la communication de destruction de composants Dans le développement de Vue, la communication entre composants est un aspect très important. Vue propose diverses façons d'implémenter la communication entre les composants, tels que les accessoires, l'émission, la vuex, etc. Cet article présentera une autre méthode de communication entre composants : utiliser $destroy pour la communication de destruction de composants. Dans Vue, chaque composant a un cycle de vie, qui comprend une série de fonctions hook de cycle de vie. La destruction de composants en fait également partie. Vue fournit un $de.

Comment Vue implémente-t-il la réutilisation et l'extension des composants ? Comment Vue implémente-t-il la réutilisation et l'extension des composants ? Jun 27, 2023 am 10:22 AM

Avec le développement continu de la technologie front-end, Vue est devenu l'un des frameworks les plus populaires en matière de développement front-end. Dans Vue, les composants sont l'un des concepts de base, qui peuvent diviser les pages en parties plus petites et plus faciles à gérer, améliorant ainsi l'efficacité du développement et la réutilisabilité du code. Cet article se concentrera sur la façon dont Vue implémente la réutilisation et l'extension des composants. 1. Mixins de réutilisation des composants Vue Les mixins sont un moyen de partager les options de composants dans Vue. Les mixins permettent de combiner les options de composants de plusieurs composants en un seul objet pour un maximum

Pratique Vue : développement de composants de sélecteur de date Pratique Vue : développement de composants de sélecteur de date Nov 24, 2023 am 09:03 AM

Vue Practical Combat : Développement de composants de sélecteur de dates Introduction : Le sélecteur de dates est un composant souvent utilisé dans le développement quotidien. Il peut facilement sélectionner des dates et fournit diverses options de configuration. Cet article expliquera comment utiliser le framework Vue pour développer un composant de sélecteur de date simple et fournira des exemples de code spécifiques. 1. Analyse des besoins Avant de commencer le développement, nous devons effectuer une analyse des besoins pour clarifier les fonctions et les caractéristiques des composants. Selon les fonctions communes des composants du sélecteur de date, nous devons implémenter les points de fonction suivants : Fonctions de base : capables de sélectionner des dates et

Communication des composants Vue : utilisation de la montre et calcul pour la surveillance des données Communication des composants Vue : utilisation de la montre et calcul pour la surveillance des données Jul 10, 2023 am 09:21 AM

Communication des composants Vue : utilisation de la surveillance et du calcul pour la surveillance des données Vue.js est un framework JavaScript populaire, et son idée principale est la composantisation. Dans une application Vue, les données doivent être transférées et communiquées entre différents composants. Dans cet article, nous présenterons comment utiliser la montre et le calcul de Vue pour surveiller et répondre aux données. watch Dans Vue, watch est une option qui peut être utilisée pour surveiller les modifications dans une ou plusieurs propriétés.

Comment utiliser des bibliothèques tierces dans les projets Vue Comment utiliser des bibliothèques tierces dans les projets Vue Oct 15, 2023 pm 04:10 PM

Vue est un framework JavaScript populaire qui fournit une multitude d'outils et de fonctionnalités pour nous aider à créer des applications Web modernes. Bien que Vue elle-même fournisse déjà de nombreuses fonctions pratiques, nous pouvons parfois avoir besoin d'utiliser des bibliothèques tierces pour étendre les capacités de Vue. Cet article expliquera comment utiliser des bibliothèques tierces dans les projets Vue et fournira des exemples de code spécifiques. 1. Introduire des bibliothèques tierces La première étape pour utiliser des bibliothèques tierces dans un projet Vue est de les introduire. Nous pouvons le présenter des manières suivantes

Compréhension approfondie du cycle de vie des composants de Vue Compréhension approfondie du cycle de vie des composants de Vue Oct 15, 2023 am 09:07 AM

Pour comprendre en profondeur le cycle de vie des composants de Vue, vous avez besoin d'exemples de code spécifiques Introduction : Vue.js est un framework JavaScript progressif privilégié par les développeurs pour sa simplicité, sa facilité d'apprentissage, son efficacité et sa flexibilité. Dans le développement de composants de Vue, la compréhension du cycle de vie des composants est un élément important. Cet article approfondira le cycle de vie des composants Vue et fournira des exemples de code spécifiques pour aider les lecteurs à mieux les comprendre et les appliquer. 1. Diagramme du cycle de vie des composants Vue Le cycle de vie des composants Vue peut être considéré comme un composant

Développement de composants Vue : méthode d'implémentation du composant de page à onglet Développement de composants Vue : méthode d'implémentation du composant de page à onglet Nov 24, 2023 am 08:41 AM

Développement de composants Vue : méthode d'implémentation du composant Tab Dans les applications Web modernes, la page à onglet (Tab) est un composant d'interface utilisateur largement utilisé. Le composant Tab peut afficher plusieurs contenus associés sur une seule page et les changer en cliquant sur l'onglet. Dans cet article, nous présenterons comment utiliser Vue.js pour implémenter un composant d'onglet simple et fournirons des exemples de code détaillés. La structure du composant onglet Vue Le composant onglet se compose généralement de deux parties : Onglet et Panneau. Les étiquettes sont utilisées pour identifier les surfaces

Comment basculer entre plusieurs méthodes d'interaction de données dans les composants Vue Comment basculer entre plusieurs méthodes d'interaction de données dans les composants Vue Oct 08, 2023 am 11:37 AM

Comment basculer entre plusieurs méthodes d'interaction de données dans les composants Vue Lors du développement de composants Vue, vous rencontrez souvent des scénarios dans lesquels vous devez passer à différentes méthodes d'interaction de données, telles que demander des données via des API, saisir des données via des formulaires ou transmettre des données en temps réel. via WebSocket, etc. Cet article présentera comment implémenter cette commutation de plusieurs méthodes d'interaction de données dans les composants Vue et fournira des exemples de code spécifiques. Méthode 1 : demande de données API Dans certains cas, nous devons demander des données via l'API pour obtenir des données de base. sous

See all articles