测试开发进阶(十八)
欢迎关注我的公众号「测试游记」
element-ui其实就是一个组件库
ref
为一个元素或者子组件的应用
组件中定义的所有的ref都会放在当前组件的$refs
属性中
1 | <el-table |
1 | toggleSelection() { |
this.$refs.multipleTable
就可以操作上面的内容了
一个登录页面
1 | <template> |
v-bind单向绑定,只能将Model中的数据传给绑定的属性
v-model双向绑定
v-model为双向绑定,既可以把Model中的数据传给绑定的属性,也可以把属性传回给Model
1 | <input type="text" |
1 | <template> |
生命周期
beforeCreate
这个时候,this变量还不能使用,在data下的数据,和methods下的方法,watcher中的事件都不能获得到;
created
这个时候可以操作vue实例中的数据和各种方法,但是还不能对”dom”节点进行操作;
mounted
这个时候挂载完毕,这时dom节点被渲染到文档内,一些需要dom的操作在此时才能正常进行。
注意:mounted在整个实例的生命周期中只执行一次。
computed
是把所有需要依赖其他值计算的值写成对象的key值。
watch
把监听的值写成对象的key值
var vm = new Vue({})
表示开始创建一个Vue实例对象Init Events & Lifecycle
表示,刚初始化了一个Vue空的实例对象,这时候,该对象上,只有默认的一些生命周期函数和默认的事件,其他都没创建- 在
beforeCreate
生命周期函数执行时,data和methods中的数据都还没初始化 Init injections & reactivity
内部初始化- 在
created
中,data和methods都已经初始化好了。所以最早要使用他们只能在created
中 - create开始到beforeMount 表示Vue开始编辑模版,把Vue代码中的指令进行执行,最终在内存中生存一个编译好的最终模版字符串,然后渲染为内存中的DOM,此时只是在内存中渲染好了模版,并没有挂载到真正的页面中
beforeMount
执行这个函数的时候,模版只是在内存中编译完成,但是没有挂载到页面中,所以此时页面还是旧的Create vm.$el and replace "el" with it
:把内存中的模版替换到浏览器页面mounted
:执行完该函数,整个Vue实例已经初始化完毕,进入运行阶段beforeUpdate
:data中数据更新了,但是页面还没更新updated
:页面和data数据同步最新了Virtual Dom re-render and patch
:根据data中的数据,在内存中渲染一份最新的DOM树,当它更新之后,会重新渲染到真实页面中去,就相当于完成了data(Model)-> view(视图层)的更新beforeDestroy
:Vue进入销毁阶段,但是data和methods还是可用的destroyed
:组件以及被销毁了,里面的东西都不能用了
1 | <script> |
组件声明
在/src/main.js
入口js中进行声明全局组件
1 | // 导入子组件 |
父组件,子组件之间互相调用
App.vue
1 | <template> |
HelloWorld.vue
1 | <template> |
路由
- 创建单页面应用
- 官方路由组件,实现前端路由功能
在项目路径下安装
1 | cnpm install vue-router |
使用
1 | import Vue from 'vue' |
借鉴官方操作
https://github.com/vuejs/vue-router/blob/dev/examples/basic/app.js
在/src/router/index.js
1 | // 0.安装并导入vue-router |
修改/src/main.js
,添加下面内容
1 | // 导入vue router对象 |
修改/src/App.vue
的template
1 | <template> |
访问\
访问http://localhost:8080/login
在App.vue
中添加:
1 | <ul> |
命名路由
1 | {path: '/', component: HelloWorld, name: 'index'} |
1 | <li><router-link :to="{name:'index'}">主页</router-link></li> |
在组件中可以通过this.$router
来获取查询字符串参数
访问http://localhost:8080/greeting?name=zx&age=18
修改/src/components/greeting.vue
1 | data() { |
路径参数
修改/src/router/index.js
1 | {path: '/greeting/:username/:age', component: greeting}, |
修改/src/components/greeting.vue
1 | data() { |