什么是vue.js
Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于Weex)
Vue.js 是前端的主流框架之一,和Angular.js、React.js 一起,并成为前端三大主流框架!
Vue.js 是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有配套的第三方类库,可以整合起来做大型项目的开发)
基本指令
vue.min.js 官网下载
Document
{{msg}}
v-cloak 指令
当引用的vue.js库没有完成加载时,html中的{{msg}}表达式就会展示成原始代码
可以在标签中加上 v-cloak,在style中设置display:none即可
{{msg}}
插值表达式
- {{msg}}
会出现上述表达式展示源码问题,但是该方式不会影响标签中除表达式外的其他内容
例:这是{{msg}}的内容
- v-text="msg"
不会出现上述表达式展示源码问题,但是该方式会覆盖标签中的内容
例:vue text
若msg是abc 则vue text将被替换成abc
- v-html="msg"
如果需要向页面中写入HTML标签时,则需要使用 v-html
v-bind 用于绑定属性的指令
var vm = new Vue({
el:'#app',
data:{
value1:'按钮'
}
})
效果如下:
效果如下:
v-bind 简写方式, 效果一样
v-on:click 标签绑定单击事件
删除列表中的元素
var mv = new Vue({
el:"#app",
data:{
list:[
{id:'1' ,name :'zsa1'},
{id:'2' ,name :'zsa2'},
{id:'3' ,name :'zsa3'}
]
},
methods:{
del(id){
for(let i=0;i
跟进内容查询过滤集合数据
{{item.name}}
如果 in 后面是一个数字 ,count则从1 开始
{{count}}
分支结构
- 只有表达式符合成立的标签才会展示
var vm = new Vue({
el:'#app',
data:{
score:'69'
},
methods:{//在这里定义当前vue实例用到的函数
}
})
良好
优秀
及格
v-show 功能与v-if相同,区别在于v-show的条件表达式为false时,实际上标签已经存在网页中,只不过设置成display:none
而v-if 并不会将标签画出
var vm = new Vue({
el:'#app',
data:{
showFlag:false
},
methods:{//在这里定义当前vue实例用到的函数
}
})
演示v-show
-
查看网页源码
v-for 与 v-if 集合使用
编号:{{user.id}},姓名:{{user.name}}
vue 的常用特性
- 表单特性 :表单中的组件都是基于v-model进行数据绑定的
- 单选框,复选框,下拉选不需要配置相同的name组,只要绑定相同的v-model即可
男
女
var vm = new Vue({
el:'#app',
data:{
sex:'1'
},
methods:{//在这里定义当前vue实例用到的函数
}
})
- sex 初始值时1 ,页面则默认选择男
- 注意: 下拉选的v-model 绑定在
表单修饰符
- v-model.number 将字符串转为数字
- v-model.trim 去除字符串两边的空白字符
Vue.js——vue-resource全攻略
Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery。vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁。另外,vue-resource还提供了非常有用的inteceptor功能,使用inteceptor可以在请求前和请求后附加一些行为,比如使用inteceptor在ajax请求时显示loading界面。
vue-resource特点
1. 体积小
vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多。
2. 支持主流的浏览器
和Vue.js一样,vue-resource除了不支持IE 9以下的浏览器,其他主流的浏览器都支持。
3. 支持Promise API和URI Templates
Promise是ES6的特性,Promise的中文含义为“先知”,Promise对象用于异步计算。
URI Templates表示URI模板,有些类似于ASP.NET MVC的路由模板。
4. 支持拦截器
拦截器是全局的,拦截器可以在请求发送前和发送请求后做一些处理。
拦截器在一些场景下会非常有用,比如请求发送前在headers中设置access_token,或者在请求失败时,提供共通的处理方式。
在发送请求后,使用then方法来处理响应结果,then方法有两个参数,第一个参数是响应成功时的回调函数,第二个参数是响应失败时的回调函数。
then方法的回调函数也有两种写法,第一种是传统的函数写法,第二种是更为简洁的ES 6的Lambda写法:```
// 传统写法
this.$http.get('/someUrl', [options]).then(function(response){
// 响应成功回调
}, function(response){
// 响应错误回调
});
// Lambda写法
this.$http.get('/someUrl', [options]).then((response) => {
// 响应成功回调
}, (response) => {
// 响应错误回调
});
支持的HTTP方法
get(url, [options])
head(url, [options])
delete(url, [options])
jsonp(url, [options])
post(url, [body], [options])
put(url, [body], [options])
patch(url, [body], [options])
发送get请求:
{{getInfo}}
发送post请求:
postInfo() {
var url = 'http://www.liulongbin.top:3005/api/post';
// post 方法接收三个参数:
// 参数1: 要请求的URL地址
// 参数2: 要发送的数据对象
// 参数3: 指定post提交的编码类型为 application/x-www-form-urlencoded
this.$http.post(url, { name: 'zs' }, { emulateJSON: true }).then(res => {
console.log(res.body);
});
}
发送JSONP请求获取数据:
jsonpInfo() { // JSONP形式从服务器获取数据
var url = 'http://www.liulongbin.top:3005/api/jsonp';
this.$http.jsonp(url).then(res => {
console.log(res.body);
});
}
通过接口获取产品信息集合
{{item.id}} -- {{item.name}} -- {{item.ctime}}
什么是组件
组件是可复用的 Vue 实例,说白了就是一组可以重复使用的模板,跟 JSTL 的自定义标签、Thymeleaf 的 th:fragment 等框架有着异曲同工之妙。
注意:在实际开发中,我们并不会用以下方式开发组件,而是采用 vue-cli 创建 .vue 模板文件的方式开发,以下方法只是为了让大家理解什么是组件。
Vue.component():注册组件
beixi:自定义组件的名字
template:组件的模板
使用 props 属性动态传递参数
v-for=“item in items”:遍历 Vue 实例中定义的名为 items 的数组,并创建同等数量的组件
v-bind:value=“item”:将遍历的 item 项绑定到组件中 props 定义的名为 value属性上;= 号左边的 value 为 props 定义的属性名,右边的为 item in items 中遍历的 item 项的值
什么是Axios
Axios 是一个开源的可以用在浏览器端和 NodeJS 的异步通信框架,她的主要作用就是实现 AJAX 异步通信
为什么要使用 Axios
由于 Vue.js 是一个 视图层框架 并且作者(尤雨溪)严格准守 SoC (关注度分离原则),所以 Vue.js 并不包含 AJAX 的通信功能,为了解决通信问题,作者单独开发了一个名为 vue-resource 的插件,不过在进入 2.0 版本以后停止了对该插件的维护并推荐了 Axios 框架。少用jQuery,因为它操作Dom太频繁!
在线引入axios。在项目开发中会安装axios组件(npm install axios)
axios.get("http://localhost:9001/vue/get").then(function (response) {
console.log(response.data);
});
axios.post("http://localhost:9001/vue/post",{
name:"jack",
age:"23"
}).then(function (response) {
//console.log(response);
});
@RestController
@RequestMapping("vue")
public class VueTestController {
@RequestMapping("/get")
public User gerUser(){
User user = new User();
user.setName("jack");
user.setAge(12);
return user;
}
@PostMapping("/post")
public void setUser(@RequestBody User paramUser){
System.out.println(paramUser.getName());
System.out.println(paramUser.getAge());
}
}
并发请求
将多个请求同时发送,由服务端统计处理。
function getVue() {
axios.get("http://localhost:9001/vue/get").then(function (response) {
console.log(response.data);
});
}
function postVue() {
axios.post("http://localhost:9001/vue/post",{
name:"jack",
age:"23"
}).then(function (response) {
//console.log(response);
});
}
//返回结果处理
axios.all([getVue(),postVue()]).then(axios.spread(function (res1,res2) {
console.log(res1.data);
console.log(res2.data);
}));
什么是计算属性
当一些数据需要根据其它数据变化时,需要进行处理才能去展示,虽然vue提供了绑定数据表达式绑定的方式,但是设计它的初衷只是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,对于一些比较复杂和特殊的计算有可能就捉襟见肘了,而且计算的属性写在模板里也不利于项目维护
computed主要的作用:
分离逻辑(模板和数据分离)
缓存值
双向绑定(getter,setter)
求和结果{{result}}
npm安装vue ,vue-cli
安装node.js
https://nodejs.org/en/
从node.js官网下载并安装node,安装过程很简单,一直点下一步就ok了
-- 镜像加速
npm config set registry=http://registry.npm.taobao.org
安装vue
安装vue-cli
初始化vue项目目录
启动vue
安装webpack