vue单文件props写法_vue开发中怎么按需加载需要被填入props和自定义事件的组件?...
这种场景你可能需要把模态框包装成插件。vue插件开发和组件的区别 - 水秋玄im.mkinit.com
vue插件和组件的区别
使用插件的方式包装组件和直接注册全局组件其实是一样的,都是注册组件。不同的是,一般组件我们是作为页面的某一块结构,按需引用,但是有些应用场景你可能会用到也可能用不到,总之就是你不知道什么时候会用到,总不能在每个页面都引用吧。再一个,控制组件需要传递props,也就是说每次引用都需要写方法才能达到控制的目的。
所以一般组件就不适合轻提示、加载动画、模态框这种随时需要的功能,所以需要把组件包装成插件,直接添加到页面上(一般是插入到body),再通过在vue的原型上添加全局功能,使用自定义的方法(api)来控制组件。
vue的组件就是组件,没有其他。但是插件不仅仅限于组件,它也可以包装过滤器、混入、自定义指令。这就是组件和插件的区别。
插件的开发(以轻提示为例子,同时也演示过滤器、混入、自定义指令)
不存在的目录自行创建
1、首先创建一个单文件组件(src/plugins/js2-vuepluginsdemo/js2-vuepluginsdemo.vue)
这就是一个普通的组件
export default {
name:'toast',
data(){
return {
show:false,
message:''
}
}
}
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.toast{
position:fixed;
z-index:100;
left:50%;
top:50%;
transform: translate(-50%,-50%);
padding:1em 2em;
background-color:rgba(0,0,0,.9);
color:#FFF;
}
2、创建一个暴露install方法的模块(src/plugins/js2-vuepluginsdemo/js2-vuepluginsdemo.js)
这个插件包含了轻提示组件、混入、过滤、自定义指令这几个基本功能,都可以全局使用。
import toast_component from './js2-vuepluginsdemo.vue'
export default {
//插件需要暴露一个install方法作为回调函数,接收Vue和配置参数
install: (Vue, options) => { //options 是use时可以传递的参数
console.log(options)
/*
* 定义一个全局混入,混入到所有组件中
*/
Vue.mixin({
methods: {
sayhi() { //所有组件都拥有该方法
console.log(this, 'sayhi');
}
},
mounted() { //所有组件都会输出
this.sayhi()
}
})
/*
* toast 组件插件
*/
const component = Vue.extend(toast_component) //创建一个组件构造器
const toast = new component({
name:''
data: { //可通过构造时传参初始化数据
'js2': '我是通过构造器传递的参数'
}
}) //实例化组件
toast.$mount()//$mount 如果没有参数,模板将被渲染为文档之外的的元素,必须使用原生 DOM API 把它插入文档中。
document.body.appendChild(toast.$el)//手动插入到body
Vue.prototype.$toast = (msg, duration = 1500) => {//在Vue的原型上创建一个方法作为全局方法,操作的是组件中的data数据
toast.message = msg;
toast.show = true;
setTimeout(() => {
toast.show = false;
}, duration);
}
/*
* 定义一个全局指令
*/
Vue.directive('focus',{
inserted(ele){
ele.focus()
}
})
/*
* 定义一个全局过滤器
*/
Vue.filter('length',value=>{
return value.length
})
}
}
3、注册插件
在入口文件(main.js)中导入并注册插件:
import toast from './plugins/js2-vuepluginsdemo/js2-vuepluginsdemo.js'//导入插件
//import toast from 'js2-vuepluginsdemo'//通过npm下载的包这样引入
Vue.use(toast,{option:'我是通过use传入的参数'})//注册这个插件
4、在任何组件中都可以使用插件中的功能
在组件的mounted中调用提示:this.$toast('Welcome to Your Vue.js App',3000)
使用过滤:{{ msg | length }}
使用指令:
vue单文件props写法_vue开发中怎么按需加载需要被填入props和自定义事件的组件?...相关推荐
- Vue项目开发中使用路由懒加载
Vue项目开发中使用懒加载 一.使用路由懒加载的好处 当打包项目时,JavaScript包会变的非常大,影响页面加载,要是通过把不同的路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应 ...
- vue中路由按需加载的几种方式
使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import ...
- .NET中的按需加载/延迟加载 LazyT
业务场景: 在项目开发中,经常会遇到特定的对象使用的加载问题,有的实例对象我们创建之后并非需要使用,只是根据业务场景来调用,所以可能会导致很多无效的实例加载 延迟初始化出现于.NET 4.0,主要用于 ...
- webpack中实现按需加载
当页面中一个文件过大并且还不一定用到的时候,我们希望在使用到的时候才开始加载这个文件俗称按需加载.这样可以减少页面的响应时间,提高访问速度. 使用webpack打包的出来的文件要实现以上的要求有两种方 ...
- AngularJS中的按需加载ocLazyLoad
欢迎大家讨论与指导 : ) 初学者,有不足的地方希望各位指出 一.前言 ocLoayLoad是AngularJS的模块按需加载器.一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题.但是当 ...
- react按需加载(getComponent优美写法),并指定输出模块名称解决缓存(getComponent与chunkFilename)...
react配合webpack进行按需加载的方法很简单,Route的component改为getComponent,组件用require.ensure的方式获取,并在webpack中配置chunkFil ...
- vue单文件props写法_详解Vue 单文件组件的三种写法
详解Vue 单文件组件的三种写法 JS构造选项写法 export defaul { data, methods, ...} JS class写法 @Component export default c ...
- Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue
Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...
- Vue单文件中引入背景图片时,四周有空白的问题
Vue单文件中引入背景图片时,四周有空白的问题 问题背景 初始引入背景图 更新后的背景图设置 问题背景 近期公司有个管理系统前后端分离,但是前端人员不够,只能我们后端来凑,而在前端的开发过程中总是遇到 ...
最新文章
- 这种有序神经元,像你熟知的循环神经网络吗?
- java基础(八) 深入解析常量池与装拆箱机制
- Android串口通信apk源码
- c语言程序错误提示一个找不到,C语言编辑程序出现错误提示.doc
- linux下的进程间通信-管道及共享内存
- 中科大计算机竞赛夺冠,中科大斩获全国唯一特等奖,力压清华捧得华为毕昇杯...
- 2与27日 双目视觉系统,相机标定,矫正,匹配(特征,稠密),特征提取的方法,得到视差图
- 十六进制编辑器--HxD和FlexHex
- 移动端H5页面中加载的图片,在chrome和安卓手机中显示正常,在iphone和safari浏览器中个别图片显示问号的问题处理
- 爬虫 页面元素变化_爬虫项目案例讲解 案例二:定位、爬虫、定位页面元素、分别定位、简单处理抓取数据(有总结)...
- 微信推送消息遇到的坑 - 返回error code 40008,并且发送不成功
- 对Scrollbar实现平时隐藏,滑动时出现
- 柠檬班性能测试day05-0526-04环境安装配置
- 斐波那契数列 - 递推公式及通项公式 代码
- html控件透明与背景透明
- 【Android显示系统初探】surface初相识
- python连接企业微信数据库_python调用企业微信API
- smartdraw, visio的一个替代品
- IOS_QQ表情聊天
- c#+ArcgiEngine+postgresq无法连接到数据库,因为数据库客户端软件无法加载。确保已正确安装并配置数据库客户端软件。
热门文章
- Python中运算符 is 和 == 的区别
- java如何写外键关联_JAVA基础:Hibernate外键关联与HQL语法
- java复合数据类型_复合数据类型
- 数据结构与算法 / 数组(Array)
- 小明分享:Esp32下softAP+tcp_server的简单实现
- 工控服务器性能指标,PLC的7大性能指标
- python窗口化编程_python程序的窗口化
- js对当前时间的相关操作
- logback的使用和logback.xml详解[转]
- 使用OpenSSH远程管理Linux服务器