vue使用web-components

    

 

 userCard.js

(function () {

    // 配置模板

    const getEemplate = () => {

        // 创建模板

        const template = document.createElement('template');

        // 给模板设置id 方便查找

        template.id = 'userCardTemplate';

        template.innerHTML = `

    <style>

        :host {

                display: flex;

                align-items: center;

                width: 450px;

                height: 180px;

                background-color: #d4d4d4;

                border: 1px solid #d5d5d5;

                box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1);

                border-radius: 3px;

                overflow: hidden;

                padding: 10px;

                box-sizing: border-box;

                font-family: 'Poppins', sans-serif;

            }

     </style>

    <img class="image">

    <div class="container">

        <p class="name"></p>

        <p class="email"></p>

        <button class="button">Follow John</button>

    </div>

    `;

        return template;

    };

    // 讲模板放到dom结构中去

    const createEemplate = () => {

        document.body.appendChild(getEemplate());

    };

    createEemplate();

    class UserCard extends HTMLElement {

        constructor() {

            super();

            this.creatShadow();

            // 此处防止vue等框架类型的组件使用时 生命周期导致的参数异常 因此延迟绑定参数

            setTimeout(() => {

                this.creatContent();

            });

        }

        /**

         * 封闭内部dom

         */

        creatShadow() {

            this.shadow = this.attachShadow({mode: 'closed'});

        }

        /**

         * 创建内部显示内容

         */

        creatContent() {

            var templateElem = document.getElementById('userCardTemplate');

            var content = templateElem.content.cloneNode(true);

            content.querySelector('img').setAttribute('src', this.getAttribute('image'));

            content.querySelector('.container>.name').innerText = this.getAttribute('name');

            content.querySelector('.container>.email').innerText = this.getAttribute('email');

            this.shadow.appendChild(content);

        }

        /**

         * 当自定义元素第一次被连接到文档DOM时被调用

         * 相当于mounted

         */

        connectedCallback() {

            console.log('connectedCallback')

        }

        /**

         * 当自定义元素与文档DOM断开连接时被调用。

         * 与beforeDestroy类似

         */

        disconnectedCallback() {

            console.log('disconnectedCallback')

        }

        /**

         * 当自定义元素被移动到新文档时被调用。

         */

        adoptedCallback() {

            console.log('adoptedCallback')

        }

        /**

         * 当自定义元素的一个属性被增加、移除或更改时被调用。

         */

        attributeChangedCallback() {

            console.log('attributeChangedCallback')

        }

    }

    window.customElements.define('user-card', UserCard);

})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3.0是一种流行的JavaScript框架,用于构建用户界面。它具有响应式数据绑定和组件化的特性,使得开发者可以更轻松地构建交互式的Web应用程序。 Vue-video-player是一个基于Vue.js的视频播放器组件,它提供了一种简单的方式来在Vue应用程序中嵌入视频播放功能。它支持多种视频格式,包括MP4、WebM和Ogg等,并且提供了丰富的功能选项,如自定义控制条、全屏模式、播放速度调节等。 使用vue-video-player,你可以按照以下步骤来集成视频播放器到你的Vue 3.0应用程序中: 1. 首先,安装vue-video-player包。你可以使用npm或者yarn来进行安装: ``` npm install vue-video-player ``` 或者 ``` yarn add vue-video-player ``` 2. 在你的Vue组件中引入vue-video-player: ```javascript import VueVideoPlayer from 'vue-video-player'; import 'video.js/dist/video-js.css'; // 引入视频播放器样式 import 'vue-video-player/src/custom-theme.css'; // 引入自定义主题样式 export default { components: { VueVideoPlayer, }, // ... } ``` 3. 在模板中使用vue-video-player组件: ```html <template> <div> <vue-video-player :options="playerOptions"></vue-video-player> </div> </template> ``` 4. 在Vue组件的data选项中定义视频播放器的配置选项: ```javascript export default { data() { return { playerOptions: { sources: [{ src: 'path/to/your/video.mp4', type: 'video/mp4', }], // 其他配置选项... }, }; }, // ... } ``` 这样,你就可以在Vue应用程序中使用vue-video-player来播放视频了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值