3、vueJs基础知识03
vue过渡(动画)
本质走的css3: transtion ,animation
<div id="div1" v-show="bSign" transition="fade"></div> 动画:
.fade-transition{ }
进入:
.fade-enter{
opacity: 0;
}
离开:
.fade-leave{
opacity: 0;
transform: translateX(200px);
} 也可以使用animation.css动画库,并且vue实例还有一个transition配置项 <div class="animated" transition="bounce" v-show="bSign"></div> new Vue({
el:'',
data:{},
methods:{},
transitions:{
bounce:{
enterClass:'zoonInLeft',
leaveClass:'zoomOutRight'
}
} })
vue组件
组件:一个大对象,定义一个组件
var Aaa=Vue.extend({
template:'<h3>我是标题3</h3>'
});
注册组件:
1、全局组件,通过Vue的方法component注册到全局类Vue上
Vue.component('aaa',Aaa); //挂在全局Vue对象上的
//全局组件可以在以后的通过new出来的vue实例中使用 *组件里面放数据:
组件里面的data必须是函数的形式,函数必须返回一个对象(json数据)
2、局部组件
放到某个组件内部,通过components配置项,注册到(组件)实例中
var vm=new Vue({
el:'#box',
data:{
bSign:true
},
components:{ //局部组件 挂在vue实例内的
aaa:Aaa
}
});
另一种定义注册方式.(推荐);上面是定义和注册分步进行,这种方式是定义和注册合为一步了
全局:
Vue.component('my-aaa',{
template:'<strong>好</strong>'
}); 局部:
var vm=new Vue({
el:'#box',
components:{
'my-aaa':{
template:'<h2>标题2</h2>'
}
}
});
组件配合模板使用
将组件中的模板字符串,抽出模板(多个标签)到html中
1. template:'<h2 @click="change">标题2->{{msg}}</h2>' 2. 单独放到某个地方
a). <script type="x-template" id="aaa">
<h2 @click="change">标题2->{{msg}}</h2>
</script> b). 推荐
<template id="aaa">
<h1>标题1</h1>
<ul>
<li v-for="val in arr">
{{val}}
</li>
</ul>
</template>
动态组件:(可以做选择卡)
<component :is="组件名称"></component>
组件间通信
vue默认情况下,子组件也没法访问父组件数据
1. 子组件就想获取父组件data
a、在调用子组件:绑定属性
<bbb :m="数据"></bbb> b、子组件之内:通过props获取以上绑定的属性
props:['m','myMsg'] 也可以指定类型的props
props:{
'm':String,
'myMsg':Number
}
c、之后就可以在子组件的methods里面或者html插值里面使用了
2. 父级获取子级数据
*子组件实例主动把自己的数据,发送到父级,父级通过v-on:自定义事件监听,捕获到发送的事件触发,并接收到数据 vm.$emit(事件名,数据); v-on: @事件名=“自己的方法”
另外还有一种传值方法(2.0中已经废除):
vm.$dispatch(事件名,数据) 子级向父级发送数据
vm.$broadcast(事件名,数据) 父级向子级广播数据
配合: event:{}
vue中的slot
位置、插槽;作用就是占个位置
就是在使用组件时,为组件里面的内容能留有渲染的位置
多个slot可以是用name进行区分
类似ng里面 transclude (指令)
vue路由
vue--->单页面(SPA)应用,是根据不同的路由(url地址),展示不同的效果(组件)
用到插件vue-router
html:
<a v-link="{path:'/home'}">主页</a> 跳转链接 展示内容:
<router-view></router-view>
js:
//1. 准备一个根组件
var App=Vue.extend(); //2. Home News组件都准备
var Home=Vue.extend({
template:'<h3>我是主页</h3>'
}); var News=Vue.extend({
template:'<h3>我是新闻</h3>'
}); //3. 准备路由
var router=new VueRouter(); //4. 关联(将组件名与定义的组件关联,之后就可以在html中通过v-link使用了)
router.map({
'home':{
component:Home
},
'news':{
component:News
}
}); //5. 启动路由
router.start(App,'#box'); 跳转(路由重定向):
router.redirect({
‘/’:'/home'
});
路由多层嵌套:在map关联的路由名称后的配置项subRoutes里进行配置次级路由
主页 home
登录 home/login
注册 home/reg
新闻页 news subRoutes:{
'login':{
component:{
template:'<strong>我是登录信息</strong>'
}
},
'reg':{
component:{
template:'<strong>我是注册信息</strong>'
}
}
}
路由其他信息:可以通过路由后面的参数传递,并在当前路由组件的模板中使用
/detail/:id/age/:age
{{$route.params | json}} -> 当前参数
{{$route.path}} -> 当前路径
{{$route.query | json}} -> 查询字符串数据
vue-loader(.vue文件加载器)
通过路由实现页面切换,项目实现单文件组件,即使用.vue文件,.vue文件的编译需要vue-loader处理
其他loader-> css-loader、url-loader、html-loader、file-loader.....
后台: nodeJs -> require exports
browserify 模块加载,只能加载js
webpack 模块加载器, 一切东西都是模块, 最后打包到一块了 (包括图片、css)
require('style.css'); -> css-loader、style-loader
vue-loader基于webpack
.vue文件
vue单文件组件,放置的是vue组件代码,结构包括三部分
<template>
html
</template> <style>
css
</style> <script>
//js (平时代码、ES6) babel-loader(编译es6)
export default{
//里面像组件使用一样的
data(){
return {
msg:'welcome Vue'
}
}
}
</script>
3、vueJs基础知识03的更多相关文章
- vue面试题整理vuejs基础知识整理
初级参考 1.v-show 与 v-if 区别 v-show 是css隐藏,v-if是直接销毁和创建,所以频繁切换的适合用v-show 2.计算属性和 watch 的区别 计算属性是自动监听依赖值的变 ...
- 6、vueJs基础知识06
vue动画 transition 之前1.0版本是以 属性的形式展示的 <p transition="fade"></p> .fade-transition ...
- 1、vueJs基础知识01
vue是框架,vue.js是vue框架的核心js库 库:是一个封装好的特定的方法的集合,提供给开发者使用,库没有控制权,控制权在使用者手中.代表:jQuery.underscore.util 框架:框 ...
- Android基础知识03—Activity的基本用法
------Activity 活动------ 活动 Activity 是一种包含用户界面的组件,即一个界面就是一个活动 创建活动的过程: >> 创建一个类,继承自Activity类,并且 ...
- 7、vueJs基础知识07
UI组件库 element-ui和mint-ui 其实都是借鉴了bootstrap bootstrap: 由twitter 开源 简洁.大方 官网文档https://www.bootcss.com/ ...
- 5、vueJs基础知识05
vue2.0相比于1.0的变化 1.在每个组件模板中,不再支持片段代码,需要一个根元素包裹 组件中模板: 之前: <template> <h3>我是组件</h3>& ...
- 4、vueJs基础知识04
简单的目录结构: |-index.html |-main.js 入口文件 |-App.vue vue文件(组件),官方推荐命名法(首字母大写) |-components 组件存放的文件夹 | ...
- 2、vueJs基础知识02
vue生命周期: 钩子函数: created -> 实例已经创建 √ beforeCompile -> 编译之前 compiled -> 编译之后 ready -> 插入到文档 ...
- python基础知识0-3
一.根据用户输入内容输出其权限 # 根据用户输入内容打印其权限 # FYT --> 超级管理员 # eric --> 普通管理员 # tony,rain --> 业务主管 # ...
随机推荐
- node作为前台的项目如何打包静态js和css并生成版本号,loader插件的使用
一.使用场景: 1.node创建的前台项目需要输入地址展示页面 2.有设置缓存或者cdn的需要在静态文件更改时能使用新的而不是缓存的,需要版本号这里 3.可能需要压缩静态文件的 二.一些参考地址,需要 ...
- HTML5的常用的标签
HTML5对比HTML4新增了很多元素,也删除了部分元素(可以用css样式表方式替代)所以我只列出HTML5最常用的几个标签. head标签中: <meta http-equiv="X ...
- CentOS下安装mysql-server提示No package mysql-server avaliable
出现这个原因是CentOS使用mariadb-server代替掉了mysql-server,因此如果想使用mysql-server需要先更新仓库地址,使用以下命令: wget http://repo. ...
- session 在PC端正常设置读取,在移动端无法正常读取
一.背景 最近在做一个面向三端[H5.IOS.安卓]的短信验证码登录接口.发送短信验证码时,服务端通过 session 保存验证码的值.登录时,从 session 获取验证码和用户输入的验证码 相比较 ...
- JAVA基础之XML相关
个人理解: 知晓XML与HTML的不同,知道其的自由性和约束的方式(规范)!数据按Schema约束写到XML里,然后通过dom4j解析出所有的元素,再用反射创建对象接着调出其所有的方法!!!特别要熟练 ...
- Python学习日记(二) list操作
l = ['a','b','c','d',1,2,[3,'e',4]] 1.list.append() 在list的结尾新增一个新的元素,没有返回值,但会修改原列表 l.append(5) print ...
- python selenium八大定位方法
一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...
- c# HashTable 类
- python之while循环用法举例,break与continue的区别,格式化输出及运算符
一.while循环的基本结构 while 条件: 代码块(循环体) else: 当上面的条件为假. 才会执行 执行顺序:判断条件是否为真. 如果真. 执行循环体. 然后再次判断条件....直到循环条件 ...
- 利用Minhash和LSH寻找相似的集合
from: https://www.cnblogs.com/bourneli/archive/2013/04/04/2999767.html 问题背景 给出N个集合,找到相似的集合对,如何实现呢?直观 ...