1.框架和库的区别:


框架:framework 有着自己的语法特点、都有对应的各个模块
库 library 专注于一点

框架的好处:

  1. 1.提到代码的质量,开发速度
  2. 2.提高代码的复用率
  3. 3.降低模块之间的耦合度
  4. (高内聚低耦合)

UI:user interface
GUI : graphical user interface
CLI : command line interface
API : application interface

思维模式的转换:

  1. 从操作DOM的思维模式 切换到 以数据为主

2.Vue概述


  1. 1what
  2. 是一个渐进式的构建用户界面的js框架
  3. 2where
  4. 小到的简单的表单处理,大到复杂的数据操作比较频繁的单页面应用程序
  5. 3why
  6. 1.方便阅读的中文文档
  7. 2.容易上手 (学习曲线比较缓和)
  8. 3.体积小
  9. 4.基于组件化的开发方式
  10. 5.代码的可读性、可维护性得到了提高
  11. 4how
  12. 工作方式:可以通过丰富的指令扩展模板,可以通过各种各样的插件来增强功能
  13.  
  14. 搭建环境:
  15. 方式1
  16. 全局安装 vue-cli
  17. $ npm install --global vue-cli
  18. # 创建一个基于 webpack 模板的新项目
  19. $ vue init webpack my-project
  20. # 安装依赖,走你
  21. $ cd my-project
  22. $ npm install
  23. $ npm run dev
  24. 方式2:
  25. 直接引入对应的js文件

3.Vue中基础知识


  1. 1、双花括号
  2. mustache(胡子)/interpolation(插值表达式)
  3.  
  4. 语法:
  5. <any>{{表达式}}</any>
  6. 作用:
  7. 将表达式执行的结果 输出当调用元素的innerHTML中;还可以将数据绑定到视图
  8.  
  9. 2、指令-循环指令
  10. 基本语法1
  11. <any v-for="tmp in array"></any>
  12. 基本语法2
  13. <any v-for="(value,index) in array"></any>
  14.  
  15. 作用:
  16. 在遍历array这个集合时,将临时变量保存在tmp中,创建多个any标签
  17.  
  18. 3、指令-选择指令
  19. 语法:
  20. <any v-if="表达式"></any>
  21. <any v-else-if="表达式"></any>
  22. <any v-else="表达式"></any>
  23. 作用:
  24. 根据表达式执行结果的真假,来决定是否要将当前的这个元素 挂载到DOM
  25.  
  26. 4、指令-事件绑定
  27. 语法:
  28. <any v-on:eventName="handleEvent"></any>
  29. 作用:
  30. 给指定的元素 handleEvent的方法绑定给指定eventName事件
  31.  
  32. 5、指令-属性绑定
  33. 基本语法:
  34. <any v-bind:myProp="表达式"></any>
  35. 补充,支持简写:
  36. <any :myProp="表达式"></any>
  37. 作用:
  38. 将表达式执行的结果 绑定 到当前元素的myProp属性
  39.  
  40. <img v-bind:src="'img/'+myImg" alt="">
  41. 动态样式绑定
  42. <p :style="{backgroundColor:myBGColor}">动态样式绑定</p>
  43.  
  44. 动态样式类绑定
  45. <h1 :class="{myRed:false}">动态样式类的绑定</h1>
  46.  
  47. 6、指令-双向数据绑定
  48. 方向1:数据绑定到视图
  49. 方向2:将视图中(表单元素)用户操作的结果绑定到数据
  50.  
  51. 基本语法:
  52. <表单元素 v-model="变量">
  53. </表单元素>

4.组件化


  1. 所谓的组件化,就像玩积木一样,把封装的组件进行复用,把积木(组件)拼接在一起,构成一个复杂的页面应用程序。
  2.  
  3. 组件树就是由各个组件构成的一种数据结构,它存在的意义是为了帮梳理应用程序
  4.  
  5. 1、组件的创建
  6. 全局组件
  7. Vue.component('my-com',{
  8. template:`
  9. <h2>it is a header</h2>
  10. `
  11. })
  12. 局部组件
  13. new Vue({
  14. components:{
  15. 'my-footer':{
  16. template:''
  17. }
  18. }
  19. })
  20. 2、组件使用
  21. 作为普通的标签去使用
  22. <my-com></my-com>
  23.  
  24. 3、注意事项
  25. 1.组件的id和使用方式 遵循烤串式命名方式:a-b-c
  26. 2.如果一个组件 要渲染多个元素,将多个元素放在一个顶层标签中,比如divform
  27. 3.全局组件可以用在idexample的范围内的任何一个组件内部,直接调用可以;但是局部组件只能在父模板中直接调用

5.自定义指令


  1. 1、创建和使用
  2. Vue.directive('change',{
  3. bind:function(el,bindings){
  4. //首次调用
  5. },
  6. update:function(el,bindings){
  7. //只要是有数据变化,都会调用
  8. },
  9. unbind:function(){
  10. //解绑
  11. }
  12. })
  13. <any v-change="count"></any>

6.过滤器


过滤器是针对一些数据 进行筛选、过滤、格式化等相关的处理,变成我们想要的数据

过滤器的本质 就是一个带有参数带有返回值的方法

Vue1. 支持内置的过滤器,但是Vue2. 就不再内置过滤器,但是支持自定义过滤器。

1、过滤器的创建和使用

  1. 1.创建
  2. Vue.filter(
  3. 'myFilter',
  4. function(myInput){
  5. //myInput是在调用过滤器时,管道前表达式执行的结果
  6. //针对myInput,按照业务需求做处理
  7. //返回
  8. return '处理后的结果'
  9. })
  10.  
  11. 2.使用
  12. <any>{{expression | myFilter}}</any>

2、如何在调用过滤器时,完成参数的发送和接受

  1. 1.发送
  2. <any>{{expression | myFilter(参数1,参数2)}}</any>
  3.  
  4. 2.接受
  5. Vue.filter('myFilter',function(myInput,参数1,参数2){
  6. return '处理后的结果'
  7. })

7.复合组件

  1. 知识回顾:
  2. Vue.component('my-header',{
  3. template:`<div></div>`
  4. });
  5.  
  6. <my-header></my-header>
  7.  
  8. 复合组件:并不是新的概念,就是一个组件,只不过这个组件中 可以调用其他的组件
  9.  
  10. 注意事项:
  11. 1.组件要渲染的内容 取决于在定义组件时template
  12.  
  13. <my-list>
  14. <my-item></my-item>
  15. </my-list>
  16. 效果是出不来的
  17. 2.允许在一个组件中,直接来调用另外一个组件

8.生命周期


  1. 四个阶段:
  2. create 准备工作 (数据的初始化。。。)
  3. mount 挂载前后针对元素进行操作
  4. update 数据发生变化,
  5. destroy 清理工作 (关闭定时器、集合清空..)
  6.  
  7. beforeCreate/created
  8. beforeMount/mounted
  9. beforeUpdate/updated
  10. beforeDestroy/destroyed

9.常用属性


  1. 1watch
  2. 1. 表单元素的双向数据绑定
  3. v-model="myValue"
  4. 2.监听
  5. watch:{
  6. myValue:function(newValue,oldValue){
  7.  
  8. }
  9. }
  10. 2computed
  11. 计算属于是用于在模板中,搞定复杂的业务逻辑,因为有依赖缓存。
  12. 1.指定计算属性
  13. computed:{
  14. myHandle:function(){
  15. return 数据
  16. }
  17. }
  18.  
  19. 2.调用
  20. <any>{{myHandle}}</any>

10.组件间通信


  1. 1、父与子通信 props down
  2. 1.发送
  3. <son myName='zhangsan'>
  4. </son>
  5. 2.接受
  6. son组件:
  7. Vue.component('son',{
  8. props:['myName'],
  9. template:`
  10. <p>{{myName}}</p>
  11. `
  12. })
  13.  
  14. 2、子与父通信 (events up)
  15. 1.绑定
  16. methods:{
  17. handleEvent:function(msg){}
  18. }
  19. <son @customEvent="handleEvent"></son>
  20. 2.触发
  21. 子组件内部:
  22. this.$emit(‘customEvent’,100);
  23.  
  24. 3ref(reference 引用/参考 外号)
  25. 帮助在父组件中 得到子组件中的数据、方法。
  26. 1.指定ref属性
  27. <son ref="mySon"></son>
  28.  
  29. 2.根据ref得到子组件实例
  30. this.$refs.mySon
  31.  
  32. 4$parent
  33. this.$parent得到父组件的实例
  34.  
  35. 5、兄弟组件通信
  36. 1.var bus = new Vue();
  37. 2.接收方
  38. bus.$on('eventName',function(msg){})
  39. 3.发送方
  40. bus.$emit('eventName',123);

11.补充组件创建的方式


  1. 1、直接在template属性中指定模板内容
  2. 1.全局组件
  3. Vue.component
  4. 2.局部组件
  5. {
  6. components:{
  7. 'my-footer':{template:``}
  8. }
  9. }
  10. 2、.vue结尾的文件
  11. <template></template>
  12. <script></script>
  13. <style></style>
  14. 3、单独指定一个模板内容
  15. <script
  16. id='myContent'
  17. type='text/x-template'>
  18. </script>
  19.  
  20. Vue.component('',{
  21. template:'#myContent'
  22. })

12.路由模块


路由模块的本质 就是建立起url和页面之间的映射关系

1、SPA的基本概念和工作原理

  1. SPAsingle page application 单一页面应用程序,只有一个完整的页面;
  2. 它在加载页面时,不会加载整个页面,而是只更新某个指定的容器中内容。
  3. 比如Gmail、移动的webApp
  4.  
  5. 工作原理:
  6. 1.解析地址栏
  7. 完整的页面地址、路由地址
  8. 2.根据路由地址 从路由词典中找到真正的要加载的页面
  9. 3.发起ajax请求
  10. 请求要加载的页面
  11. 4.像指定的容器中 插入加载来的页面

2、路由模块的基本使用

  1. 专业术语:
  2. router路由器
  3. route路由
  4. routes 路由数组(路由词典)
  5. 1.引入vue.js vue-router.js
  6. 2.指定一个容器
  7. <router-view></router-view>
  8. 3.创建业务所需要用到的组件类
  9. var MyLogin = Vue.component()
  10. 4.配置路由词典
  11. const myRoutes = [
  12. {path:'',component:MyLogin},
  13. {path:'/login',component:MyLogin}
  14. ];
  15.  
  16. const myRouter = new VueRouter({
  17. routes:myRoutes
  18. })
  19.  
  20. new Vue({
  21. router:myRouter
  22. })
  23. 5.测试
  24. 修改地址栏中的路由地址,测试看加载的组件是否正确
  25.  
  26. 注意事项:
  27. 1.先引入vue,再引入插件
  28. 2.一定要指定router-view
  29. 3.route路由 {path:'',component:}
  30. routes 路由数组 []
  31. router 路由器:按照指定的路由规则去访问对应的组件 new VueRouter

3、使用路由模块来实现页面跳转的方式

  1. 方式1:直接修改地址栏
  2. 方式2js
  3. this.$router.push(‘路由地址’);
  4. 方式3
  5. <router-link
  6. to="路由地址"></router-link>

4、完成参数的传递

  1. 在页面之间跳转的时候,在有些场景下,需要同时指定参数
  2.  
  3. 1.明确发送方和接收方
  4. list --20--> detail
  5. 1.配置接收方的路由地址
  6. /detail --》 /detail/:index
  7.  
  8. this.$route.params.index
  9. 2.发送
  10. routerLink to="/detail/20"
  11. this.$router.push('/detail/20')

5、路由嵌套

  1. 在一个路由中,path对应一个component,如果这个component需要根据
  2. 不同的url再加载其他的component,称之为路由的嵌套
  3.  
  4. 举例:比如A组件现在需要根据不同的url,加载B组件或者C组件
  5. 1.A组件指定一个容器
  6. <router-view></router-view>
  7. 2.配置路由词典
  8. {
  9. path:'/a',
  10. component:A,
  11. children:[
  12. {path:'/b',component:B}
  13. ]
  14. }
  15.  
  16. 需求:现在有两个组件,分别是login/mail,建立SPA
  17. 在此基础上,希望mail组件 嵌套inbox/outbox/draft
  18.  
  19. 补充:在设置子路由,路由匹配规则依然是适用的,
  20. 只不过路由地址为空和异常,要携带父组件的路由地址
  21. /mail /mail/draft

13.搭建基于CLI开发环境的方式


  1. 1.指定一个文件夹
  2. C:\xampp\htdocs\framework\vue\project
  3. 2.tpls.zip拷贝到project
  4. 3.右键单击压缩包,解压缩到当前文件夹
  5. 4.进入到tpls
  6. 5.同时按下shift和鼠标右键,选择在此位置打开命令行串口
  7. 6.执行npm install
  8. 7.执行npm start

14.axios


1.axios的get方法

  1. export const getAjax= function (getUrl,getAjaxData) {
  2. return axios.get(getUrl, {
  3. params: {
  4. 'getAjaxDataObj1': getAjaxData.obj1,//obj1为getAjaxData的一个属性
  5. 'getAjaxDataObj2': getAjaxData.obj2
  6. }
  7. })
  8. }

2.axios的post方法

  1. export const postAjax= function (getUrl,postAjaxData) {
  2. return axios.get(postUrl, {
  3. 'postAjaxDataObj1': postAjaxData.obj1,//obj1为postAjaxData的一个属性
  4. 'postAjaxDataObj2': postAjaxData.obj2
  5. })
  6. }

3.axios的拦截器
主要分为请求和响应两种拦截器,请求拦截一般就是配置对应的请求头信息(适用与常见请求方法,虽然ajax的get方法没有请求头,但是axios里面进行啦封装),响应一般就是对reponse进行拦截处理,如果返回结果为[]可以转化为0

1.请求拦截:将当前城市信息放入请求头中

  1. axios.interceptors.request.use(config => {
  2. config.headers.cityCode = window.sessionStorage.cityCode //jsCookie.get(‘cityCode’)
  3. return config
  4. },

2.响应拦截:处理reponse的结果

  1. axios.interceptors.response.use((response) =>{
  2. let data = response.data
  3. if(response.request.responseType === 'arraybuffer'&&!data.length){
  4. reponse.date=0
  5. }
  6. })

转载出处:Web前端开发 » 前端知识点总结——VUE

Vue.js中前端知识点总结笔记的更多相关文章

  1. 公司内部技术分享之Vue.js和前端工程化

    今天主要的核心话题是Vue.js和前端工程化.我将结合我这两年多的工作学习经历来谈谈这个,主要侧重点是前端工程化,Vue.js侧重点相对前端工程化,比重不是特别大. Vue.js Vue.js和Rea ...

  2. 使用webpack+vue.js构建前端工程化

    参考文章:https://blog.csdn.net/qq_40208605/article/details/80661572 使用webpack+vue.js构建前端工程化本篇主要介绍三块知识点: ...

  3. vue.js中父组件触发子组件中的方法

    知识点:vue.js中,父组件的method中,触发子组件中的方法,获得子组件中的定义的属性 (1)子组件 : child_crud.js var html_child_crud= "< ...

  4. Vue.js高效前端开发 • 【Vue基本指令】

    全部章节 >>>> 文章目录 一.Vue模板语法 1.插值 2.表达式 3.指令概述 4.实践练习 二.Vue绑定类样式和内联样式 1.Vue绑定类样式 2.Vue绑定内联样式 ...

  5. Vue.js高效前端开发 • 【初识Vue.js】

    全部章节 >>>> 文章目录 一.Vue概述 1.Web前端框架介绍 2.MVC和MVVM 3.Vue介绍 4.安装Vue 二.Vue使用 1.第一个Vue应用 2.Vue的双 ...

  6. Vue.js高效前端开发知识 • 【目录】

    持续更新中- 章节 内容 实践练习 Vue.js高效前端开发 • (实践练习) 第1章 Vue.js高效前端开发 • [ 一.初识Vue.js ] 第2章 Vue.js高效前端开发 • [ 二.Vue ...

  7. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

  8. vue.js中,input和textarea上的v-model指令到底做了什么?

    v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能: 对,它本质上只是一个语法糖,但到底是一 ...

  9. 实例分析Vue.js中 computed和methods不同机制

    在vue.js中,有methods和computed两种方式来动态当作方法来用的 1.首先最明显的不同 就是调用的时候,methods要加上() 2.我们可以使用 methods 来替代 comput ...

随机推荐

  1. GCC/gcc/g++/CC/cc区别

    平常在Linux上经常会用到gcc或者g++来编译程序,但对这两者的理解也就停留在一个是用来编译C程序,另一个是用来编译C++程序的(请注意:这种说法是有问题的,待会改进). 1. GCC GCC,是 ...

  2. 未能加载文件或程序集“file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0

    未能加载文件或程序集"file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framewor ...

  3. Socket层实现系列 — bind()的实现(一)

    bind()函数的使用方法很简单,但是它是怎么实现的呢? 笔者从应用层出发,沿着网络协议栈,分析了bind()的系统调用.Socket层实现,以及它的TCP层实现. 本文主要内容:bind()的系统调 ...

  4. os X下mds_stores占用大量cpu的解决办法

    有时候发现, MacOS中, 有个叫做mds_stores的进程占了好多CPU, 于是要阻止这个行为, 据说这是MacOS在建索引然后只要把这个索引的关掉就好了 sh-3.2# mdutil -a - ...

  5. C++之虚函数

    <span style="font-size:18px;">#include <iostream> using namespace std ; class ...

  6. SpringBoot使用Maven插件打包部署

    [问题] 之前一直用SpringBoot做一些小项目,想打包部署在环境上,总是少依赖包jar.百度下可以通过Spring Boot Maven plugin插件,把Maven配置的依赖包都打到项目包里 ...

  7. Netstat状态分类

    用netstat -an命令查看!再stat下面有一些英文,简单说一下这些英文具体都代表什么: LISTEN:(Listening for a connection.)侦听来自远方的TCP端口的连接请 ...

  8. linux下redis单机版搭建

    1.1.什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下: ...

  9. hadoop配置文件详解系列(二)-hdfs-site.xml篇

    上一篇介绍了core-site.xml的配置,本篇继续介绍hdfs-site.xml的配置. 属性名称 属性值 描述 hadoop.hdfs.configuration.version 1 配置文件的 ...

  10. Hive入门学习--HIve简介

    现在想要应聘大数据分析或者数据挖掘岗位,很多都需要会使用Hive,Mapreduce,Hadoop等这些大数据分析技术.为了充实自己就先从简单的Hive开始吧.接下来的几篇文章是记录我如何入门学习Hi ...