这份Vue.js你值得拥有,写完老板叫我转前端
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
- 1:概述
- 1-1:MVVM模式的实现者
- 1-2:为什么要使用Vue.js
- 2:第一个Vue程序
- 2-1:下载地址
- 2-2:代码编写
- 3-2:Vue的闪烁问题
- 3-3:解决方案
- 4:Vue的基本语法
- 4-1:v-bind
- 4-2:判断:v-if,【【微信】】,v-else
- 4-3:循环:for
- 5:Vue的绑定事件v-on
- 6:Vue双向绑定
- 6-1:为什么要实现数据的双向绑定
- 6-2:在表单中使用双向数据绑定
- 6-3:单行文本
- 6-4:多行文本
- 6-5:单选按钮
- 6-6:复选框
- 6-7:下拉单选框
- 6-8:下拉多选框
- 7:Vue组件
- 7-1:组件的组织
- 7-2:组件的注册
- 7-3:组件的值传递,通过 Prop 向子组件传递数据
- 7-4:子组件自定义变量data
- 8:Axios异步通信
- 8-1:什么是Axios
- 8-2:为什么要使用Axios
- 8-3:第一个Axios应用程序
- 9:计算属性computed
- 10:插槽slot
- 11:自定义事件
- 12:第一个vue-cli项目
- 12-1:什么是vue-cli
- 12-2:需要的环境
- 12-2-1:Node.js
- 12-2-2:npm命令解释
- 12-2-3:安装淘宝镜像加速器(cnpm)
- 12-2-4:Git
- 12-2-5:vue-cli
- 12-3:第一个vue-cli应用程序
- 12-3-1:创建vue-cli项目
- 12-3-2:初始化并运行
- 12-4:Webpack
- 12-4-1:什么是Webpack
- 12-4-2:模块化的演进
- 12-4-3:安装Webpack
- 12-4-4:配置
- 12-4-5:使用webpack
- 13:vue-router路由
- 13-1:说明
- 13-2:安装
- 13-3:使用
- 14:vue+elementUI
- 14-1:创建工程
- 14-2:使用elementUI
- 14-2-1:idea打开我们所建项目
- 14-2-2:配置好路由
- 14-2-3:使用elementUI
- 15:路由嵌套,参数传递及重定向
- 15-1:路由嵌套
- 15-2:参数传递
- 15-3:重定向
- 15-4:路由模式
- 15-5:404页面
- 15-6:路由钩子,结合axios模拟实现腾讯的404找人页面
Idea安装Vue.js插件
官网地址【【网址】】/
Vue(读音 /vju/ ,类似于view) 是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其他大型框架不同的是,Vue被社会组为可以自底向上逐层应用。集于Angular的模型层Vue的核心只关注视图层,不仅易于上手,还便于与第三方库(如:vue-router,【【微信】】,vuex)或既有项目整合
MVVM源自于经典的MVC(【【微信】】r)模式。MVVM的核心是【【微信】】层,负责转换Model中的数据对象来让数据变得更容易管理和使用,其作用如下:
- Model:模型层,在这里表示JavaScript对象
- View:视图层,在这里表示DOM(HTML操作的元素)
- 【【微信】】:连接视图和数据的中间件,Vue.js就是MVVM中的【【微信】】层的实现者,能够观察到数据的变化,并对视图对应的内容进行变更,能够监听到视图的变化,并能够通知数据繁盛改变
- 轻量级,体积小是一个重要指标。Vue.js压缩后只有20多kb(Angular压缩后56kb+React压缩后44kb+)
- 移动优先,更适合移动端,比如移动端的Touch事件
- 易上手,学习曲线平稳,文档齐全
【说明】IDEA可以安装Vue的插件
- 注意:Vue不支持IE8及以下版本,因为Vue使用了IE8无法模拟的ECMAScript5特性。但它支持所有兼容ECMAScript5的浏览器。
开发版本
- 包含完整的警告和调试模式【【网址】】/js/vue.js
- 删除了警告,30.96kb min + gzip【【网址】】/js/vue.min.js
CDN
- <【【微信】】=“【【网址】】/npm/vue@2.5.21/dist/vue.js”>
- <【【微信】】=“【【网址】】/npm/vue@2.5.21/dist/vue.min.js”>
效果
#:3:Vue的生命周期
每个 Vue 实例在被创建时都要经过一系列的初始化过程――例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
比如 created 钩子可以用来在一个实例被创建之后执行代码:
也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mounted、updated 和 destroyed。生命周期钩子的this 上下文指向调用它的 Vue 实例。
不要在选项 property 或回调上使用箭头函数,比如 created: () => console.log(this.a) 或vm.$watch(‘a’, 【【微信】】 => this.myMethod()) 。因为箭头函数并没有this ,this 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。
##:3-1:生命周期图示
下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。
了解Vue的生命周期后,知道Vue是要经过一系列的操作,先加载了模板,才渲染数据,还是我们的第一个Vue程序
我们把浏览器的缓存清掉,然后把网速改为Slow 3G
效果
可以让页面加载完数据后再显示
代码
我们已经成功创建了第一个Vue应用!看起来跟渲染一个字符串模板非常类似,但是Vue有在背后做了大量工作。现在数据和DOM已经建立了关联,所有东西都是响应式的。我们在控制台操作对象属性,界面可以实时更新!
我们还可以使用v-bind来绑定元素特性,v-bind也可以省略,如我们下面的例子中,v-bind:title="【【微信】】"也可以写成:title="【【微信】】"
效果
如果你再次打开浏览器的JavaScript控制台,输入vm.【【微信】】=新消息,就会看到这个绑定了title特性大的HTML已经进行了更新
代码
效果
代码
效果
Vue的for循环优先类似python的循环
代码
效果
代码,v-on也可以用@代替,如我们下面的例子中,v-on:click="【【微信】】"也可以写成@:click="【【微信】】"
效果
Vue.js是一个MVVM框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。这也算是Vue.js的精髓之处了。
值得注意的是,我们所说的数据双向绑定,一定是对于UI控件来说的,非UI控件不会涉及到数据双向绑定 。单向数据绑定是使用状态管理工具的前提。如果我们使用vuex,那么数据流也是单向的,这时就会和双向数据绑定有冲突
在Vue.js中,如果使用vuex,实际上数据还是单向的,之所以说是数据双向绑定,这里用的UI控件来说,对于我们处理表单,Vue.js的双向数据绑定用起来就特别舒服了。即两者并不互斥,在全局性数据流使用单向。方便跟踪;局部性数据使用双向,简单易操作
你可以用v-model指令在表单<input>、<textarea>及<select>元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
注意:v-model会忽略所有表单元素的value、【【微信】】、selected特性的初始值,而总是将Vue实例的数据作为数据来源。你应该通过JavaScrip在组件的data选项中声明初始值!
代码
效果
代码
效果
代码
效果
代码
效果
如果 v-model 表达式的初始值未能匹配任何选项, 元素将被渲染为“未选中”状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐像上面这样提供一个值为空的禁用选项。
代码
效果
代码
效果
所谓的组件,只是把一些复用的代码封装起来,这样方便调用复用
通常一个应用会以一棵嵌套的组件树的形式来组织:
例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。
为了能在模板中使用,这些组件必须先注册以便 Vue 能够识别。这里有两种组件的注册类型:全局注册和局部注册。至此,我们的组件都只是通过 Vue.【【微信】】 全局注册的:我们这里只演示全局注册
全局注册的组件可以用在其被注册之后的任何 (通过 new Vue) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中。
如我们这里注册了一个主键,并且我们的命名最好是小写,大写有可能出错识别不出,代码
效果
如果我们定义的主键模板封装了很多标签在里面,那么就需要用一个标签把所有的括起来,不然只会识别第一标签
代码,只识别第一个
正确的做法,外面用一个标签再包住,代码
父组件向子组件传递数据,使用 Prop,基于上面的组件,我想数据是从外面传进来了,而不是再组件里写死的,这样组件就能最大化的实现复用,我就是一<li>的组件,至于数据多少,有外部传进来的数据决定,那么我们可以使用Prop 向子组件传递数据
代码
效果
子组件也想有自己定义的变量,组件内使用,使用data定义
代码
效果
使用Axios异步通信,Idea的JavaScript的版本必须是ES6+的,以为是基于ES6+的
Axios是一个开源的可以用在浏览器端和Node.Js的异步通信框架,她的主要作用就是实现AJAX异步通信,其功能特点如下:
- 从浏览器中创建XMLHttpRequests
- 从node.js创建http请求
- 支持Promise API [JS链式编程]
- 拦截请求和响应
- 装换请求数据和响应数据
- 取消请求
- 自动装换JSON数据
- 客户端支持防御XSRF(跨站请求伪造)
GitHub【【网址】】/axios/axios 中文文档【【网址】】/
由于Vue.Js是一个视图层框架,并且作者(尤雨溪)严格遵守Soc关注度分离原则),所以Vue.Js并不包含AJAX的通信功能,为了解决通信问题,作者单独开发了一个名为【【微信】】的插件,不过在进入2.0版本会后停止了对改插件的维护并推荐了Axios框架。少用JQuery,因为它操作Dom才频繁。
咱们开发的接口大部分都是采用JSON格式,可以先在项目里模拟一段JSON数据,数据内容如下:创建一个名为myData.json的文件并填入上面的内容,放在项目的根目录下
使用Axios我们需要引入js,我们线上引入 <【【微信】】=“【【网址】】/axios/dist/axios.min.js”>
示例代码
效果
自己本地写一个接口,演示一下请求接口的数据
接口地址和请求得到的数据
测试代码
如果出现以下内容,说明是跨域的问题,让服务端端口解决跨域就可以了ssm整合
..天猫互点微信群聊,天猫互点微信群聊,可以助力几次,2023 618天猫理想生活狂欢季活动每天都要助力,没有大量的朋友帮你,很难完成的,最靠谱还是多加一些2023年淘宝618 年中大促2023天猫 618 助力群微信,群内人多一起互助来的快。关注加好友,快来入群吧。版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。