Классификация плагинов
- Добавить глобальные методы или свойства, такие как: Vue-Element
- Добавьте глобальные ресурсы, такие как: инструкция v-bind
- некоторые примеси добавлены с помощью методов примесей
- Добавьте метод экземпляра Vue над Vue.prototype
Использование плагинов
Плагины используются через глобальный метод Vue.use(). Это нужно сделать до того, как вы вызовете новый Vue() для запуска приложения:
// 调用 `MyPlugin.install(Vue)`
Vue.use(MyPlugin)
new Vue({
//... options
})```
也可以传入一个选项对象:
``` javascript
Vue.use(MyPlugin, { someOption: true })
Разработка плагина
Плагин Vue.js имеет общедоступный метод установки. Первым параметром этого метода является конструктор Vue, вторым параметром являются параметры выбираемых объектов:
MyPlugin.install = function (Vue, options) {
// 1. 添加全局方法或属性
Vue.myGlobalMethod = function () {
// 逻辑...
}
// 2. 添加全局资源
Vue.directive('my-directive', {
bind (el, binding, vnode, oldVnode) {
// 逻辑...
}
...
})
// 3. 注入组件
Vue.mixin({
created: function () {
// 逻辑...
}
...
})
// 4. 添加实例方法
Vue.prototype.$myMethod = function (methodOptions) {
// 逻辑...
}
//5.直接注册组件
Vue.use();
}
На самом деле, какой бы метод ни использовался, конечной целью является его использование в проекте, и инкапсуляция его сама по себе с помощью параметра Vue установки
Упаковка компонентов с нуля
Требования: инкапсулировать плагин enoji для смайликов Weibo.
Подготовить
среда узла среда vue среда vue-cli строительные леса и т. д.
Создать проект
Используйте vue init для создания простых каркасов, а простая модификация может подойти для разработки плагинов.
vue init webpack-simple weibo-emoji
cd weibo-emoji
npm install
Каталог разработки выглядит следующим образом:
Реализация плагина
Конкретная логическая реализация проекта может перейти кздесьПосмотреть исходный код Наша обычная запись веб-пакета обычно имеет значение main.js для выполнения некоторых операций, таких как введение зависимостей и монтирование представления. Когда мы пишем плагин, само собой разумеется, что этот шаг монтирования будет опущен. Здесь мы можем использовать index.js в качестве нашего входного файла, и то, что выставлено, является объектом плагина с этим методом установки. код показывает, как показано ниже:
import weiboEmoji from './compontent/weibo_emoji'
const emoji = {
install(Vue, options) {
Vue.component(weiboEmoji.name, weiboEmoji);
}
}
if (typeof window !== 'undefined' && window.Vue) {
window.Vue.use(emoji);
}
export default emoji
выпускать
- Перед публикацией проверьте конфигурацию webconfig:
entry: './src/index.js',// 入口
output: {
path: path.resolve(__dirname, './dist'),//打包输出目录
publicPath: '/dist/',// 静态资源前缀
filename: 'vue-weibo-emoji.js', //打包生成文件的名字
library: 'WeiboEmoji', //umd 打包的时候模块的名字
libraryTarget: 'umd',//打包方式 amd
umdNamedDefine: true //打包未定义的时候使用默认名字
},
- Проверьте конфигурацию публикации:
"name": "weibo-emoji", // 打包的项目名,也就是modemodules里面的文件夹名字 也就是import from之后跟的名字
"main": "dist/vue-weibo-emoji.js", // 是访问到nodemodules依赖,实际引入的文件 相当于入口
"repository": {// 仓库 貌似仓库内容也不影响发布内容,填对就行
"type": "git",
"url": "https://github.com/icebluesky2666/weibo-emoji"
},
"description": "A Weibo emoji plugn",// 描述
"version": "1.0.2",// 版本
"author": "jhqin",// 作者
"license": "MIT",// license 类型
Для нескольких выпусков номер версии каждый раз должен быть разным.
- наконец:
npm build
npm login
npm publish
использовать
npm install weibo-emoji
import WeiboEmoji from 'weibo-emoji'
Vue.use(WeiboEmoji)
<weibo-emoji class="emoji" :weiboIcon="weiboIcon" @changeEmoji="selsctEmoji = arguments[0].phrase" ref="emoji"> </weibo-emoji>
Эффект:
исходный код
Из-за опыта, если есть какие-либо ошибки, пожалуйста, поправьте меня!