vue---day03
1. Vue的生命周期 - 创建和销毁的时候可以做一些我们自己的事情 - beforeCreated
- created
- beforeMount
- mounted
- beforeUpdate
- updated
- activated
- deactivated
- beforeDestroy
- destroyed 1.1 知识点回顾 1.1.1 beforeCreated 在实例创建之前除标签外,所有的vue实例需要的数据,事件都不存在
1.1.2 created 实例被我创建之后,data和事件已经被解析到,el还没有解析到
1.1.3 beforeMount 开始找标签,数据还没被渲染,事件也没被监听
1.1.4 mounted 开始渲染数据和监听事件
1.1.5 beforeUpdate 数据已经被修改在虚拟DOM,但是还没渲染到页面上
1.1.6 updated 开始使用Diff算法,将虚拟DOM中的要修改数据应用到页面上,真实DOM中的数据也被修改了
1.1.7 beforeDestroy 所有的数据都存在
1.1.8 destroyed 所有的数据都存在(在虚拟DOM中)
1.1.9 <keep-alive></keep-alive> Vue提供的用来缓存消除的标签
- activated和deactivated取代了beforeDestroy和destroyed的执行
2. Vue的路由系统 2.1 VueRouter的实现原理
- 通过监听a的锚点值,来动态的显示页面内容 2.2 VueRouter的安装使用 2.2.1 第一步:
1 Vue.use(VueRouter)
2.2.2 第二步:创建router对象和每个url对应的组件
let Home = {
template:``,
}; let Login = {
template:``,
}; let router = new VueRouter({
routes:[
{
name:'home',
path:'/',
components:Home',
},
{
name:'login',
path:'/login',
components:Login,
},
]
});
2.2.3 第三步:注册router对象到根实例中
new Vue({
el:'#app',
template:`<App/>`,
components:{
App,
}
router:router,
});
2.2.4 第四步:
let App = {
template:`
<router-link :to='{ name: 'home' }'>首页</router-link>
<router-link :to='{ name: 'login' }'>登录</router-link> <router-view></router-view>
`
}
2.3 VueRouter之命名路由
同上
2.4 VueRouter之路由参数
- user_change/1/
- user_detail/?user_id=1
let Home = {
template:`
<h1>欢迎</h1>
`
}; let UserDetail = {
template:`
<h2>用户详情</h2>
`,
}; let UserChange = {
template:`
<h3>修改用户信息</h3>
`,
}; let App = {
template:`
<div>
<router-link :to="{ name: 'home' }">首页</router-link>
<router-link :to="{ name: 'user_detail', query: { user_id: 1 } }">用户详情</router-link>
<router-link :to="{ name: 'user_change', params: { user_id: 1 } }">修改用户信息</router-link>
<router-view></router-view>
</div>
`
}; let router = new VueRouter({
routes:[
{
'name':'home',
'path':'/',
'component':Home,
},
{
'name':'user_detail',
'path':'/user_detail',
'component':UserDetail,
},
{
'name':'user_change',
'path':'/user_change/:user_id',
'component':UserChange,
},
]
});
2.5 VueRouter之路由参数的实现原理
this.$router.params
this.$router.query
2.6 VueRouter之子路由
let Home = {
template: `
<div>
<h1>欢迎</h1>
</div>
`
}; let Phone = {
template: `
<div>
<h2>手机品牌</h2>
<router-link :to="{name: 'huawei'}" append>华为</router-link>
<router-link :to="{name: 'oneplus'}" append>一加</router-link> <router-view></router-view>
</div>
`,
};
let HuaWei = {
template: `
<div>
<h3>华为手机</h3>
</div>
`,
};
let OnePlus = {
template: `
<div>
<h3>一加手机</h3>
</div>
`, let App = {
template: `
<div>
<router-link :to="{ name: 'home' }">首页</router-link>
<router-link :to="{ name: 'phone'}">手机品牌</router-link> <router-view></router-view>
</div>
`,
}; let router = new VueRouter({
routes: [
{
'name': 'home',
'path': '/',
'component': Home,
},
{
'name': 'phone',
'path': '/phone',
'component': Phone,
'children': [
{
'name':'huawei',
'path': 'huawei',
'component': HuaWei,
},
{
'name':'oneplus',
'path': 'oneplus',
'component': OnePlus,
},
], },
]
});
2.7 VueRouter之子路由重定向
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login
},
{
name: 'pay',
path: '/pay',
redirect: '/login',
component: Pay,
},
]
});
2.8 VueRouter之子路由的钩子函数
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login
},
{
name: 'pay',
path: '/pay',
meta: { required_login: true },
component: Pay,
},
]
}); // 通过router对象的beforeEach(function(to, from, next))
router.beforeEach(function (to, from, next) {
console.log("to: ", to);
console.log("from: ", from);
console.log("next: ", next);
if ( to.meta.required_login ) {
next('/login');
} else {
next();
}
});
2.9 VueRouter之子路由的去 # 号
let router = new VueRouter({
mode:'history',
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login
},
{
name: 'pay',
path: '/pay',
component: Pay,
},
]
});
vue---day03的更多相关文章
- vue学习-day03(动画,组件)
目录: 1.品牌列表-从数据库获取列表 2.品牌列表-完成添加功能 3.品牌列表-完成删除功能 4.品牌列表-全局配置数据接口的根域名 5.品牌列表-全局配置emulateJS ...
- Vue 基础 day03
定义Vue 组件 什么是组件:组件的出现,就是为了拆分 Vue 实例的代码量,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件: 组件化和模块化的不同: ...
- vue大型电商项目尚品汇(后台篇)day03
今天把平台属性的管理基本完成了,后台管理做到现在基本也开始熟悉,确实就是对ElementUI的一个熟练程度. 一.平台属性管理 1.动态展示数据 先把接口弄好,应该在第三级标题选择后进行发请求 静态页 ...
- vue补充
一.安装vue-cli脚手架 1.淘宝镜像下载 用淘宝的国内服务器来向国外的服务器请求,我们向淘宝请求,而不是由我们直接向国外的服务器请求,会大大提升请求速度,使用时,将所有的npm命令换成cnpm即 ...
- vue_shop(基于vue电商管理后台网站)
vue_shop 目录 vue_shop day01 实现登录功能 项目预开发处理 Login.vue完整代码: 处理步骤: 添加element-ui的表单组件 添加第三方字体: 添加表单验证 导入a ...
- vue再学习
day01 Vue 是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合 使用Vu ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
随机推荐
- python:Non-ASCII character ‘\xe2′ in file
python 2.7系列的 在运行.py文件时 报错python:Non-ASCII character ‘\xe2′ in file 解决办法: 在文件顶部 加入 # coding: utf ...
- UIRecorder安装与使用
继vue单元测试,将进行vue的e2e测试学习. 学习点: 安装uirecorder 用工具(UI Recorder)录制测试脚本 测试脚本的回放 本文意在安装UI Recorder,并且利用该工具进 ...
- (二)selenium元素定位
selenium定位方法 Selenium提供了8种定位方式. id name class name tag name link text partial link text xpath css se ...
- 林锐:5 C++/C程序的基本概念
5.1.1 main 不能重载 不能内联 不能定义为static 不能取其地址 不能由用户直接调用 5.1.3内部名称 struct Sample_1 { int count; }; struct S ...
- 716. Max Stack (follow up questions for min stack)
Design a max stack that supports push, pop, top, peekMax and popMax. push(x) -- Push element x onto ...
- ORACLE常用函数汇总(持续更新中....)
在使用ORACLE过程中,把一些常用的函数的相关用法,注意事项进行简单的汇总,便于自己查询参考. DBMS_RANDOM包 dbms_random是一个可以生成随机数值或者字符串的程序包.这个包有in ...
- vim编辑下几个退出保存的命令
:w 将数据写入硬盘 :w! 若文件属性为“只读”时,强制写入该文件.不过需要注意,这个是在你的权限可以改变的情况下才能成立 :q 离开vim :q! 修改过文件,又不想保存 :wq 保存后离开 :w ...
- Android应用经典主界面框架之中的一个:仿QQ (使用Fragment, 附源代码)
备注:代码已传至https://github.com/yanzi1225627/FragmentProject_QQ 欢迎fork,如今来审视这份代码,非常多地方写的不太好,欢迎大家指正.有时间我会继 ...
- MySQL:数据库入门篇4
1. 视图 创建视图 create view 视图名字 as 查询sql语句; drop view 视图名字; alter view 视图名字 as 查询sql语句; 2. 触发器 1. 插入事件触发 ...
- Going deeper with convolutions(GoogLeNet、Inception)
从LeNet-5开始,cnn就有了标准的结构:stacked convolutional layers are followed by one or more fully-connected laye ...