# 笔记
## 脚手架文件结构
├── 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学习1111111111
需积分: 0 73 浏览量
更新于2025-06-22
收藏 433KB 7Z 举报
根据您提供的信息,文件内容涉及到的是有关Vue的学习资料,具体包括两个子文件,分别是"vue_test"和"vue_basic"。由于没有具体的文件内容提供,以下内容将基于Vue框架的基础知识点进行拓展,以达到1000字以上的字数要求。
Vue.js是一种流行的JavaScript框架,用于构建用户界面和单页应用程序。它采用组件化的开发方式,使得开发者能够以最小的耦合快速开发出可维护的界面。Vue的核心库只关注视图层,易于上手,并且可以通过其生态系统中的各种库和工具来扩展功能。
在学习Vue时,通常会从基础的指令、组件、数据绑定开始。例如,Vue提供了一套简洁的模板语法,允许开发者通过指令如v-bind、v-model等快速地将数据绑定到DOM上,实现数据与视图的双向绑定。在"vue_test"这个子文件中,可能包含了对Vue基础功能的测试和示例代码,通过编写测试用例来验证Vue的响应式系统和数据绑定的正确性。
组件化是Vue的另一个核心概念。每个组件可以包含自己的HTML模板、JavaScript逻辑处理以及CSS样式。在"vue_basic"这个子文件中,可能介绍了如何创建Vue组件,以及如何通过props、events等机制在组件之间传递数据。组件的设计理念极大地提高了代码的复用性,并且有助于维护和扩展大型项目。
Vue实例是Vue应用的中心,所有的Vue组件都是Vue实例的子类。在实例化Vue时,可以通过el选项指定挂载目标,data选项定义数据,methods选项定义可复用的方法。在"vue_test"或"vue_basic"文件中,应该有这些基础概念的测试和实践,确保学习者能够理解和运用这些核心概念。
除了基础之外,Vue还提供了许多高级特性,比如过渡效果、混入、自定义指令等,这些都能够在实际项目中增加交云动性和代码的复用度。在"vue_basic"文件中,学习者可能还会接触到Vue Router和Vuex,这两个库分别用于构建单页应用程序的路由系统和状态管理模式。
Vue Router是Vue.js的官方路由器。它和Vue.js的深度集成,让构建单页应用变得轻而易举。Vuex是专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
在学习Vue的过程中,理解其响应式原理也是非常重要的。Vue通过Object.defineProperty()方法实现了数据的响应式,当数据变化时,视图会自动更新。这种数据驱动视图的方式极大地简化了前端代码的复杂性。
Vue社区活跃,有着丰富的插件和扩展库,如Vue CLI用于快速搭建项目脚手架,Element UI和Vuetify等UI框架提供了丰富的组件库,使得开发工作更加高效。
总结而言,Vue学习不仅仅局限于基本的概念和功能,还需要通过实践来加深对组件化、状态管理、路由管理以及整个生态系统中各种工具和库的理解。通过编写示例项目和测试代码,学习者可以将理论知识转化为实际开发能力,更好地适应现代前端开发的需求。

那一抹,,,斜阳
- 粉丝: 1
最新资源
- 综合布线系统工程的投标.doc
- 数据结构(C语言版)-期末复习汇总.doc
- (精品)继续教育专业技术人员网络安全建设和网络社会治理答案.doc
- 电子商务专业实习报告.docx
- (源码)基于LoRa通信协议的公共交通监控系统.zip
- 用条码标签打印软件打印实时日期.pdf
- 用友电子商务解决方案BC商城标准版-V2.ppt
- 微博营销-新型网络营销工具.pptx
- 计算机科学导论第一章绪论演稿.ppt
- (源码)基于Kosagi Novena母板的电路板设计项目.zip
- (源码)基于C语言的可变参数调用库系统.zip
- (源码)基于Python的分类模型项目.zip
- 借助百度AI 实现文字识别,语音识别,图像识别等等
- (源码)基于微信小程序的闪视数据可视化系统.zip
- (源码)基于ROS 2框架的机器人手臂遥控系统.zip
- (源码)基于Arduino IDE的水质监测系统.zip