25.03.2021
Vue.js — библиотека кнопок «поделиться» в соц. сетях
Писал на Vue.js проект, калькулятор-тулза для сео сайта. Само собой клиент захотел, что бы удобной утиллитой можно ыло легко делиться в соц. сетях и таким образом распространять ее.
Тут я задумался — обычно всегда брал плагины jQuery, но в этом проекте его нет, подключать ради одной функции не лучшая идея.. Искать начал готовые решения, и нашел библиотеку vue-share-buttons. Все здорово, но вот беда — в моем дизайн-макете иконки не стандартные, а она не поддерживает смену иконок.
Ищем гит, скачиваем, смотрим код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
export default { name: "TwitterShareButton", components: { Icon }, props: { url: { type: String, default: getDocumentHref }, description: { type: String, default: getDocumentTitle }, btnText: { type: String, default: "Twitter" }, modalWidth: { type: Number, default: 500 }, modalHeight: { type: Number, default: 500 }, hasIcon: { type: Boolean, default: true }, isBlank: { type: Boolean, default: true } } } |
Отлично, есть параметр скрытия иконки — просто добавим в шаблон вывод своей картинки, а в JS — передачу параметра:
1 2 3 4 5 |
.... ... |
1 2 3 4 5 6 7 8 |
export default { /* ....*/ props: { /* ....*/ customIcon: {type: String, default:""} } /* ....*/ } |
И вот результат, теперь легко при вызове компонента указать свои иконки социальных сетей. Вот так это делается:
1 2 3 4 5 6 7 |
..... |
1 2 3 4 5 6 7 8 9 10 11 12 |
import TwitterButton from "vue-share-buttons/src/components/TwitterButton"; import FacebookButton from "vue-share-buttons/src/components/FacebookButton"; /* ..... */ export default { /* ..... */ components:{ TwitterButton, FacebookButton, /* ..... */ } } |
Ссылочка на мой форк компонента (так же убрал sass — скомпилировал сразу все, на некоторых пк сложности с билдом sass).
https://github.com/misterzym/vue-share-buttons