(给达达前端加星标,提升前端技能)
不用怕
https://v.qq.com/x/cover/mzc002004ceupu5/y3058p0xcr6.html
内容有点多,也请你静下来,慢阅读,今后多多关照。
Vue框架基础知识
mvx模式介绍,x这里代表是未知数的意思,那么有多少mvx模式要我们了解的呢?mvc模式,mvvm模式,相互之间的区别。
让我们说一说mvc模式,这模式很常见,mvc模式,mvc模式是移动最广泛的软件架构之一,把应用程序分为三部分,分别为模型,Model,视图view,以及控制器controller。
现在的我们常说的是Mvvm模式,这也是面试官会问,什么是Mvvm模式的呢,mvvm模式是把mvc模式的controller改成viewmodel。
view的变化会自动更新viewmodel,viewmodel的变化也会自动同步到view上显示。
web前端开发阶段,原生代码开发阶段,使用HTML,css,JavaScript代码进行前端开发,学习web原生的优点,就是学习成本低,容易上手,不好的就是代码结构混乱,代码冗余,浏览器兼容性不成熟,不利于分工合作。
代码库开发的阶段,就是使用成熟的开源扩展库进行前端的开发,优点就是开发快速,浏览器兼容性良好,缺点就是视图层和数据层混合在一起,不利于团队分工合作。
框架开发阶段,采用前端mvc模式或者是Mvvm模式开发,优点就是代码分层,便于团队合作,便于后续代码维护,缺点就是学习成本高,框架更新迭代快。
vue框架的学习,vue是一套构建用户界面的渐进式框架,vue只关注图层,采用自底向上增量开发的设计。
模板主要内容
Vue基础知识Vue框架基础语法、Vue开发工具
Vue组件Vue组件、Vue模块化开发
Vue工程化开发npm/yarn和webpack开发工具、Vue-cli开发工具、单文件工具
Node.js基础和Axios网络请求Node.js构建Web服务器、Axios发送ajax请求、postman网络调试工具
Vue-Router路由单页面应用SPA、Vue-Router实现路由机制
Vuex状态管理Vuex状态管理、本地存储
Vue-UI库Vue中的UI库
三大框架的对比
AngularReactVue
发布时间2009年2013年2014年
维护者谷歌Facebook尤雨溪
视图引擎HTMLJSXHTML
学习曲线陡峭较复杂简单
大小500K+130K+50K+
功能复杂度完善完善简单
文档英文英文中文
应用场景大型复杂应用中大型应用、移动跨平台开发中小型轻量级应用
如何使用我们的vue.js框架
安装,在vue.js的官网上下载vue.min.js并用script标签引入,cdn方式引入vue.js文件,vue推荐使用地址。
第一个vue项目实例
实例对象
vue实例对象就是vue框架的一个核心。
配置项el,把vue实例挂载到dom元素上,然后通过id绑定到html元素;配置项data,就是数据对象,vue实例的数据,注意了,数据不要与methods中的方法重名;配置项methods,事件对象,包含事件所有触发的函数,注意了,方法名不要与data中的数据重名了;配置项computed,计算属性;配置项watch,表示监听器;配置项directives,表示自定义指令。
配置项钩子(hook)函数,hook(钩子)函数,不同生命周期引发的动作,路由钩子函数,路由组件在不同状态时触发。
components表示组件容器;配置项template,定义模板,可以是字符串,也可以是“#”选择器,props配置项,用于接收父组件的数据;router配置项,路由,store配置项,vuex状态。
属性说明
vm.$elVue 实例使用的根 DOM 元素
vm.$dataVue的data配置项
vm.$options用于当前 Vue 实例的初始化选项
vm.$props当前组件接收到的 props 对象
vm.$parent父实例(如果当前实例有的话)
vm.$root当前组件树的根 Vue 实例
vm.$children当前实例的直接子组件
vm.$refs原生DOM元素或子组件注册引用信息
vm.$slots用来访问被插槽分发的内容
vm.$router全局路由(vue-router插件)
vm.$storevuex 状态对象(vuex插件)
方法说明
vm.$emit()子组件可以使用 $emit 触发父组件的自定义事件
vm.$set()Vue.set的别名
设置对象的属性, 这个方法主要用于避开 Vue 不能检测属性被添加的限制
vm.$watch侦听数据变化
vm.$on()监听当前实例上的自定义事件。事件可以由vm.$emit触发。回调函数会接收所有传入事件触发函数的额外参数。
vm.$mount可以使用 vm.$mount()手动挂载(Vue 实例化时没有 el 选项)
vm.$destroy完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。
触发 beforeDestroy和 destroyed的钩子。
属性绑定指令说明
v-bind动态改变dom标签上的属性
v-bind :class="" 简写 :class=""
生命周期,vue实例从开始创建,初始化数据,编译模板,挂载dom,渲染到更新到渲染,到卸载等一系列过程。
总结一下,四个阶段,创建,挂载,更新,销毁。
使用New Vue()来创建vue实例;接下是beforeCreate调用beforeCreate生命周期钩子,observe data开始监控data对象数据变化,init events,vue初始化内部事件,created调用created生命周期钩子,has"el"option?实例中是否含有"el"选项,有调用vm.$mount手动挂载一个未挂载的实例时,has "template" option?是否含有template选项。
模板语法
计算属性
计算属性,顾名思义就是通过其他变量计算得来的另一个属性。
计算属性具有缓存,多次访问计算属性会立即返回之前的计算结果,而不是再次计算后的结果。
computed中的函数,不能传参。
methods方法
vue对象中可以使用methods属性,用来编写自定义函数,使用方法是methods属性由一系列json方法对组成。
渲染
循环数组:
循环对象
数组的更新检查
push(),pop(),shift(),unshift(),splice(),sort(),reverse()为变异方法可触发视图更新。
filter(),concat(),slice()为非变异方法,不触发视图更新,他们可以返回新数组,用新数组替换旧数组,就可以刷新视图。
条件渲染
指令说明
v-if根据其后表达式的bool值进行判断是否渲染该元素
v-else-ifv-if的“else-if 块”,可以连续使用
v-else表示 v-if的“else 块”
v-else元素必须紧跟在带 v-if或者 v-else-if的元素的后面,否则它将不会被识别。
事件与表单
事件处理,需要绑定事件处理函数,在Vue中绑定事件处理,直接在HTML元素上使用v-on指令绑定即可。
指令说明
v-on:click简写: @click=""click、mouseover、mouseout、mouseup、mousedown、dblclick 、contextmenu、keydown、keyup等
事件对象,事件处理过程中会触发event事件对象,这个event对象代表当前事件的状态,比如事件触发时的HTML元素是什么,event.target来得到触发事件的HTML元素,可以得到事件的类型。
event.type得到当前的事件类型。
属性和方法描述
event.type触发的事件类型
event.target触发事件的HTML元素
event.preventDefault( )阻止事件的默认行为
event.stopPropagation( )阻止事件冒泡
借助事件对象实现一个事件委托机制,从而提高我们应用程序的一个性能,什么是事件委托机制?事件委托机制在列表渲染过程中,大部分都是v-for渲染过程中,借助event事件对象,在父元素之上绑定事件处理函数而不是在子元素之上绑定事件处理函数。
表单处理
指令说明
v-model双向数据绑定支持标签:
表单事件触发控件说明
focusinput框、textarea框输入框获取到输入焦点
blurinput框、textarea框输入框失去焦点
click单选框、多选框选中某一个单选项或复选框
change下拉列表切换下拉列表项
submit提交按钮单击提交按钮
vue组件,组件是vue.js的功能之一,目的是为了可重用性高,减少重复性的开发,在结构上相近或相同的代码进行封装,成为一个高度可复用的部件称为组件。
选项说明
模板(template)模板声明了数据和最终展现给用户的DOM之间的映射关系。
初始数据(data)一个组件的初始数据状态。对于可以复用的组件来说,通常是私有的状态。
接受的外部参数(props)组件之间通过参数来进行数据的传递和共享。参数默认是单向绑定(由下往上),但也可以显示声明为双向绑定。
方法(methods)对数据的改动操作一般都在组件的方法内进行。可以通过v-on指令将用户输入事件和组件方法进行绑定。
生命周期钩子函数(lifecycle hooks)一个组件会触发多个生命周期钩子函数,比如created、attached、destroyed等。在这些钩子函数中,我们可以封装一些自定义的逻辑。和传统的MVC相比,这可以理解为Controller的逻辑被分散到了这些钩子函数中。
vue组件的使用,先注册后使用,vue组件可以在全局注册,也可以在局部注册。
创建组件
注册组件,使用组件,注意事项
注意事项
模板:使用id绑定
命名:组件名不要是html标准标签名,如果用驼峰定义,html中引用组件时,改为短横线命名
data属性表名vue组件可用的响应式数据,是vue实例的数据对象;vue将会递归data的属性转变为getter/setter,让data的属性能够响应数据变化,对象必须是纯粹的对象,浏览器api创建的原生对象,原型上的属性会被忽略。
data访问原始数据对象,Vue实例代理了data对象上所有的属性。
props传递数据,父组件和子组件之间的数据通信。
事件通信
父组件和子组件之间的数据操作,是通过Props属性和$emit()方法来实现的
props,声明位置在子组件中声明,属性值,在组件模板中绑定。
$emit,子组件向父组件传值,使用$emit触发父组件方法。
注意,props属性名如果用驼峰定义,html标签中改为短横线命名,$emit自定义事件不能使用驼峰,短横线命名。
如果prop是一个对象或数组,子组件内部改变它会影响父组件的状态。
非父子通信
本质上通过派发事件-》监听事件从而更改值。
Vue全家桶之组件化开发
Vue插槽详解 | 什么是插槽?
来吧!一文彻底搞定Vue组件!
组件类型
动态组件,主要是在使用过程中,可能需要动态的切换组件的显示内容。
多个组件主要是使用同一个挂载点。
递归组件,在组件内部可以嵌套调用其他组件,甚至可以递归地调用当前自身组件。
vue工程化工具
node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为和PHP,python,perl,ruby等服务器端语言平起平坐的脚本语言。node.js是一个基于chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快,易于扩展的网络应用,node.js使用hijack驱动,非阻塞i/o模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
node.js使用module模块去划分不同的功能,以简化应用的开发。
引入了Http类库,并且对http类库的引用存放在http变量中。
Node.js环境安装
https://nodejs.org/en/download/
升级npm版本
属性说明
name包名
version包的版本号。
description包的描述。
homepage包的官网 url 。
author包的作者姓名。
contributors包的其他贡献者姓名。
dependencies依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
kewords关键字
命令说明
npm help可查看某条命令的详细帮助,例如npm help install。
npm install
npm update
npm update
npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人
npm unpublish
yarn使用
Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。
它的出现是为了解决使用npm面临的问题:
yarm命令
指令说明
yarn init初始化项目,生成package.json文件
yarn add 包名添加依赖包,示例:yarn add [package]、yarn add [package]@[version]、yarn add [package]@[tag]
yarn根据 package.json 安装全部依赖包,也可以使用 yarn install
yarn upgrade升级依赖包
yarn remove移除依赖包
NpmYarn说明
npm inityarn init初始化某个项目
npm install/linkyarn install/link默认的安装依赖操作
npm install taco -saveyarn add taco安装某个依赖,并默认保存到package
npm uninstall taco -saveyarn remove taco移除某个依赖项目
npm install taco –save-devyarn add taco –dev安装某个开发时依赖项目
npm updata taco -saveyarn upgrade taco更新某个依赖项目
npm install taco --globalyarn global add taco安装某个全局依赖项目
npm publish/login/logoutyarn publish/login/logout发布、登录、登出,一系列NPM Registry操作
npm run testyarn run test运行某个命令,可以在script脚本中去配置
vue cli是一个基于vue.jsf进行快速开发的完整系统。
文件说明
build项目构建(webpack)相关代码
config配置目录,包括端口号等。我们初学可以使用默认的。
node_modulesnpm 加载的项目依赖模块
src这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件: ² assets: 放置一些图片,如logo等 ² components: 目录里面放了一个组件文件,可以不用 ² App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录 ² main.js: 项目的核心文件
test初始测试目录,可删除
static静态资源目录,如图片、字体等。
index.html首页入口文件,你可以添加一些 meta 信息或统计代码啥的
package.json项目配置文件。
README.md项目的说明文档,markdown 格式
vue项目配置
配置项数据类型说明默认值
publicPathstring基本路径'/'
outputDirstring输出文件目录'dist'
assetsDirstring静态资源存放目录' '
indexPathstring输出路径'index.html'
filenameHashingBoolean生成的静态资源在它们的文件名中包含了hash 以便更好的控制缓存true
pagesObject在 multi-page 模式下构建应用。每个“page”应该有一个对应的 JavaScript 入口文件。undefined
lintOnSaveBoolean是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。true
runtimeCompilerBoolean是否使用包含运行时编译器的 Vue 构建版本false
transpileDependenciesBoolean是否生成source map文件,可以将其设置为 false 以加速生产环境构建。true
crossoriginString设置生成的 HTML 中和