В этой статье мы узнаем, как создать плагин vue и распространить его в npm, чтобы другие могли установить и использовать файлы .
Плагины значительно повышают эффективность разработки разработчиков. Большинство наших проектов полагаются на них из-за их способности выпускать новые функции с головокружительной скоростью.
Как указано в официальной документации Vue.js, количество плагинов не ограничено. Обычно мы хотим добиться следующих пяти функций:
- Добавьте глобальные методы или свойства (например:vue-custom-element)
- Добавьте глобальные ресурсы: директивы/фильтры/переходы и т. д. (например:vue-touch)
- Добавьте некоторые параметры компонента с помощью глобальных методов миксина (например:vue-router)
- Добавьте методы экземпляра Vue, добавив их в Vue.prototype (например:vue-axios)
- Библиотека, которая предоставляет собственный API, предоставляя при этом одну или несколько функций, упомянутых выше (например:vue-router)
Хорошо, теперь вы понимаете, что такое плагин vue и какие потребности он может удовлетворить!
Как использовать плагин проекта vue
пройти черезnpm installилиyarn addПосле установки плагина вам нужно импортировать его в свой файл main.js и вызватьVue.use()глобальный метод.
Примечание. Все плагины должны быть созданы перед вызовом new Vue().
import Vue from "vue";
import MyPlugin from "myplugin";
Vue.use(MyPlugin);
new Vue({
// [...]
})
Если пакет подключаемого модуля поддерживает ссылку cdn, на него также можно ссылаться следующими способами:
<script src="https://cdn.xxx.cn/npm/myplugin@latest/dist/myplugin.min.js"></script>
Кроме того, когда вы вызываете Vue.use() и хотите выполнить некоторую пользовательскую настройку для плагина, вы можете сделать это:
Vue.use(MyPlugin, {
option1: false,
option2: true
})
Например, при внедрении популярныхElement UIбиблиотека, она поддерживает передачу объекта глобальной конфигурации
import Element from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Element, {
// size 用于改变组件的默认尺寸,zIndex 设置弹框的初始 z-index(默认值:2000)
size: 'small',
zIndex: 3000
});
А теперь к делу! Начните создавать свой первый плагин vue 💪
сделать классный компонент кнопки
Как начинающий фронтенд, я считаю, что когда вы разрабатываете проекты в своей компании, вы обязательно подумаете: «Если у компании есть собственный набор библиотек компонентов пользовательского интерфейса, это должно быть здорово!». Если у вас есть эта идея, то после того, как вы внимательно прочитаете эту статью, она принесет вам много вдохновения и вдохновения.
Шаг 1: Инициализируйте структуру каталогов плагинов
Сначала создайте пустую папку проекта, назовите ее произвольно, а затем инициализируйте генерациюpackage.jsonфайл (содержимое файла будет представлено позже)
$ mkdir ku-button && cd ku-button
$ npm init
# 上面这个命令会提示一些问题,一直回车就行,然后最后会创建一个package.json文件
Затем в корневом каталоге проекта создайтеsrcпапку, создайте новуюKuButton.vueкомпонент, здесь вы даже можете передать vuevue serveа такжеvue buildКомандная строка для быстрого создания прототипа одного файла *.vue, но предполагается, что сначала необходимо установить дополнительное глобальное расширение.
$ npm install -g @vue/cli
$ npm install -g @vue/cli-service-global
После завершения установки при успешном выполнении следующей командной строки:
$ vue serve KuButton.vue
можно получить прямо в браузереhttp://localhost:8080/
Чтобы узнать больше о быстром прототипировании vue, вы можете проверитьофициальная документация
Далее начинаем улучшатьButtonКод компонента кнопки, пусть работает!
Шаг 2. Уточните код компонента, чтобы сделать кнопку настраиваемой
Здесь я буду подражатьElementUI库изКомпонент кнопки, чтобы показать свои чудеса всем!
Шаблон Шаблон
<template>
<button
:class="[
'ku-button',
'ku-button--' + type,
'ku-button--' + size,
{
'ku-button--round': round
}
]"
@click="onClick">
<slot></slot>
</button>
</template>
JavaScript
<script>
export default {
props: {
type: {
type: String,
default: 'default',
validator(type) {
return ['default', 'primary', 'info', 'warning', 'danger'].includes(type)
}
},
round: {
type: Boolean,
default: false
},
size: {
type: String,
default: "medium",
validator(size) {
return ["medium", "small", "mini"].includes(size)
}
},
},
methods: {
onClick(event) {
this.$emit("click", event);
}
}
};
</script>
стиль
<style>
.ku-button {
display: inline-block;
outline: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
user-select: none;
cursor: pointer;
line-height: 1;
white-space: nowrap;
background-color: #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;
padding: 12px 20px;
font-size: 14px;
border-radius: 4px;
}
/*颜色*/
.ku-button--default {
}
.ku-button--primary {
color: #fff;
background-color: #409eff;
border-color: #409eff;
}
.ku-button--success {
color: #fff;
background-color: #67c23a;
border-color: #67c23a;
}
.ku-button--info {
color: #fff;
background-color: #909399;
border-color: #909399;
}
.ku-button--warning {
color: #fff;
background-color: #e6a23c;
border-color: #e6a23c;
}
.ku-button--danger {
color: #fff;
background-color: #f56c6c;
border-color: #f56c6c;
}
/*大小*/
.ku-button--medium {
padding: 10px 20px;
font-size: 14px;
border-radius: 4px;
}
.ku-button--small {
padding: 9px 15px;
font-size: 12px;
border-radius: 3px;
}
.ku-button--mini {
padding: 7px 15px;
font-size: 12px;
border-radius: 3px;
}
/*是否圆角*/
.ku-button--round {
border-radius: 20px;
}
</style>
Затем мы можем использовать его следующим образом:
<ku-button type="success" size="mini" round>小按钮</ku-button>
Хотя я упростил шаблон кнопки, вот несколько важных моментов обучения:
- Используется спецификация БЭМ. (Для получения дополнительной информации о БЭМ см.проверить здесь)
- Получите 3 параметра (тип кнопки, размер кнопки, закругленная кнопка или нет) через конфигурацию реквизита, чтобы пользователи могли переключать кнопки с разными темами в любое время.
- Слот слота используется, поэтому мы можем использовать текст кнопки, как этот
- Определяет событие @click, которое запускает $emit при щелчке компонента.
Шаг 3: Напишите метод установки
Статья, упомянутая ранееVue.use()метод, при вызове он будет выполнятьсяinstallметод, первый параметр этого метода — конструктор Vue, а второй параметр — необязательный объект параметров.
Ниже мыsrcсоздатьindex.jsфайл, а затем пропишите в нем:
import KuButton from "./KuButton.vue"
export default {
install(Vue, options) {
// 注册全局组件
// https://cn.vuejs.org/v2/guide/components-registration.html
Vue.component("ku-button", KuButton)
}
}
На данный момент, полный плагин почти готов! 👏
Шаг 4. Заполните файл package.json в корневом каталоге.
только что открылnpm initСоздан файл package.json
{
"private": false,
"name": "ku-button",
"version": "1.0.0",
"description": "A niubility button",
"author": "sugars",
"license": "MIT",
"main": "./dist/index.umd.js",
"scripts": {
"dev": "vue serve KuButton.vue"
},
"files": [
"dist"
],
"devDependencies": {
"bili": "^4.7.3",
"rollup-plugin-vue": "^5.0.0",
"vue-template-compiler": "^2.6.10"
}
}
проиллюстрировать:
-
privateКогда свойство имеет значение false, это означает, что ваш пакет не является приватным, каждый может его просмотреть и использовать npm install. -
nameАтрибут относится к имени пакета, когда он впоследствии публикуется в npm, убедитесь, что имя вашего пакета не зарегистрировано. -
versionАтрибут относится к номеру версии пакета, и вам необходимо увеличивать номер версии каждый раз, когда вы публикуете обновление в npm. вы можете увидеть большеСемантический номер версиизнание -
descriptionАтрибут относится к информации описания пакета. Пишите его так, чтобы все знали, для чего нужен ваш пакет. -
mainАтрибут указывает файл входа для загрузки пакета, и require('moduleName') загрузит этот файл. Значение этого поля по умолчанию — index.js в корневом каталоге модуля. -
scriptsАтрибут указывает аббревиатуру командной строки npm для запуска команды скрипта.Например, build указывает команду, которая будет выполняться при запуске npm run build. -
filesВ атрибутах можно указать, какие файлы нужно публиковать в npm, например, здесь указываются все файлы в папке dist
ты сможешьофициальная документация нпмувидеть больше оpackage.jsonзнание
Пакет
Инструмент упаковки, который я использую здесь,Bili, мощный, быстрый инструмент для создания пакетов с нулевой конфигурацией.
Начните установку инструмента упаковки:
$ npm install --save-dev bili
$ npm install --save-dev rollup-plugin-vue
$ npm install --save-dev vue-template-compiler
Затем создайтеbili.config.jsФайл конфигурации, конфигурация выглядит следующим образом:
module.exports = {
banner: true,
output: {
extractCSS: false,
format: ['umd'],
moduleName: 'KuButton'
},
plugins: {
vue: true
}
}
После завершения вам нужно только выполнить команду для завершения упаковки, это так просто:
$ bili
После успешной установки пакета в корневом каталоге проекта будет создан файлdistпапка, естьindex.umd.jsдокумент
Поделитесь своей работой на npm
На этом этапе ваш плагин vue разработан. Остался последний шагnpmjsОпубликуйте свой плагин на ! Но предпосылка в том, что вам нужно иметь учетную запись npmjs, если нет, вам нужно перейти нарегистрВо-первых, вы можете пропустить этот шаг, если он у вас есть.
Откройте терминал и введите:
$ npm login
// 回车后,输入你注册npmjs时填写的用户名,密码和邮箱
// 登录成功后,会提示:Logged in as <username> on https://registry.npmjs.org/.
Проверьте текущий статус входа пользователя npm:
$ npm whoami
// 如果登录成功,输出的是登录的用户名
Убедившись, что все вышеперечисленные шаги выполнены правильно, введите только что выполненныйku-buttonКаталог проекта, начните публикацию:
$ npm publish
После успешного выполнения ваш плагин официально выпущен! ! 🎉
Если вы хотите обновить плагин позже, вам нужно только добавитьpackage.jsonвнутреннийversionномер версии, затем выполнить сноваnpm publishОпубликовать обновление и все!
Недавно выпущенный плагин используется в проекте
Вы можете установить его, как и любой другой плагин:
$ npm install --save ku-button
或者
$ yarn add ku-button
Далее, вmain.jsЦитировать:
import KuButton from "ku-button"
import Vue from "vue"
Vue.use(KuButton)
Наконец, на вашей странице вот так:
<ku-button round type="success" size="small">真酷!!</ku-button>
прикреплятьадрес гитхаба
Это заканчивается здесь! Не забудьте поставить лайк! 👍
При перепечатке этой статьи просьба указывать автора и источник статьи!