热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vue从入门到实践应用

Vue基本的语法Vue的基本代码结构及插值表达式(Mustache){{

Vue基本的语法


Vue的基本代码结构及插值表达式(Mustache)

{{ message }}



Vue指令之v-textv-html

{{ msg }} - I'm coming
I'm coming



Vue指令之v-bind的三种用法


  1. 直接使用指令 v-bind

  2. 使用简化指令 :

  3. 在绑定的时候,拼接绑定内容::title="btnTitle + ', 这是追加的内容'"

{{ msg }} - I'm coming
I'm coming



Vue指令之v-on跑马灯效果

{{info}}




Vue指令之事件修饰符


  • .stop 阻止冒泡

  • .prevent 阻止默认事件

  • .capture 添加事件侦听器时使用事件捕获模式

  • .self 只当事件在该元素本身(比如不是子元素)触发时触发回调

  • .once 事件只触发一次

正常事件

使用 .prevent 阻止默认行为

有问题,先去百度

使用 .capture 实现捕获触发事件的机制

使用 .once 只触发一次事件处理函数

有问题,先去百度

使用 .stop 阻止冒泡

使用 .self 只会阻止自己身上冒泡行为的触发,并不会真正阻止冒泡的行为




Vue指令之v-model双向数据绑定




Vue指令之v-forkey属性


  1. 迭代数组

  • 索引:{{i}} - 姓名:{{item.name}} - 年龄:{{item.age}}



  1. 迭代对象中的属性

{{val}}-{{key}}-{{i}}


  1. 迭代数字

这是第 {{i}} 个P标签



  1. key与列表筛选

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。


{{item.id}} --- {{item.name}}




Vue指令之v-ifv-show


  • v-if:每次都会重新删除或创建元素 有较高的切换性能消耗
  • v-show: 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式 有较高的初始渲染消耗

这是用v-if控制的元素

这是用v-show控制的元素




一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。



使用内联样式


直接在元素上通过 :style 的形式,书写样式对象

这是一个H1



将样式对象,定义到 data 中,并直接引用到 :style


  • 在data上定义样式:

data: {h1StyleObj: { color: 'red', 'font-size': '40px' }
}

  • 在元素中,通过属性绑定的形式,将样式对象应用到元素中:

这是一个H1



:style 中通过数组,引用多个 data 上的样式对象


  • 在data上定义样式:

data: {h1StyleObj: { color: 'red', 'font-size': '40px'},h1StyleObj2: { fontStyle: 'italic' }
}

  • 在元素中,通过属性绑定的形式,将样式对象应用到元素中:

这是一个H1



Vue自定义过滤器


Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化。过滤器可以用在两个地方:mustache 插值和 v-bind 表达式。过滤器应该被添加在 Javascript 表达式的尾部,由“管道”符指示;



  1. 私有过滤器

选中值: {{message}}

翻译后: {{ message | tran('我很')}}




  1. 全局过滤器

Vue.filter('tran', function (str, mood = "") {...})

注意:当有局部和全局两个名称相同的过滤器时候,会以就近原则进行调用,即:局部过滤器优先于全局过滤器被调用!



Vue自定义指令

详见官网api


Vue过渡动画

详见官网api


Vue生命周期函数

生命周期图示

new Vue({data: {a: 1},created: function () {// `this` 指向 vm 实例console.log('a is: ' + this.a)},...
})

Vue组件


定义Vue组件

什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可;
组件化和模块化的不同:


  • 模块化: 是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一;
  • 组件化: 是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用;

Vue组件的定义


全局定义的三种方式


  1. 使用 Vue.extend 配合 Vue.component 方法:

var login = Vue.extend({template: '

登录

'
});
Vue.component('login', login);

  1. 直接使用 Vue.component 方法:

Vue.component('register', {template: '

注册

'
});

  1. 将模板字符串,定义到script标签种:


//同时,需要使用 Vue.component 来定义组件
Vue.component('account', {template: '#tmpl'
});

注意: 组件中的DOM结构,有且只能有唯一的根元素(Root Element)来进行包裹!



使用components属性定义局部子组件




组件中展示数据和响应事件


  1. 在组件中,data需要被定义为一个方法并返回一个对象,例如:

Vue.component('account', {template: '#tmpl',data() {return {msg: '大家好!'}},methods: {login() {alert('点击了登录按钮');}}
});

  1. 在子组件中,如果将模板字符串,定义到了script标签中,那么,要访问子组件身上的data属性中的值,需要使用this来访问;

组件切换 使用component标签,来引用组件,并通过:is属性来指定要加载的组件

登录注册



Vue组件间的传值


父组件向子组件传值


注意:一定要使用props属性来定义父组件传递过来的数据





子组件向父组件传值


  1. 原理:父组件将方法的引用,传递到子组件内部,子组件在内部调用父组件传递过来的方法,同时把要发送给父组件的数据,在调用方法的时候当作参数传递进去;

  2. 父组件将方法的引用传递给子组件,其中,getMsg是父组件中methods中定义的方法名称,func是子组件调用传递过来方法时候的方法名称

  3. 子组件内部通过this.$emit('方法名', 要传递的数据)方式,来调用父组件中的方法,同时把数据传递给父组件使用实例如下:




Vue-Router的使用


什么是路由


  1. 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;

  2. 对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现;

  3. 在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由(区别于后端路由);


vue-router的基本使用


  1. 导入 vue-router 组件类库:



  1. 使用 router-link 组件来导航

登录
注册

  1. 使用 router-view 组件来显示匹配到的组件



  1. 创建使用Vue.extend创建组件

var login = Vue.extend({template: '

登录组件

'
});
var regist = Vue.extend({template: '

注册组件

'
});

  1. 创建一个路由 router 实例,通过 routers 属性来定义路由匹配规则

var router = new VueRouter({routes: [{ path: '/', redirect: '/login' },{ path: '/login', component: login },{ path: '/regist', component: register }]
});

  1. 使用 router 属性来使用路由规则

var vm = new Vue({el: '#app',router: router // 使用 router 属性来使用路由规则
});

  1. 完整示例

登录注册



使用redirect实现重定向

{ path: '/', redirect: '/login' }

在路由规则中定义参数


定义参数:参数名

{ path: '/register/:id', component: register }

获取参数this.$route.params

var regist = Vue.extend({template: '

注册组件 --- {{this.$route.params.id}}

'
});

使用 children 属性实现路由嵌套

var router = new VueRouter({routes: [{ path: '/', redirect: '/account/login' }, {path: '/account',component: account,// 通过 children 数组属性,来实现路由的嵌套children: [ // 注意,子路由的开头位置,不要加 / 路径符{ path: 'login', component: login }, { path: 'regist', component: regist}]}]
});

用Vue-cli3初始化一个Vue项目


安装

npm install -g @vue/cli
# OR
yarn global add @vue/cli

安装之后,你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue,看看是否展示出了一份所有可用命令的帮助信息,来验证它是否安装成功。



创建一个项目


  1. 运行以下命令来创建一个新项目:

vue create hello-world

你会被提示选取一个 preset。你可以选默认的包含了基本的 Babel + ESLint 设置的 preset,也可以选“手动选择特性”来选取需要的特性。


  1. 通过 vue ui 命令以图形化界面创建和管理项目
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTd8PTGp-1575449673653)(https://cli.vuejs.org/ui-new-project.png)]

使用命令启动或打包

在一个 Vue CLI 项目中,@vue/cli-service 安装了一个名为 vue-cli-service 的命令。你可以在 npm scripts 中以 vue-cli-service、或者从终端中以 ./node_modules/.bin/vue-cli-service 访问这个命令。

这是使用默认 preset 的项目的 package.json:

{"scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build"}
}

通过 npm 或 Yarn 调用这些 script:

//启动项目
npm run serve
# OR
yarn serve
//打包项目
npm run build
# OR
yarn build

build会在 dist/ 目录产生一个可用于生产环境的包,带有JS/CSS/HTML的压缩


Ant Design of Vue 组件库的基本使用

整理中…


Ant Design Pro of Vue 的基本使用

整理中…


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 1.点击查看隐藏当前按钮和这个内容,显示另一个内容能。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 在JavaScript中,函数没有重载的概念,如果声明了多个重名的函数,不管函数的形参个数是否一样,只有最后一个有效。如果调用函数时传入的参数个数与函数定义时的参数个数不符,会出现不同的情况。函数调用时,传入的参数个数少于函数定义时的参数个数,未传入的参数会被当做undefined处理,可能会导致错误。而传入的参数个数多于函数定义时的参数个数,多余的参数不会被使用,但不会报错。 ... [详细]
author-avatar
jimscloudy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有