赞
踩
将所有的依赖打包成一个bundle.js,通过代码分割成单元片段按需加载
⚠️webpack会在恰当的时候执行plugin里的逻辑
MVC:model(模型)、view(视图)、controller(控制器);处理逻辑:view触发事件,controller响应并处理逻辑,调用model,model处理完成后发送给view;
MVP:model、view、present(发布层)理想模型,present为核心,从model获取数据,填充到view;
MVVM:model、view、VM(viewModel);view与VM保持同步,view绑定到VM的属性上,如果VM的数据变化,通过数据绑定的方式,view会自动更新视图,VM也会暴露在Model中,VM也就是new的Vue实例;
1)创建阶段
beforCreate:实例创建前,
created:实例创建好,data和methods创建好,可做数据请求;
2)挂载阶段
3)更新
4)销毁
beforDestory:在此清楚定时器和绑定的事件;
destoryed:调用后所有事件监听器会被移除,所有的子实例也会被销毁
vue的插件,含有router-link router-view 组件,
router-link:<router-link to="路由地址" tag="渲染为什么标签"></router-link>
active-class:router-link组件的属性,直接在路由中配置 linkActiveClass:'active'
,在router-link标签中写入exact<router-link to="" active-class="" exact></router-link>
全局的:
.boforEach((to, from, next) => {})
.afterEach((to, from, next)v=>{})
单个路由独享:
组件的:
router为vue-router的实例,相当于一个全局路由器对象,包含很多对象和属性。
route相当于正在跳转的路由对象,可以从中获取参数
params方式传参
// 传参
this.$router.psuh({
name: '',
params: {
id: id
}
});
// 获取
this.$route.params.id
query方式传参
// 传参
this.$router.psuh({
path: '',
query: {
id: id
}
});
// 获取
this.$route.query.id
⚠️query相当于get,参数会拼接在url上,params相当于post
hash模式
原理是window.onhashchange
事件,hash值就是#后面的值
history模式
H5中History Interface 中新增的pushState()和replaceState()方法,需要后端配置支持,没有正确配置访问时就会返回404,丢弃了不好看的#,但是如果服务器没有正确的响应或资源,就会出现404,所以history不怕前进后端,就怕刷新
为了好的用户体验,首屏组件加载更快,解决白屏问题,将页面划分为需要的时候再加载,减少首页加载压力。
常用的懒加载方法:
ES提出的import 方法(最常用)
const 路由组件名 = () => import(需要加载的模块地址)
const Holle = () => import('@...')
VUE异步组件实现
component: resolve => (require(['需要加载的路由地址']), resolve)
routes: [
{
path: '/',
name: 'Holle',
component: resolve => (require(["@/component/HelloWord"], resolve))
}
]
父组件传值给子组件
使用props
子组件传值给父组件
子组件使用this.$emit('自定义事件名', 参数)
父组件<parent-component @自定义事件="方法"></parent-component>
,此时方法不能加()。传值为子组件传的值
兄弟组件传值
const bus = new Vue();
bus.$emit(自定义事件名, 传递的数据);
// 接收数据的地方
bus.$on(自定义事件名, function (val) {})
父组件访问子组件中的方法
组件上添加ref属性,给组件设置一个ID,然后通过this.$ref.id名.方法/值
使用依赖注入
父组件通过provide(函数)注入,所有的子组件通过inject(数组)引用,
// 父组件
provide: function () {
return {
getName: this.getName
}
}
// 子组件
inject: ['getName']
p a r e n t , t h i s . parent,this. parent,this.parent 可以直接访问到组件上的data数据和方法
sessionStorage传值
Vue 采用数据劫持 + 发布订阅模式。通过Object.defineProperty()方法为组件中每个data添加get、set方法
原理:通过Object.defineProperty()劫持各个属性中的getter、setter,在数据变化时,发布消息给订阅者,触发相应的监听回调来渲染视图
集中组件状态管理
<slot></slot>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。