# Vue2-study **Repository Path**: ouzai-zai/vue2-study ## Basic Information - **Project Name**: Vue2-study - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-18 - **Last Updated**: 2021-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README --- typora-copy-images-to: img typora-root-url: README.assets --- # VUE ## 一、认识Vue - vue是一个渐进式框架,渐进式意味着你可以将vue作业的一部分嵌入其中。 - vue的特点和web开发常用的高级功能:解耦视图和数据、可复用的组件、前端路由技术、状态管理、虚拟DOM ## 二、初识 - 定义变量:let(变量) const(常量,不可赋值) - el //用于要挂载要管理的元素 - data //定义数据 ## 三、列表显示 - v-for 遍历数组 item in movies 指把movies遍历传到item里也是响应式的 ## 四、案例:计数器 - methods,该属性用于在vue对象中定义方法 - @click,该指令用于监听某个元素的点击事件,点击时执行该方法,是v-for的一个简写 ## 五、语法 1. Mustache:{{内容}} 2. v-once:该指令后不需跟任何表达式,该指令表示元素和组件只渲染一次,不会随着数据改变而改变 3. v-html:url直接用{{}}输出,会将html代码一起输出,可以使用v-html,该指令后面往往会跟上一个string类型,将string的html解析出来并渲染,用于字符串有html标签的内容 4. v-text:类似于Mustache,一般不用 5. v-pre:将标签内的内容原封不动的输出,不做任何解析 6. v-cloak:在vue解析之前,div中有v-cloak属性,解析之后,div中v-cloak属性移除,v-cloak需要在css定义样式 1. ```html
{{context}}
``` 2. ```css [v-cloak]{ display: none; } ``` 7. v-bind:动态绑定url地址,``,简写:`` 8. v-bind:动态绑定class类名,`

{{message}}

`,一般不写在html里,写在data里定义一个属性,值为true/false,然后将属性名写在html中的true/false上 9. v-bind:动态绑定style(对象语法),`

{{message}}

` 10. v-bind:动态绑定style(数组语法)`

{{message}}

`bStyle为data里设置的变量 11. 计算属性computed:和data同级,也是写函数在里面,调用的时候不需要(),methods里写的函数调用需要加() 12. methods里的函数多次调用需要执行多次,而computed里的函数多次调用只需执行一次 13. var / let创建变量,const创建常量,在es6开发时优先使用const,只有需要改变某一个标识符的时候才使用let( ) 14. const:常量的含义是指向的对象不能修改,但可以改变对内部的属性。 1. ```js const obj{ name: 'abc', age: '18', height:'1.88' } obj.name= 'kobe', obj.age= '40', obj.height= '190' ``` 15. v-on click.stop修饰符:阻止冒泡 16. v-on click.prevent修饰符:阻止默认事件 17. v-on keyup:监听键盘键帽回弹 18. v-on keyip.q:监听Q键 19. v-if:当条件为false时,包含v-if指令元素,根本就不会存在dom中 20. v-show:当条件为false时,v-show只vft是给我们的元素添加一个行内样式:display:none 21. v-for 遍历数组 / 对象(v-for="item in info),item为名,infor为定义的数组名 / 对象名 22. v-for 插入key值 23. 非响应式的方法和响应式方法: 1. push在最后添加元素,响应式,可一次性多加很多元素 this.letters.push('aaa','bbb'); 2. 通过索引值修改数组元素,非响应式 this.letters[0] = 'bbbb' 3. pop删除最后一位数组元素,响应式 this.letters.pop(); 4. shift删除数组第一个元素,响应式 this.letters.shift(); 5. unshift在数组最前面添加元素,可一次性多加很多元素,响应式 this.letters.unshift('111','222','333'); 6. splice作用:删除元素 / 插入元素 / 替换元素,响应式 splice([从第几个元素],[删除几个],[插入什么]) this.letters.splice(1,2,'6'); 7. sort让数组排序 this.letters.sort(); 8. reverse将数组内容反转 this.letters.reverse(); 9. set(要修改的数组, 索引,修改后的值) Vue.set(this.letters, 0 ,'abcdefg') 24. 高阶函数: 1. filter( )用于对数组进行过滤 2. map( ) 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 3. reduce( )计算数组元素相加后的总和 25. v-model:双向绑定事件,改变其中一个值另一边也会同时改变 26. v-model:修饰符.lazy,让数据在失去焦点或回车时才更新 27. v-model:修饰符number,input输入框双向绑定默认为srtring属性,使用.number之后可以不用类型转换了 28. v-model:修饰符trim,去除input输入框内多余的空格 ## 六、VUE组件 > 组件使用分为:创建组件构造器,注册组件,使用组件 ![](README.assets/image-20210712210127148-163175807481511.png) > props的传值(父传子): ![](README.assets/image-20210714220455525-16317577535091.png) 1. props的传值(子传父): 1. 在子组件中,通过$emit()来触发事件 2. 在父组件中,通过v-on来监听子组件事件 2. 父子组件的访问方式: 1. 父组件访问子组件使用:$children 2. 子组件访问父组件使用:$paren 3. 子组件访问根组件使用:$root 4. 子组件访问父组件使用:$refs > 插槽 1. 插条slot的使用,在模板中加入``标签,标签内加入的为默认元素,如果有多个值,同时放入到组件进行替换时,会全部替换 > 导入导出 1. 模块化开发:给引用的js文件加type='module',让每个文件的变量不可互通,但是可以用export导出变量,再用import导入即可使用 2. 特殊的export default导出,可以让导入者随意命名 ![](README.assets/image-20210815233802527.png) ![image-20210815233812792](README.assets/image-20210815233812792.png) ## 七、webpack ### (一)、webpack的安装 1. 需要有node.js文件,查询node.js版本命令为:node -v,然后在cmd管理员内安装webpack,(npm是node.js自带的软件包工具,3.6.0为版本号,-g表示全局安装) 1. ```bash npm install webpack@3.6.0 -g ``` 2. 查询webpack版本号命令 1. ```bash webpack --version ``` 3. Ctrl + ~ 快捷方式打开终端 4. src文件夹为开发文件夹 5. dist为打包的文件夹 ### (二)、webpack自动打包 1. 手动创建webpack.config.js文件,里面创建path包,const path = require("path"),可是文件内没有path包,需要安装,在当前目录的终端写npm init进行初始化,需要填写一些信息,package name 命名,version 版本号,description 描述,配置完成会出现一个package.json文件,当需要node的一些东西的时候就可以用得上。 2. 在package.json文件中的scripts属性可定义脚本,当我们在终端使用npm run build,则调用 文件中scripts中的build,然后执行后面的内容: 1. ```js "build": "webpack" ``` 3. 这个webpack是优先在本地里找,在终端敲webpack是全局的。 4. 局部安装webpack 1. ```bash npm install webpack@3.6.0 --save-dev ``` ### (三)、loader > loader是webpack中的一个非常核心的概念 1. webpack是用来作什么的? 1. webpack会自动处理js之间相关的依赖。但是开发中不仅仅有js代码,也需要css、图片包括一些高级的将ES6转成ES5的代码,将scss、less转成css,将.jsx、.vue文件转成js文件等等。我们可以给webpack扩展对应的loader就可以了。 2. css-loader的使用过程: 1. 通过npm安装需要使用的loader 1. 具体配置步骤:https://webpack.docschina.org/loaders/#styling 2. 需要安装css-loader : 3. ```bash npm install --save-dev css-loader@2.0.2 ``` 4. 注意:css-loader只负责将css文件加载,不会进行解析,再安装style-loader负责将样式添加到MOD,解析 :npm install --save-dev style-loader@0.23.1 ​ 注意:使用多个loader时,是从右到左进行读取的 2. 在webpack.config.js中的modules关键字下进行配置 3. url-loader 1. url-loader是用来加载图片的loader,需要配置limit,limit值的计算为图片大小 (x)kb*1024,当加载的图片小于limit,会将图片编译成base64字符串形式,当大于limit,需要使用file-loader模块进行加载。 2. 但是使用file-loader时会发现图片并没有显示出来,那是因为图片路径不对,需要在output对象下添加一个属性publicPath,值为' 打包的那个文件夹 + / ',例如publicPath : ' dist / '. 3. 在url-loader配置中的options对象下加上 name属性,如:name:'img/[name].[hash:8].[ext]',img/是新建文件夹,[name]表示使用打包之前的图片名称,‘ . ’表示连接,[hash]表示打包时创建的hash值,[hash:8]表示只取hash值的前八位,[ext]是拓展名。 ### (四)、ES6语法处理 - 使用webpack打包时,它依然不会将ES6语法转换成ES5来打包,如果不转换,可能在一些浏览器上就无法使用,所以就需要安装babel,然后进行环境配置,再打包就能转换了。 - ```bash npm install --save-dev babel-loader@7 babel-core babel-preset-es2015 ``` ## 八、引入vue.js ### (一)、添加vue 1. 使用命令 1. ```bash npm install vue --save ``` 2. 在运用时,首先要依赖vue。 1. ```js import Vue from 'vue' ``` 3. 首次打包时,因为不支持template,所以需要在webpack中配置一些文件,不然就会报错 1. ```js module.exports = { resolve: { alias: { 'vue$':'vue/dist/vue.esm.js' } } } ``` ![](README.assets/image-20210816141318469.png) 1. runtime-only->代码中,不可以有任何的template 2. runtime-compiler->代码中,可以有template,因为有compiler可以用于编译template ### (二)、使用vue文件 - 创建一个.vue的文件,里面包含三个标签`