vue 生命周期表
品牌管理案例
添加新品牌
删除品牌
根据条件筛选品牌
- 1.x 版本中的 filterBy 指令,在 2.x 中已经被废除:
1 | <tr v-for="item in list | filterBy searchName in 'name'"> |
- 在 2.x 版本中手动实现筛选的方式:
- 筛选框绑定到 VM 实例中的
searchName
属性:
1 | <hr> 输入筛选名称: |
- 在使用
v-for
指令循环每一行数据的时候,不再直接item in list
,而是in
一个 过滤的 methods 方法,同时,把过滤条件searchName
传递进去:
1 | <tbody> |
search
过滤方法中,使用 数组的filter
方法进行过滤:
1 | search(name) { |
Vue 调试工具vue-devtools
的安装步骤和使用
过滤器
概念:Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化。过滤器可以用在两个地方:mustache 插值和 v-bind 表达式。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符指示;
私有过滤器
- HTML 元素:
1 | <td>{{item.ctime | dataFormat('yyyy-mm-dd')}}</td> |
- 私有
filters
定义方式:
1 | filters: { // 私有局部过滤器,只能在 当前 VM 对象所控制的 View 区域进行使用 |
使用 ES6 中的字符串新方法 String.prototype.padStart(maxLength, fillString=’’) 或 String.prototype.padEnd(maxLength, fillString=’’)来填充字符串;
全局过滤器
1 | // 定义一个全局过滤器 |
注意:当有局部和全局两个名称相同的过滤器时候,会以就近原则进行调用,即:局部过滤器优先于全局过滤器被调用!
键盘修饰符以及自定义键盘修饰符
1.x 中自定义键盘修饰符【了解即可】
1 | Vue.directive('on').keyCodes.f2 = 113; |
2.x 中自定义键盘修饰符
- 通过
Vue.config.keyCodes.名称 = 按键值
来自定义案件修饰符的别名:
1 | Vue.config.keyCodes.f2 = 113; |
- 使用自定义的按键修饰符:
1 | <input type="text" v-model="name" @keyup.f2="add"> |
自定义指令
- 自定义全局和局部的 自定义指令:
1 | // 自定义全局指令 v-focus,为绑定的元素自动获取焦点: |
- 自定义指令的使用方式:
1 | <input type="text" v-model="searchName" v-focus v-color="'red'" v-font-weight="900"> |
Vue 1.x 中 自定义元素指令【已废弃,了解即可】
1 | Vue.elementDirective('red-color', { |
使用方式:
1 | <red-color>1232</red-color> |
vue 实例的生命周期
- 什么是生命周期:从 Vue 实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期!
- 生命周期钩子:就是生命周期事件的别名而已;
- 生命周期钩子 = 生命周期函数 = 生命周期事件
- 主要的生命周期函数分类:
- 创建期间的生命周期函数: + beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性 + created:实例已经在内存中创建 OK,此时 data 和 methods 已经创建 OK,此时还没有开始 编译模板 + beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中 + mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示
- 运行期间的生命周期函数: + beforeUpdate:状态更新之前执行此函数, 此时 data 中的状态值是最新的,但是界面上显示的 数据还是旧的,因为此时还没有开始重新渲染 DOM 节点 + updated:实例更新完毕之后调用此函数,此时 data 中的状态值 和 界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了!
- 销毁期间的生命周期函数: + beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。 + destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
vue-resource 实现 get, post, jsonp 请求
除了 vue-resource 之外,还可以使用 axios
的第三方包实现实现数据的请求
- 之前的学习中,如何发起数据请求?
- 常见的数据请求类型? get post jsonp
- 测试的 URL 请求资源地址:
- get 请求地址: http://vue.studyit.io/api/getlunbo
- post 请求地址:http://vue.studyit.io/api/post
- jsonp 请求地址:http://vue.studyit.io/api/jsonp
- JSONP 的实现原理
- 由于浏览器的安全性限制,不允许 AJAX 访问 协议不同、域名不同、端口号不同的 数据接口,浏览器认为这种访问不安全;
- 可以通过动态创建 script 标签的形式,把 script 标签的 src 属性,指向数据接口的地址,因为 script 标签不存在跨域限制,这种数据获取方式,称作 JSONP(注意:根据 JSONP 的实现原理,知晓,JSONP 只支持 Get 请求);
- 具体实现过程: - 先在客户端定义一个回调方法,预定义对数据的操作; - 再把这个回调方法的名称,通过 URL 传参的形式,提交到服务器的数据接口; - 服务器数据接口组织好要发送给客户端的数据,再拿着客户端传递过来的回调方法名称,拼接出一个调用这个方法的字符串,发送给客户端去解析执行; - 客户端拿到服务器返回的字符串之后,当作 Script 脚本去解析执行,这样就能够拿到 JSONP 的数据了;
- 带大家通过 Node.js ,来手动实现一个 JSONP 的请求例子;
1 | const http = require('http'); |
- vue-resource 的配置步骤:
- 直接在页面中,通过
script
标签,引入vue-resource
的脚本文件; - 注意:引用的先后顺序是:先引用
Vue
的脚本文件,再引用vue-resource
的脚本文件;
- 发送 get 请求:
1 | getInfo() { // get 方式获取数据 |
- 发送 post 请求:
1 | postInfo() { |
- 发送 JSONP 请求获取数据:
1 | jsonpInfo() { // JSONP形式从服务器获取数据 |
配置本地数据库和数据接口 API
- 先解压安装
PHPStudy
; - 解压安装
Navicat
这个数据库可视化工具,并激活; - 打开
Navicat
工具,新建空白数据库,名为dtcmsdb4
; - 双击新建的数据库,连接上这个空白数据库,在新建的数据库上
右键
->运行SQL文件
,选择并执行dtcmsdb4.sql
这个数据库脚本文件;如果执行不报错,则数据库导入完成; - 进入文件夹
vuecms3_nodejsapi
内部,执行npm i
安装所有的依赖项; - 先确保本机安装了
nodemon
, 没有安装,则运行npm i nodemon -g
进行全局安装,安装完毕后,进入到vuecms3_nodejsapi
目录 ->src
目录 -> 双击运行start.bat
- 如果 API 启动失败,请检查 PHPStudy 是否正常开启,同时,检查
app.js
中第14行
中数据库连接配置字符串是否正确;PHPStudy 中默认的 用户名是 root,默认的密码也是 root