Rumah hujung hadapan web View.js Cara membuat perpustakaan komponen Vue dari awal dan menerbitkannya ke npm

Cara membuat perpustakaan komponen Vue dari awal dan menerbitkannya ke npm

Jan 13, 2022 pm 06:38 PM
komponen vue

Bagaimana untuk mencipta perpustakaan komponen Vue dari awal dan menerbitkannya ke npm? Artikel berikut akan membimbing anda langkah demi langkah dalam membangunkan pustaka komponen Vue dari awal dan melihat cara untuk menerbitkannya ke npm saya harap ia akan membantu anda.

Cara membuat perpustakaan komponen Vue dari awal dan menerbitkannya ke npm

1 Cipta folder baharu, buka dalam terminal dan laksanakan npm init -y

Jana pakej .json adalah seperti berikut. Ambil perhatian bahawa jika anda ingin menerbitkan ke npm, nama itu tidak boleh mempunyai garis bawah, huruf besar, dsb.

{
  "name": "vuecomponentdi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
Salin selepas log masuk

2. Wujudkan struktur direktori

Struktur direktori adalah seperti berikut

-- vueComponentDi
    -- packages
        -- button
            -- index.js
            -- index.vue
        -- toast
            -- index.js
            -- index.vue
    -- index.js
    -- package.json
Salin selepas log masuk

3 🎜>

    vueComponentDi/index .js
export default function(){
    console.log('本地调试')
}
Salin selepas log masuk
    Buat projek vue baharu
vue create testvue
Salin selepas log masuk
Tambah vueComponentDi pada devDependency pergantungan ujian di bawah package.json di bawah alamat mutlak testvue /index.js

"devDependencies": {
    ...
    "vuecomponentdi": "F:/vueComponent@Di/vueComponentDi",//根据自己实际项目地址填写
    ...
    }
Salin selepas log masuk
    Laksanakan pautan npm
Laksanakan pautan npm dalam testvue ke pautan lembut vuecomponentdi ke dalam node_modules

    vuecomponentdi memasang Eslint
Memandangkan testvue akan memperkenalkan komponen, Eslint akan memperkenalkan pengesanan dilakukan dan ralat akan dilaporkan jika ia tidak dipasang (testvue boleh meninggalkan langkah ini dengan mematikan Eslint)

Kaedah pemasangan:

 npm install eslint@6.7.2 --save-dev
 ./node_modules/.bin/eslint --init
Salin selepas log masuk
    Gunakan vuecomponentdi dalam testvue
ujian import daripada "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>
Salin selepas log masuk
Pencetakan konsol>Penyahpepijatan setempat

4 . Bangunkan komponen butang

  • 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>
Salin selepas log masuk
  • 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
Salin selepas log masuk
  • 聚合导出button:进入vueComponentDi/index.js

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

import diButton from "./packages/button"
export {
    diButton
}
Salin selepas log masuk
  • 在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>
Salin selepas log masuk

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>
Salin selepas log masuk
  • 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
Salin selepas log masuk
  • 聚合导出:vueComponentDi/index.js
import diButton from "./packages/button" 
import toast from "./packages/toast" 

export {
    diButton,
    toast
}
Salin selepas log masuk
  • 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>
Salin selepas log masuk

6、发布到npm

  • 公有配置

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

"publishConfig": {
    "access": "public"
  },
Salin selepas log masuk

完整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"
  }
}
Salin selepas log masuk
  • 发布

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

npm login
npm publish
Salin selepas log masuk

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

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

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

npm install vuecomponentdi
Salin selepas log masuk

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

【相关推荐:vue.js教程

Atas ialah kandungan terperinci Cara membuat perpustakaan komponen Vue dari awal dan menerbitkannya ke npm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah Vue melaksanakan penggunaan semula dan sambungan komponen? Bagaimanakah Vue melaksanakan penggunaan semula dan sambungan komponen? Jun 27, 2023 am 10:22 AM

Dengan pembangunan berterusan teknologi bahagian hadapan, Vue telah menjadi salah satu rangka kerja yang popular dalam pembangunan bahagian hadapan. Dalam Vue, komponen ialah salah satu konsep teras, yang boleh memecahkan halaman kepada bahagian yang lebih kecil dan lebih mudah diurus, dengan itu meningkatkan kecekapan pembangunan dan kebolehgunaan semula kod. Artikel ini akan menumpukan pada cara Vue melaksanakan penggunaan semula dan sambungan komponen. 1. Campuran guna semula komponen Vue Mixins ialah cara untuk berkongsi pilihan komponen dalam Vue. Mixin membenarkan pilihan komponen daripada berbilang komponen digabungkan menjadi satu objek untuk maksimum

Komunikasi komponen Vue: gunakan $destroy untuk komunikasi pemusnahan komponen Komunikasi komponen Vue: gunakan $destroy untuk komunikasi pemusnahan komponen Jul 09, 2023 pm 07:52 PM

Komunikasi komponen Vue: Gunakan $destroy untuk komunikasi pemusnahan komponen Dalam pembangunan Vue, komunikasi komponen merupakan aspek yang sangat penting. Vue menyediakan pelbagai cara untuk melaksanakan komunikasi komponen, seperti props, emit, vuex, dsb. Artikel ini akan memperkenalkan satu lagi kaedah komunikasi komponen: menggunakan $destroy untuk komunikasi pemusnahan komponen. Dalam Vue, setiap komponen mempunyai kitaran hayat, yang merangkumi satu siri fungsi cangkuk kitaran hayat. Pemusnahan komponen juga merupakan salah satu daripadanya Vue menyediakan $de

Amalan Vue: pembangunan komponen pemilih tarikh Amalan Vue: pembangunan komponen pemilih tarikh Nov 24, 2023 am 09:03 AM

Pertempuran Praktikal Vue: Pembangunan Komponen Pemilih Tarikh Pengenalan: Pemilih tarikh ialah komponen yang sering digunakan dalam pembangunan harian Ia boleh memilih tarikh dengan mudah dan menyediakan pelbagai pilihan konfigurasi. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Vue untuk membangunkan komponen pemilih tarikh yang mudah dan menyediakan contoh kod khusus. 1. Analisis keperluan Sebelum memulakan pembangunan, kita perlu menjalankan analisis keperluan untuk menjelaskan fungsi dan ciri-ciri komponen. Menurut fungsi komponen pemilih tarikh biasa, kita perlu melaksanakan titik fungsi berikut: Fungsi asas: dapat memilih tarikh, dan

Komunikasi komponen Vue: menggunakan jam tangan dan dikira untuk pemantauan data Komunikasi komponen Vue: menggunakan jam tangan dan dikira untuk pemantauan data Jul 10, 2023 am 09:21 AM

Komunikasi komponen Vue: menggunakan jam tangan dan dikira untuk pemantauan data Vue.js ialah rangka kerja JavaScript yang popular dan idea terasnya ialah komponenisasi. Dalam aplikasi Vue, data perlu dipindahkan dan disampaikan antara komponen yang berbeza. Dalam artikel ini, kami akan memperkenalkan cara menggunakan jam tangan Vue dan dikira untuk memantau dan bertindak balas kepada data. watch Dalam Vue, jam tangan ialah pilihan yang boleh digunakan untuk memantau perubahan dalam satu atau lebih sifat.

Cara menggunakan perpustakaan pihak ketiga dalam projek Vue Cara menggunakan perpustakaan pihak ketiga dalam projek Vue Oct 15, 2023 pm 04:10 PM

Vue ialah rangka kerja JavaScript popular yang menyediakan pelbagai alatan dan ciri untuk membantu kami membina aplikasi web moden. Walaupun Vue sendiri sudah menyediakan banyak fungsi praktikal, kadangkala kita mungkin perlu menggunakan perpustakaan pihak ketiga untuk memperluaskan keupayaan Vue. Artikel ini akan memperkenalkan cara menggunakan perpustakaan pihak ketiga dalam projek Vue dan memberikan contoh kod khusus. 1. Memperkenalkan perpustakaan pihak ketiga Langkah pertama untuk menggunakan perpustakaan pihak ketiga dalam projek Vue ialah memperkenalkannya. Kita boleh memperkenalkannya dengan cara berikut

Pemahaman mendalam tentang kitaran hayat komponen Vue Pemahaman mendalam tentang kitaran hayat komponen Vue Oct 15, 2023 am 09:07 AM

Untuk memahami dengan mendalam kitaran hayat komponen Vue, anda memerlukan contoh kod khusus Pengenalan: Vue.js ialah rangka kerja JavaScript progresif yang digemari oleh pembangun kerana kesederhanaan, kemudahan pembelajaran, kecekapan dan fleksibiliti. Dalam pembangunan komponen Vue, memahami kitaran hayat komponen adalah bahagian penting. Artikel ini akan menyelidiki kitaran hayat komponen Vue dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menerapkannya dengan lebih baik. 1. Gambar rajah kitaran hayat komponen Vue Kitaran hayat komponen Vue boleh dianggap sebagai komponen

Cara bertukar antara kaedah interaksi data berbilang dalam komponen Vue Cara bertukar antara kaedah interaksi data berbilang dalam komponen Vue Oct 08, 2023 am 11:37 AM

Cara menukar antara kaedah interaksi data berbilang dalam komponen Vue Apabila membangunkan komponen Vue, anda sering menghadapi senario di mana anda perlu menukar kepada kaedah interaksi data yang berbeza, seperti meminta data melalui API, memasukkan data melalui borang atau menolak data dalam masa nyata. melalui WebSocket, dsb. Artikel ini akan memperkenalkan cara melaksanakan penukaran kaedah interaksi data berbilang dalam komponen Vue dan memberikan contoh kod khusus. Kaedah 1: Data permintaan API Dalam sesetengah kes, kami perlu meminta data melalui API untuk mendapatkan data latar belakang. bawah

Nota pembangunan Vue: Cara menangani struktur dan algoritma data yang kompleks Nota pembangunan Vue: Cara menangani struktur dan algoritma data yang kompleks Nov 22, 2023 am 08:08 AM

Dalam pembangunan Vue, kita sering menghadapi situasi di mana kita berurusan dengan struktur data dan algoritma yang kompleks. Masalah ini mungkin melibatkan sejumlah besar operasi data, penyegerakan data, pengoptimuman prestasi, dsb. Artikel ini akan memperkenalkan beberapa pertimbangan dan teknik untuk menangani struktur data dan algoritma yang kompleks untuk membantu pembangun menangani cabaran ini dengan lebih baik. 1. Pemilihan struktur data Apabila berurusan dengan struktur data dan algoritma yang kompleks, adalah sangat penting untuk memilih struktur data yang sesuai. Vue menyediakan banyak struktur dan kaedah data, dan pembangun boleh memilih struktur data yang sesuai mengikut keperluan sebenar. nombor yang biasa digunakan

See all articles