1.框架和库的区别:


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

框架的好处:

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

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

思维模式的转换:

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

2.Vue概述


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

3.Vue中基础知识


1、双花括号
mustache(胡子)/interpolation(插值表达式) 语法:
<any>{{表达式}}</any>
作用:
将表达式执行的结果 输出当调用元素的innerHTML中;还可以将数据绑定到视图 2、指令-循环指令
基本语法1:
<any v-for="tmp in array"></any>
基本语法2:
<any v-for="(value,index) in array"></any> 作用:
在遍历array这个集合时,将临时变量保存在tmp中,创建多个any标签 3、指令-选择指令
语法:
<any v-if="表达式"></any>
<any v-else-if="表达式"></any>
<any v-else="表达式"></any>
作用:
根据表达式执行结果的真假,来决定是否要将当前的这个元素 挂载到DOM树 4、指令-事件绑定
语法:
<any v-on:eventName="handleEvent"></any>
作用:
给指定的元素 将handleEvent的方法绑定给指定eventName事件 5、指令-属性绑定
基本语法:
<any v-bind:myProp="表达式"></any>
补充,支持简写:
<any :myProp="表达式"></any>
作用:
将表达式执行的结果 绑定 到当前元素的myProp属性 <img v-bind:src="'img/'+myImg" alt="">
动态样式绑定
<p :style="{backgroundColor:myBGColor}">动态样式绑定</p> 动态样式类绑定
<h1 :class="{myRed:false}">动态样式类的绑定</h1> 6、指令-双向数据绑定
方向1:数据绑定到视图
方向2:将视图中(表单元素)用户操作的结果绑定到数据 基本语法:
<表单元素 v-model="变量">
</表单元素>

4.组件化


所谓的组件化,就像玩积木一样,把封装的组件进行复用,把积木(组件)拼接在一起,构成一个复杂的页面应用程序。

组件树就是由各个组件构成的一种数据结构,它存在的意义是为了帮梳理应用程序

1、组件的创建
全局组件
Vue.component('my-com',{
template:`
<h2>it is a header</h2>
`
})
局部组件
new Vue({
components:{
'my-footer':{
template:''
}
}
})
2、组件使用
作为普通的标签去使用
<my-com></my-com> 3、注意事项
1.组件的id和使用方式 遵循烤串式命名方式:a-b-c
2.如果一个组件 要渲染多个元素,将多个元素放在一个顶层标签中,比如div、form
3.全局组件可以用在id为example的范围内的任何一个组件内部,直接调用可以;但是局部组件只能在父模板中直接调用

5.自定义指令


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

6.过滤器


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

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

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

1、过滤器的创建和使用

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

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

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

7.复合组件

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

8.生命周期


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

9.常用属性


1、watch
1. 表单元素的双向数据绑定
v-model="myValue"
2.监听
watch:{
myValue:function(newValue,oldValue){ }
}
2、computed
计算属于是用于在模板中,搞定复杂的业务逻辑,因为有依赖缓存。
1.指定计算属性
computed:{
myHandle:function(){
return 数据
}
} 2.调用
<any>{{myHandle}}</any>

10.组件间通信


1、父与子通信 (props down)
1.发送
<son myName='zhangsan'>
</son>
2.接受
到son组件:
Vue.component('son',{
props:['myName'],
template:`
<p>{{myName}}</p>
`
}) 2、子与父通信 (events up)
1.绑定
methods:{
handleEvent:function(msg){}
}
<son @customEvent="handleEvent"></son>
2.触发
子组件内部:
this.$emit(‘customEvent’,100); 3、ref(reference 引用/参考 外号)
帮助在父组件中 得到子组件中的数据、方法。
1.指定ref属性
<son ref="mySon"></son> 2.根据ref得到子组件实例
this.$refs.mySon 4、$parent
this.$parent得到父组件的实例 5、兄弟组件通信
1.var bus = new Vue();
2.接收方
bus.$on('eventName',function(msg){})
3.发送方
bus.$emit('eventName',123);

11.补充组件创建的方式


1、直接在template属性中指定模板内容
1.全局组件
Vue.component
2.局部组件
{
components:{
'my-footer':{template:``}
}
}
2、.vue结尾的文件
<template></template>
<script></script>
<style></style>
3、单独指定一个模板内容
<script
id='myContent'
type='text/x-template'>
</script> Vue.component('',{
template:'#myContent'
})

12.路由模块


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

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

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

2、路由模块的基本使用

专业术语:
router路由器
route路由
routes 路由数组(路由词典)
1.引入vue.js vue-router.js
2.指定一个容器
<router-view></router-view>
3.创建业务所需要用到的组件类
var MyLogin = Vue.component()
4.配置路由词典
const myRoutes = [
{path:'',component:MyLogin},
{path:'/login',component:MyLogin}
]; const myRouter = new VueRouter({
routes:myRoutes
}) new Vue({
router:myRouter
})
5.测试
修改地址栏中的路由地址,测试看加载的组件是否正确 注意事项:
1.先引入vue,再引入插件
2.一定要指定router-view
3.route路由 {path:'',component:}
routes 路由数组 []
router 路由器:按照指定的路由规则去访问对应的组件 new VueRouter

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

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

4、完成参数的传递

在页面之间跳转的时候,在有些场景下,需要同时指定参数

1.明确发送方和接收方
list --20--> detail
1.配置接收方的路由地址
/detail --》 /detail/:index this.$route.params.index
2.发送
routerLink to="/detail/20"
this.$router.push('/detail/20')

5、路由嵌套

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

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


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

14.axios


1.axios的get方法

export const getAjax= function (getUrl,getAjaxData) {
return axios.get(getUrl, {
params: {
'getAjaxDataObj1': getAjaxData.obj1,//obj1为getAjaxData的一个属性
'getAjaxDataObj2': getAjaxData.obj2
}
})
}

2.axios的post方法

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

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

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

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

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

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

转载出处: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. Oracle UTL_HTTP(收集汇总有用资料)

    From Oracle The UTL_HTTP package makes Hypertext Transfer Protocol (HTTP) callouts from SQL and PL/S ...

  2. linux下挂载U盘

    转:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html linux下挂载U盘 一.Linux挂载U盘: 1.插入u盘到计算机, ...

  3. 网站开发进阶(八)tomcat异常日志分析及处理

    tomcat异常日志分析及处理 日志信息如下: 2015-10-29 18:39:49 org.apache.coyote.http11.Http11Protocol pause 信息: Pausin ...

  4. ActiveMQ系列之四:用ActiveMQ构建应用

    Broker:相当于一个ActiveMQ服务器实例 命令行启动参数示例如下: 1:activemq start :使用默认的activemq.xml来启动 2:activemq start xbean ...

  5. Android特效专辑(一)——水波纹过渡特效(首页)

    Android特效专辑(一)--水波纹过渡特效(首页) 也是今天看到的一个特效,感觉挺漂亮的,最近也一直在筹划一个APP,就想把他当做APP的首页,然后加些处理,关于首页APP的特效等我完工了再贴出来 ...

  6. 那些年Android开发中遇到的坑

    使用静态变量来缓存数据时,不管是在Application类还是其他类,都要注意因应用重建而引发的问题. 使用DecorView作为PopupWindow的anchorView时,在华为P7中它是显示在 ...

  7. Mina源码阅读笔记(四)—Mina的连接IoConnector1

    上一篇写的是IoAcceptor是服务器端的接收代码,今天要写的是IoConnector,是客户端的连接器.在昨天,我们还留下一些问题没有解决,这些问题今天同样会产生,但是都要等到讲到session的 ...

  8. Which SQL statement is the trump card to the senior software developer

    Which SQL statement is the trump card to the senior software developer                    MA Genfeng ...

  9. shc/unshc加/解密shell脚本

    一.加密软件shcshc是linux的一款加密脚本的插件东西比较安全我们可以利用wget将文件放在root目录下也可以通过sftp放在root目录也可以直接利用cd命令选择目录一切随意shc官网:ht ...

  10. 关于jasperreport对应java打印机的解决方案

    对于jasperreport打印这个功能,遇到了一大堆问题,也只能一点一点解决我: 1.现在我用的是jasperreport.jar是4.6版本. (1).因为网上查到:6.0以上版本已经不再支持ja ...