惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
Help Net Security
Help Net Security
P
Proofpoint News Feed
J
Java Code Geeks
爱范儿
爱范儿
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
Google DeepMind News
Google DeepMind News
H
Help Net Security
G
Google Developers Blog
Jina AI
Jina AI
Vercel News
Vercel News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
Lohrmann on Cybersecurity
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
GbyAI
GbyAI
B
Blog
O
OpenAI News
博客园_首页
Cisco Talos Blog
Cisco Talos Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News: Ask HN
Hacker News: Ask HN
TaoSecurity Blog
TaoSecurity Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
M
MIT News - Artificial intelligence
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
Y
Y Combinator Blog
C
Cisco Blogs
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
AI
AI
W
WeLiveSecurity
aimingoo的专栏
aimingoo的专栏
The Register - Security
The Register - Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale

博客园 - 匡匡

Vue 父子组件通信方式 WebClient 指定出口 IP IIS8 下 JS, CSS 等静态文件出现 500 错误 使用 ffmpeg 转换 mov 视频 使用 ildasm 和 ilasm 修改程序集的的引用信息 2020-01-08 工作日记:无题 .Net Core 程序集管理说明(加载) .NET CORE 动态加载 DLL 的问题 ASP.NET 后台 COOKIE 的设置 使用 sql server 默认跟踪分析执行的 SQL 语句 Nginx深入详解之upstream分配方式 使用 HttpWebRequest 类做 POST 请求没有应反 webpack 里的 import, exports 实现原理 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法 Flex 布局里 input 宽度最小 150px 的问题, 浏览器 BUG? 使用像素单位设置 EXCEL 列宽或行高 sweetalert 快速显示两个提示, 第二个显示不出的问题 加权轮询和加权随机算法 在 Docker 中部署 ASP.NET CORE 应用
Vue: 组件扩展
匡匡 · 2021-05-20 · via 博客园 - 匡匡

在 Vue 扩展一个组件,有几种方式:

全局混入

Vue.mixin({

});

全局混入,只能定义 Vue 组件生命周期的属性或方法, 定义其他属性或方法不生效,如:

Vue.mixin({
    methods: {

    },
    created: function() {

    },
    updated: function() {

    }
});

如果组件本身自己定义了 add 方法,则会调用组件本身的 add 方法,而不会调用这个全局混入的 add 方法。

如果混入生命周期的方法,如 updated, destory 等,组件本身的这些方法会执行, 然后再执行混入的这些方法。

组件混入

组件混入,是指把功能注入到指定的组件,可以先把通用功能提取出来,然后再注入到需要的组件上去:

// mixin.js
const mixin = {
    methods: {
        getSelectedData: function() {
            // 
        },

        deleteData: function() {
            //
        }
    }
}

// Vue Component
import mixin from './mixin.js'
export default {
    mixins: [ mixin ] // 指定混合的内容
}

全局混入和组件混入规则都是一样的。

混入总结

为什么要叫混入,而不叫扩展,是因为却实不是扩展了组件的对象,反而有点和 JavaScript 中对象的 原型链 一样, 当 Vue 框架在为某个事件调用指定的方法时,首先会检查组件本身是否有此方法,如果没有就检查组件混入信息,没有找到对应的方式再去全局混入信息中查找。 组件生命周期的方法,则混入的方法和组件本身的方法都会被调用。

组件扩展

Vue 框架为组件提供了另一种扩展, extends, 这种方式就是真的把两个对象的信息合并,组成新组件的内容:

export default {
    extends: Button,

    methods: {
        // 重写相应的方法
    }
}

如果继承了对象,只需要重写对应的方法,则可以创建一个 js 文件,直接按上面的方式继承并重写相关的方法,如果需要修改界面,有两种方式:

  1. 创建一个 vue 文件,并编写相应的 template 标签, 这样整个组件的 UI 都会被替换。
  2. 创建 JS 文件,继承组件,然后在 created 事件里通过 js 代码来修改 UI。

总结

看起来不太那么面像对象