# 笔记
## 脚手架文件结构
├── node_modules
├── public
│ ├── favicon.ico: 页签图标
│ └── index.html: 主页面
├── src
│ ├── assets: 存放静态资源
│ │ └── logo.png
│ │── component: 存放组件
│ │ └── HelloWorld.vue
│ │── App.vue: 汇总所有组件
│ │── main.js: 入口文件
├── .gitignore: git版本管制忽略的配置
├── babel.config.js: babel的配置文件
├── package.json: 应用包配置文件
├── README.md: 应用描述文件
├── package-lock.json:包版本控制文件
## 关于不同版本的Vue
1. vue.js与vue.runtime.xxx.js的区别:
1. vue.js是完整版的Vue,包含:核心功能 + 模板解析器。
2. vue.runtime.xxx.js是运行版的Vue,只包含:核心功能;没有模板解析器。
2. 因为vue.runtime.xxx.js没有模板解析器,所以不能使用template这个配置项,需要使用render函数接收到的createElement函数去指定具体内容。
## vue.config.js配置文件
1. 使用vue inspect > output.js可以查看到Vue脚手架的默认配置。
2. 使用vue.config.js可以对脚手架进行个性化定制,详情见:https://cli.vuejs.org/zh
## ref属性
1. 被用来给元素或子组件注册引用信息(id的替代者)
2. 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
3. 使用方式:
1. 打标识:```<h1 ref="xxx">.....</h1>``` 或 ```<School ref="xxx"></School>```
2. 获取:```this.$refs.xxx```
## props配置项
1. 功能:让组件接收外部传过来的数据
2. 传递数据:```<Demo name="xxx"/>```
3. 接收数据:
1. 第一种方式(只接收):```props:['name'] ```
2. 第二种方式(限制类型):```props:{name:String}```
3. 第三种方式(限制类型、限制必要性、指定默认值):
```js
props:{
name:{
type:String, //类型
required:true, //必要性
default:'老王' //默认值
}
}
```
> 备注:props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。
## mixin(混入)
1. 功能:可以把多个组件共用的配置提取成一个混入对象
2. 使用方式:
第一步定义混合:
```
{
data(){....},
methods:{....}
....
}
```
第二步使用混入:
全局混入:```Vue.mixin(xxx)```
局部混入:```mixins:['xxx'] ```
## 插件
1. 功能:用于增强Vue
2. 本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。
3. 定义插件:
```js
对象.install = function (Vue, options) {
// 1. 添加全局过滤器
Vue.filter(....)
// 2. 添加全局指令
Vue.directive(....)
// 3. 配置全局混入(合)
Vue.mixin(....)
// 4. 添加实例方法
Vue.prototype.$myMethod = function () {...}
Vue.prototype.$myProperty = xxxx
}
```
4. 使用插件:```Vue.use()```
## scoped样式
1. 作用:让样式在局部生效,防止冲突。
2. 写法:```<style scoped>```
## 总结TodoList案例
1. 组件化编码流程:
(1).拆分静态组件:组件要按照功能点拆分,命名不要与html元素冲突。
(2).实现动态组件:考虑好数据的存放位置,数据是一个组件在用,还是一些组件在用:
1).一个组件在用:放在组件自身即可。
2). 一些组件在用:放在他们共同的父组件上(<span style="color:red">状态提升</span>)。
(3).实现交互:从绑定事件开始。
2. props适用于:
(1).父组件 ==> 子组件 通信
(2).子组件 ==> 父组件 通信(要求父先给子一个函数)
3. 使用v-model时要切记:v-model绑定的值不能是props传过来的值,因为props是不可以修改的!
4. props传过来的若是对象类型的值,修改对象中的属性时Vue不会报错,但不推荐这样做。
## webStorage
1. 存储内容大小一般支持5MB左右(不同浏览器可能还不一样)
2. 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。
3. 相关API:
1. ```xxxxxStorage.setItem('key', 'value');```
该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。
2. ```xxxxxStorage.getItem('person');```
该方法接受一个键名作为参数,返回键名对应的值。
3. ```xxxxxStorage.removeItem('key');```
该方法接受一个键名作为参数,并把该键名从存储中删除。
4. ``` xxxxxStorage.clear()```
该方法会清空存储中的所有数据。
4. 备注:
1. SessionStorage存储的内容会随着浏览器窗口关闭而消失。
2. LocalStorage存储的内容,需要手动清除才会消失。
3. ```xxxxxStorage.getItem(xxx)```如果xxx对应的value获取不到,那么getItem的返回值是null。
4. ```JSON.parse(null)```的结果依然是null。
## 组件的自定义事件
1. 一种组件间通信的方式,适用于:<strong style="color:red">子组件 ===> 父组件</strong>
2. 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(<span style="color:red">事件的回调在A中</span>)。
3. 绑定自定义事件:
1. 第一种方式,在父组件中:```<Demo @atguigu="test"/>``` 或 ```<Demo v-on:atguigu="test"/>```
2. 第二种方式,在父组件中:
```js
<Demo ref="demo"/>
......
mounted(){
this.$refs.xxx.$on('atguigu',this.test)
}
```
3. 若想让自定义事件只能触发一次,可以使用```once```修饰符,或```$once```方法。
4. 触发自定义事件:```this.$emit('atguigu',数据)```
5. 解绑自定义事件```this.$off('atguigu')```
6. 组件上也可以绑定原生DOM事件,需要使用```native```修饰符。
7. 注意:通过```this.$refs.xxx.$on('atguigu',回调)```绑定自定义事件时,回调<span style="color:red">要么配置在methods中</span>,<span style="color:red">要么用箭头函数</span>,否则this指向会出问题!
## 全局事件总线(GlobalEventBus)
1. 一种组件间通信的方式,适用于<span style="color:red">任意组件间通信</span>。
2. 安装全局事件总线:
```js
new Vue({
......
beforeCreate() {
Vue.prototype.$bus = this //安装全局事件总线,$bus就是当前应用的vm
},
......
})
```
3. 使用事件总线:
1. 接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的<span style="color:red">回调留在A组件自身。</span>
```js
methods(){
demo(data){......}
}
......
mounted() {
this.$bus.$on('xxxx',this.demo)
}
```
2. 提供数据:```this.$bus.$emit('xxxx',数据)```
4. 最好在beforeDestroy钩子中,用$off去解绑<span style="color:red">当前组件所用到的</span>事件。
## 消息订阅与发布(pubsub)
1. 一种组件间通信的方式,适用于<span style="color:red">任意组件间通信</span>。
2. 使用步骤:
没有合适的资源?快使用搜索试试~ 我知道了~
Vue的学习的前端之旅
共482个文件
vue:234个
js:109个
html:82个
需积分: 15 0 下载量 19 浏览量
2022-07-15
16:43:56
上传
评论
收藏 4.06MB 7Z 举报
温馨提示
Vue的学习的前端之旅
资源详情
资源评论
资源推荐
收起资源包目录
Vue的学习的前端之旅 (482个子文件)
bootstrap.css 151KB
bootstrap.css 151KB
index.css 199B
chunk-c0fccb2e.8050617e.css 45B
app.a1be9af5.css 40B
.gitignore 231B
.gitignore 231B
.gitignore 44B
10.总结Vue数据监测.html 3KB
1.自定义指令.html 3KB
绑定样式.html 3KB
1.基本使用.html 3KB
2.事件修饰符.html 3KB
收集表单数据.html 3KB
Vue3的响应式原理.html 2KB
2.key的原理.html 2KB
3.姓名案例_计算属性实现.html 2KB
4.VueComponent.html 2KB
收集表单数据.html 2KB
3.天气案例_深度监视.html 2KB
过滤器.html 2KB
条件渲染.html 2KB
初识Vue.html 2KB
事件修饰符.html 2KB
3.总结生命周期.html 2KB
03_天气案例_深度监视.html 2KB
2.几个注意点.html 2KB
5.一个重要的内置关系.html 2KB
3.键盘事件.html 2KB
3.列表过滤.html 2KB
1.事件的基本使用.html 2KB
9.Vue监测数据改变的原理_数组.html 2KB
1.基本列表.html 2KB
绑定样式.html 2KB
3.组件的嵌套.html 2KB
2.天气案例_监视属性.html 2KB
5.姓名案例_watch实现.html 2KB
4.天气案例_监视属性_简写.html 1KB
el与data的两种写法.html 1KB
4.列表排序.html 1KB
列表过滤.html 1KB
8.Vue.set的使用.html 1KB
2.分析生命周期.html 1KB
更新时候的问题.html 1KB
模板语法.html 1KB
1.引出生命周期.html 1KB
数据绑定.html 1KB
列表排序.html 1KB
列表过滤_计算属性.html 1KB
2.v-html_指令.html 1KB
1.v-text_指令.html 1KB
02_天气案例_监视属性 copy.html 1KB
5.更新时的一个问题.html 1KB
基本列表.html 1KB
4.姓名案例_计算属性简写.html 1KB
key的原理.html 1KB
Vue中的MVVM.html 1KB
04_天气案例_监视属性_简写.html 1KB
sessionStorage.html 1KB
3.Vue中的数据代理.html 1KB
localStorage.html 1KB
1.回顾Object.defineProperty方法.html 1KB
条件渲染.html 1KB
object_property.html 1KB
index.html 1014B
05_姓名案例_watch.html 958B
index.html 908B
基本的事件处理.html 907B
1.天气案例.html 905B
7.模拟一个数据监测.html 889B
3.v-cloak_指令.html 876B
4.v-once_指令.html 816B
2.姓名案例_methods实现.html 810B
5.v-pre_指令.html 782B
6.Vue监测数据改变的原理_对象.html 759B
过滤器.html 754B
键盘事件.html 713B
index.html 707B
1.姓名案例_插值语法实现.html 696B
2.回顾一个DOM操作.html 695B
index.html 658B
Vue检测数据改变的原理.html 601B
Vue中的数据代理.html 597B
v-text指令.html 586B
2.何为数据代理.html 458B
何为数据代理.html 405B
index.html 352B
index.html 313B
v-html指令.html 0B
模拟数据监测的原理.html 0B
favicon.ico 4KB
favicon.ico 4KB
favicon.ico 4KB
favicon.ico 1KB
favicon.ico 1KB
favicon.ico 1KB
vue.js 346KB
vue.js 336KB
chunk-vendors.56b829d5.js 124KB
vue.min.js 92KB
共 482 条
- 1
- 2
- 3
- 4
- 5
127.0.0.0:8848
- 粉丝: 3
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0