vue基础部分
一 vue概念
是一个构建用户界面的javascript框架
二 如何使用vue
1. 导入vue.js文件
2. 展示HTML
3. 建立vue对象,写JavaScript代码
vue的简单实用:申明式渲染
Vue.js的核心是,可以采用简洁的模板语法来声明式的将数据渲染在DOM:
- <div id="app">
- {{ message }}
- </div>
- var app = new Vue({
- el: "#app",
- data: {
- message: "Hello Vue!"
- }
- })
三、模板语法
模板
- <div id="box">
- <input type="text" v-model="msg">
- <br>
- {{ msg }} // 会更新;数据更新模板变化
- <br>
- {{ *msg }} //不会更新;数据只绑定一次
- {{{{ msg }}}} //HTML转意输出
- </div>
过滤器
- {{ 'welcome'|uppercase }} //大写
- {{ 'WELCOME'|lowercase }} //小写
- {{ 'welcome'|capitalize }} //首字母大写
- {{ 12|currency }} ->$12.00
- {{ 12|currency ¥}} ->¥12.00
- <h1 v-if="ok">Yes</h1>
- <h1 v-if="ok">Yes</h1>
- <h1 v-else>No</h1>
- // 遍历数组
- <li v-for="(item, index) in arry">
- {{ item, index }}
- // 遍历对象
- <li v-for="item in object">
- {{ item.name }}
五 计算属性(computed)和观察者(watcher)
计算属性
- <div id="example">
- {{ message.split('').reverse().join('') }}
- </div>
计算属性用法
- <div id="example">
- <p>Original message: "{{ message }}"</p>
- <p>Computed reversed message: "{{ reversedMessage }}"</p>
- var vm = new Vue({
- el: "#example",
- data: {
- message: "Hello"
- },
- computed: {
- // 计算属性的getter
- reversedMessage: function(){
- // this 只想vm实例
- return this.message.split('').reverse().join('')
- }
- }
- })
- //结果
- Original message: "Hello"
- Computed reversed message: "olleH"
- console.log(vm.reversedMessage) // "olleH"
- vm.message = "Goodye"
- console.log(vm.reversedMessage) // "eybdooG"
计算属性缓存和方法methods的区别
- <p>Reversed message: "{{ reversedMessage() }}"</p>
- //在组件中
- methods: {
- reversedMessage: function(){
- return this.message.split('').reverse().join('')
- }
- }
- computed: {
- now: function(){
- return Date.now()
- }
- }
计算属性和侦听属性
- <div id="demo">{{ fullName }}</div>
- var vm = new Vue({
- el: "#demo",
- data: {
- firstName: "Foo",
- lastName: "Bar",
- fullName: "Foo Bar"
- },
- watch: {
- firstName: function(val){
- this.fullName = val + ' ' + this.lastName
- },
- lastName: function(val){
- this.fullname = this.firstName + ' ' + val
- }
- }
- })
- var vm = new Vue({
- el: "#demo",
- data: {
- firstName: 'Foo',
- lastName: 'Bar'
- },
- computed: {
- fullName: function(){
- return this.firstName + ' ' + this.lastName
- }
- }
- })
计算属性的setter
- computed: {
- fullName: {
- get: function() {
- return this.firstName + ' ' + this.lastName
- },
- // setter
- set: function(newValue){
- var names = newValue.split(' ')
- this.firstName = names[0]
- this.lastName = names[names.length - 1]
- }
- }
- }
vm.fullName = 'John Doe'
时,setter 会被调用,vm.firstName
和 vm.lastName
也会相应地被更新。侦听器 watcher
watch
选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。
- <div id="watch-example">
- <p>
- Ask a yes/no question:
- <input v-model="question">
- </p>
- <p>{{ answer }}</p>
- </div>
- <!-- 因为 AJAX 库和通用工具的生态已经相当丰富,Vue 核心代码没有重复 -->
- <!-- 提供这些功能以保持精简。这也可以让你自由选择自己更熟悉的工具。 -->
- <script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
- <script src="https://cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script>
- <script>
- var watchExampleVM = new Vue({
- el: '#watch-example',
- data: {
- question: '',
- answer: 'I cannot give you an answer until you ask a question!'
- },
- watch: {
- // 如果 `question` 发生改变,这个函数就会运行
- question: function (newQuestion, oldQuestion) {
- this.answer = 'Waiting for you to stop typing...'
- this.getAnswer()
- }
- },
- methods: {
- // `_.debounce` 是一个通过 Lodash 限制操作频率的函数。
- // 在这个例子中,我们希望限制访问 yesno.wtf/api 的频率
- // AJAX 请求直到用户输入完毕才会发出。想要了解更多关于
- // `_.debounce` 函数 (及其近亲 `_.throttle`) 的知识,
- // 请参考:https://lodash.com/docs#debounce
- getAnswer: _.debounce(
- function () {
- if (this.question.indexOf('?') === -1) {
- this.answer = 'Questions usually contain a question mark. ;-)'
- return
- }
- this.answer = 'Thinking...'
- var vm = this
- axios.get('https://yesno.wtf/api')
- .then(function (response) {
- vm.answer = _.capitalize(response.data.answer)
- })
- .catch(function (error) {
- vm.answer = 'Error! Could not reach the API. ' + error
- })
- },
- // 这是我们为判定用户停止输入等待的毫秒数
- 500
- )
- }
- })
- </script>
在这个示例中,使用 watch
选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
除了 watch
选项之外,还可以使用命令式的 vm.$watch API。
六 class和style的绑定
与HTML的class绑定
对象语法
- <div v-bind:class="{active: isActive}"></div>
- <div class="static"
- v-bind:class="{active: isActive, 'text-danger': hasError}"></div>
- data: {
- isActive: true,
- hasError: false
- }
- //渲染结果
- <div class="static active"></div>
- 另外一种引用方式
- <div class="static"
- v-bind:clas="classObject"></div>
- data: {
- classObject: {
- isActive: true,
- hasError: false
- }
- }
- //渲染结果
- <div class="static active"></div>
- <div v-bind:class="classObject"></div>
- data: {
- isActive: true,
- error: null
- },
- computed: {
- classObject: function(){
- return {
- active: this.isActive && !this.error,
- 'text-danger': this.error && this.error.type === 'fatal'
- }
- }
- }
数组语法
- <div v-bind:class="[activeClass, errorClass]"></div>
- data: {
- activeClass: 'active',
- errorClass: 'text-danger'
- }
- // 渲染结果
- <div class="active text-danger"></div>
- 传入数组可以通过三元表达式来切换class列表中的某个class
- <div v-bind:class="[isActive ? activeClass : '' , errorClass]"></div>
- // 这里会直接添加errorClass, 但是只有在isActive值是true时,才会条件activeClass
- 如果需要更多判断条件,可以在数组语法中使用对象语法
- <div v-bind:class="[{active: isActive}, errorClass]"></div>
与内联style绑定 v-bind:sytle
对象语法
- <div v-bind:style="{color: activeColor, fontSize: fontSize + ''px}"></div>
- data: {
- activeColor: 'red',
- fontSize: 30
- }
- 还可以直接与data中的style对象绑定,这样模板看起来更清晰:
- <div v-bind:style="styleObject"></div>
- data: {
- styleObject: {
- color: "red",
- fontSizeL "13px"
- }
- }
数组语法
- <div v-bind:style="[baseStyles, overridingStyles]"></div>
自定添加前缀
多个值
- <div v-bind:style="{display: ['-webkit-box', '-ms-flexbox', 'flex']}"></div>
最终,这只会从数组中找出最后一个浏览器所支持的值进行渲染。在这个实例中,对于支持无前缀版本的flexbox的浏览器,最终将渲染为display: flex.
vue基础部分的更多相关文章
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期
回顾 哈喽大家好,前后端分离系列文章又开始了,今天周一,还是感谢大家花时间来观看我写的博客,周末呢,没有写文章,但是也没有闲着,主要是研究了下遗留问题,看过之前文章的应该知道,之前的在AOP使用Red ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明
缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...
- python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)
一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...
- Vue 基础精讲
Vue 基础精讲 Vue 官方文档:https://cn.vuejs.org/v2/guide/ VUE 实例 每个组件都是一个 vue 的实例. 一个 vue 项目是由实例组成的. vue 实例上有 ...
- Vue基础以及指令
Vue 基础篇一 一.Vue框架介绍 之前大家学过HTML,CSS,JS,JQuery,Bootstrap,现在我们要学一个新的框架Vue~ Vue是一个构建数据驱动的web界面的渐进式框架. 目 ...
- 2-5 vue基础语法
一.vue基础语法 语法: {{msg}} html赋值: v-html="" 绑定属性: v-bind:id="" 使用表达式: {{ok? "ye ...
- Vue 1-- ES6 快速入门、vue的基本语法、vue应用示例,vue基础语法
一.ES6快速入门 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 2 ...
- vue基础知识之vue-resource/axios
Vue基础知识之vue-resource和axios(三) vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没 ...
- Vue基础及脚手架环境搭建
From:http://www.jianshu.com/p/dc5057e7ad0d 一.vue基础 “Vue2.0”跟俺一起全面入坑 01 “Vue2.0”跟俺一起全面入坑 02 “Vue2.0”跟 ...
随机推荐
- solidity语言介绍以及开发环境准备
solidity语言介绍以及开发环境准备 Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的 ...
- percona mysql5.7进程出现大量unauthenticated user解决记录
现象:http://task.chinasoft.com.wx/ 所有任务能打开,我的任务打开很慢 有些人能用,有些人不能用,数据库出现大量的未认证用户连接,连接数利用率超过70% 重启nginx,a ...
- 一、jenkins下载及安装
一.安装 官网地址:https://jenkins.io/zh/ 1.下载war包,放到tomcat——>webapps下,双击bin——>startup.bat启动 2.打开命令提示符. ...
- vfp
DROP 从目前资料库中移出资料表格,并从磁碟上将它删除.DELETE 标示要删除的记录.只是标记,没有删除.ZAP 从资料表格中移除所有记录,仅保留资料表格结构.PACK 从目前资料库中移除标示为删 ...
- Java进阶教程:使用Lombok提升开发效率
Java进阶教程:使用Lombok提升开发效率 Lombok Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO).它通过注释实现这 ...
- RabbitMQ官方教程五 Topic(GOLANG语言实现)
在上一教程中,我们改进了日志记录系统. 我们没有使用只能进行虚拟广播的fanout交换器,而是使用直接交换器,并有可能选择性地接收日志. 尽管使用直接交换改进了我们的系统,但它仍然存在局限性-它不能基 ...
- a标签添加移除事件及开启禁用事件
一.添加移除点击事件 <script type="text/javascript" src="jquery.min.js"></script& ...
- python线程队列Queue-FIFO(35)
之前的文章中讲解很多关于线程间通信的知识,比如:线程互斥锁lock,线程事件event,线程条件变量condition 等等,这些都是在开发中经常使用的内容,而今天继续给大家讲解一个更重要的知识点 — ...
- 最小二乘求解常数k使得kx=y(x,y为列向量)
直接求解法 取范数 \[ E(k)=\|kx-y\|^{2}\\ \] 构建最小二乘得出 \[ \arg \min (E(k))=k^2x^Tx+y^Ty-2x^Tyk \] 对k求导有 \[ 2x^ ...
- jenkins publish .net core application to linux server
最近学习Docker与Jenkins, 网上大部分都是关于Jenkins+Git+Docker进行持续远程部署, 我一直在考虑为什么Jenkins和Docker要绑定一块使用, 因为我想单独使用Jen ...