vue 基础笔记
Vue01笔记
- ES6模块使用和新的函数声明方式
a) Import 一定不能放在函数内, 建议放在上方
b) Export 除了声明式的以外, 尽量放在代码的下方
- Import {name,age} form ‘./xxx.js’
- 今日重点
a) Webpack-dev-server
b) 是一个服务器, 每次启动会分配意义端口, 类似与sublime server的一个工具
- 自动刷新inline
- 热加载 热替换 hot 完全没有刷新的操作
- Open 自动打开默认浏览器
也可以结合 package.json文件中的script属性, 如果不记得, 执行的命令建议都是npm run脚本npm run 不能解决../操作 所以要用yarn (yarn run test)
- 在运行中 --> 加载 在运行中 ----> 替换
1. 安装 npm i webpack-dev-server -D
2. 使用命令 ./或者是 ../node_mudules/.bin/webpack-dev-sever --inline --hot --open
Webpack里面的坑: 如果启动的目录所有上级文件夹名称包含{} [] , 自动刷新和热加载 替换功能失效, 不要在文件夹上加入特殊符号
Vue
- 历史背景
- Vue特点
a) 双向数据绑定 --> 数据劫持 --> 操作虚拟DOM
- Div p 对于这样的结构操作元素性能比较差,
- domOBJ = {children : {name:’div’ , children:{name:p}}} 通过sett的触发, 修改完虚拟的DOM树, 一次性更新html元素内容innerHTML
- Vue实例的相关属性 (渐进式框架)
b) 用途 : 渐进视第一章(作为库使用的基本操作) --双向数据绑定功能
解决闪烁问题 v-bind v-cloak
引入包以后, 内部提供了一个vue对象
<div id=’app’>
<p v-cloak>{{msg}}</p> //双向数据绑定
<input typ=”text” name=”” v-bind: value=”msg”> //单向数据绑定
<input typ=”text” name=”” v-model=”msg”> //双向数据绑定
</div>
//引入包之后, 内部有一个vue对象
Var vm = new Vue({
el:’#app’, //跟页面上的id名是对应的 指定你要被控制的模板元素, 此时所有的操作可以在其内部发生影响
Data: { //在前端引包的
msg:’hello vue’ //相当于innerH
}
Template{ //可以传递一个字符串模板, 其中可以包含插值表达式{{xxx}} , 如果你当前给了template, 那么原来的元素将会被替换
}
})
Var msg = ‘124’; //数据劫持, 当vm原型上的属性发生了改变,此时
b) 搭建一个单文件vue项目
- 单文件vue, 是一个一个的.vue文件组成的
- 保证当前的webpack.config.js这个文件所在的上级或者上上级能够找到node_module/.bin/webpaack-dev-server.cmd这个文件, 接下来就可以按照这个路径去执行该文件, 不需要后缀名, 给上参数
- Webpack.config.js文件中加入loader
- webpack上面的配置,
- 安装依赖包
- 首先在html代码中加入 div id=”app”
- 进入到main.js中, 做你要做的事, 构建一个vue对象的实例, 并且指定render让其渲染
- 引入vue对象 , 引入app.vue, 将其完成初始化, 指定控制节点元素 el
- 创建app.vue文件, 特点一: 顺序 template --> script --> style 都是标签, template中只要保证存在一个根节点, vue可以有多个跟节点, 必须是这个样子, script 内部需要导出一个对象 export default{} , data必须是一个函数, 该函数的返回值必须是一个对象, 这个对象的时候, 可以在当前app.vue的templa中使用
new Vue({
el: ‘#app’, //不建议el指定为html / body
data(){ //这里的data必须是一个函数, 返回值必须是一个对象 ,data () ES6函数声明的方式
return{} //声明了一个数据对象, 没有通过template这样的属性提示, 而是直接通过render渲染另一个单文件vue
},
render:function(creater) {return creater(app)}
//简洁版 render:c => c(app)
//声明了一个数据对象,
})
//第一部分
<template> //模板的位置, nebulizer是html内容和vue的一些变量的使用 {{xxx}}
<div class = “tmpl” > {{}}</div>
</template>
//第二部分
<script> //这个组件对象需要向外暴露
export dafault{ //向外暴露的
data{
return{ xx:’aaa’}
}
}
</script>
//第三部分
<style> //写css </style>
小结 : 入口 html -> 加入div标签加入id -> 不建议el指定为html / body 标签
Vue 常用指令
v-cloak 先让当前的隐藏掉, 解决闪烁问题
v-text 显示文本内容
v-if 元素是否隐藏 true/false , 是false代表没有
v-show 元素在页面中隐藏改变元素的style true/false只是将display: none,
v-model 双向数据绑定
v-bind 绑定一个属性 v-bind: 属性=”值”, 也可以操作data上的属性, 简写: + : 属性 = ‘值’
v-html 绑定的属性可以html里的标签
v-class ,灵活配置, 需要结合v-bind来完成,
v-for的使用
数组的for v-for=’(item ,index)in list’; (值,索引)
对象的for v-for=’(item ,key,index)in obj’; (值,键,索引), 如果给v-for绑定一 个key, v-for=”(item,index) in person”:key=”item.id”那么会让其在增加或者删除元素的时候, vue需要根据特定算法计算该对象的唯一标识, 而是直接用你指定的这个,提升性能
子组件使用
Components属性
当前组件和data属性是同一级的地方加上一个components属性, 其内部是一个对象, 可以有多个属性, 如果你属性名和属性的值, 用同一个的话, 可以简写 {componet1,componet2}, 组件建议使用首字母大写, 在js中如果你需要使用这个组件的 时候, 毫无疑问, 先__导入子组件__, 对于标签名, 开头的大写字母可以直接小写, 中间的大写字母可以加上-再小写
父向子组件传值
如果需要向子组件传值, 非常简单, 会有自己的$parent属性, 每 个组件对象如果有的情况下, 也会有自己的$children属性, 同名都是VueComponent对象
发射器
$on 当某个VueComponent对象调用 $on(‘eventName’,callback(msg){msg;})
$emit 上面那个函数在该对象调用的时候$emit的时候触发, 触发多次 this.$parent.$emit('eventName','haha');
$once 和on一样, 但是该事件的回调函数只会被触发一次
选项/什么周期钩子
所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和方法进行运算。这意味着 你不能使用箭头函数来定义一个生命周期方法 (例如 created: () => this.fetchTodos())。这是因为箭头函数绑定了父上下文,因此 this与你期待的 Vue 实例不同, this.fetchTodos 的行为未定义。
Created
实例已经创建完成之后被调用, 在这一步, 实例已经完成以下的配置: 数据观测, 属性和方法的运算, watch/event事件回调, 然而挂载属性还没开始, $el属性目前不可见
Prop
组件的实例作用域是孤立的, 这意味着不能在子组件的模板内直接引用父组件的数据, 要让子组件使用父组件的数据, 我们需要通过子组件的props选项, 也可以向他传入一个字符串 <child message="hello!"></child> 最后输出 hello
vue 基础笔记的更多相关文章
- Vue基础笔记4
路由传参 第一种 router.js { path: '/course/detail/:pk/', name: 'course-detail', component: CourseDetail } 传 ...
- Vue基础笔记3
插槽指令 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- Vue基础笔记2
目录 1. 如何获取Vue对象中的成员? 2. pre指定 3. for循环 4. todolist 5. 分隔符 6. computed 计算后的 7. vue的生命周期(讲解不全) 8. watc ...
- vue基础笔记
目录 Vue 渐进式 JavaScript 框架 一.走进Vue 二.Vue实例 三.生命周期钩子 四.Vue指令 五.组件 六.Vue-CLI 项目搭建 Vue 渐进式 JavaScript 框架 ...
- Vue学习笔记-Vue基础入门
此篇文章是本人在学习Vue是做的部分笔记的一个整理,内容不是很全面,希望能对阅读文章的同学有点帮助. 什么是Vue? Vue.js (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式 ...
- vue 学习笔记(二)
最近公司赶项目,一直也没时间看 vue,之前看下的都快忘得差不多了.哈哈哈,来一起回顾一下vue 学习笔记(一)后,继续向下看嘛. #表单输入绑定 基础用法 v-model 会忽略所有表单元素的 va ...
- vue.js笔记总结
一份不错的vue.js基础笔记!!!! 第一章 Vue.js是什么? Vue(法语)同view(英语) Vue.js是一套构建用户界面(view)的MVVM框架.Vue.js的核心库只关注视图层,并且 ...
- Vue:实践学习笔记(1)——快速使用
Vue:实践学习笔记(1)——快速使用 Vue基础知识 0.引入Vue 官方地址:Vue的官方下载地址 Vue推荐博客:keepfool 在你的程序中快速引入Vue: <!-- 开发环境版本,包 ...
- vue学习笔记(八)组件校验&通信
前言 在上一章博客的内容中vue学习笔记(七)组件我们初步的认识了组件,并学会了如何定义局部组件和全局组件,上一篇内容仅仅只是对组件一个简单的入门,并没有深入的了解组件当中的其它机制,本篇博客将会带大 ...
随机推荐
- MySQL性能优化(十)-- 主从复制(一主多从)
环境准备: Linux1(matser) Linux2(slave) Linux3(slave) 搭建 1.先清空原来的master和slave配置 reset master; 2.
- Linux 远程同步:rsync
rsync 简介: (1) rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件(2) rsync 使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步 ...
- Oracle函数的使用
日期转换to_date insert into test (birthday,name) values (to_date('2016-03-12','yyyy-mm-dd'),'zy'); to_ch ...
- EL表达式各种函数使用大全
引入<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> ...
- Sencha Cmd创建Ext JS示例项目
Sencha提供了免费的Cmd工具,可以用来创建Ext JS项目并提供了一些便利的功能. Sencha也在官方文档中提供了一个示例来演示如何创建一个Sample Login App. 本文就介绍一下这 ...
- 【PHP】数字补零的两种方法
在php中有两个函数,能够实现数字补零, str_pad() sprintf() 函数1 : str_pad 顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串 例如:str ...
- Linux下多任务间通信和同步-mmap共享内存
Linux下多任务间通信和同步-mmap共享内存 嵌入式开发交流群280352802,欢迎加入! 1.简介 共享内存可以说是最有用的进程间通信方式.两个不用的进程共享内存的意思是:同一块物理内存被映射 ...
- 《转载》struts旅程《2》
上一篇我们简单了解了struts原理,学习SSH,第一部是傻瓜式学习法,人家怎么做就跟着怎么做就ok.我们以登录为例,Struts配置步骤总结如下(如图2.1): 图2.2 1. j ...
- weblogic新漏洞学习cve-2017-10271
一.原理: 很明显啦,readobject又出来背锅了,一个XML的反序列化漏洞导致的命令执行. 具体原理我看不懂java代码的我也只能学习别人的分析.给出一篇参考文章,写的非常详细: 漏洞原理 二. ...
- call和apply方法
/* * @ call和apply方法 * @ 当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作. * @ (有方法的)对象.call(" ...