一、了解VUE原理

用于构建用户界面的渐进式结构。经过Vue指令,结束JS和HTML的分别,JS代码只是是经过Module去控制View,而不是定义View。

中文官网:cn.vuejs.org/

1、Vue.js 结构app装置下载的优势:

跋涉代码复用率
下降模块之间耦合度
跋涉开发速度
跋涉代码质量
组件化(web component)开发

2、VUE设备:

1、设备node.js

nodjavascript什么意思ejs.org/en/ git: git-scm.cappleom/download/wi…

2、设备bower

npm install bower -g (用 bower -v 检查是否设javascript九九乘法表备成功)

3、bower install vu女配满眼都是钱e&lt男配每天都在体内效果;#版别> (用bower info vue 检查版别)

3、VDOM原理

1、处理的问题:

Virtual DOM 用来处理DOM与Layout绘画压力问题。每一次DOM改动,Layoutjavascr女配没有求生欲txtipt都会repaint,假定操作一再,会构成烘托压力node.js框女配美炸天
vue=>JSE女配美炸天ngine=>DOM=>Layout

2、择时烘托git指令

VDOM 会择时烘托,1、setTimeout计时,javascript菜鸟教程或许引擎觉得合理的时机。

3、Diff算node.js装置教程法:

VDOM在引擎源码中,是一个JS政策,approve其实是树状结构的JSON。一giti是什么牌子切节点都挂载在根节点上。每次diff的时分,有key就按照key比较,keyjavascript有必要是仅有的,可以用id+data作为key。没有key,就按照type比较。女配满眼都是钱type不同的节点,直接拿掉,记载下来,下次重画。子节点里,比较出新增的,删去的,把这些都记载成digithub永久回家地址ff,下次用diff重画节点。

面试题1:

用JS代码操作DOM写一个照顾改写

function changeDirecgithub中文官网网页tly(){女配满眼都是钱
var app = document.getElementById('app');giti是什么牌子
vargitlab html = '';
var htmlTmp = document.getElementById('tmp').innerappearHTgiti轮胎ML;
htjavascript九九乘法表ml = htmlTmp.node.js装置replace(/%word%/g, 'abc');
console.log(html);
app.innerHTMnode.js设备教程L = html;
}
addEven男配每天都在体内效果tLiapprovestener('click', changeDirectlyjavascript);

本质便是在DOM中直接查找指定的标签,然后全局替换。

4、照顾式javascript怎样读原理

官网文node.js设备教程章说的很透彻了。
cn.vuejs.org/v2/guide/re…

这儿总结一女配满眼都是钱下我的了解

1node.jnode.js环境配置s是什么、JavaScript ES5 中 有个一个办法,Objecappointmentappointmentt.defineProperty,可以把传入vue的JS政策中的悉数property转为getter/sjavascript面试题etter。(VUEgit指令不支持IE8以下是因为其不支持ES5)

2、每个vue组件实例都对应一个watcher实NPM例,wgitlgiti轮胎是什么品牌abatcher把组件烘托进程中接触南平明日气候过的JS数据的property记载为依托,当依托的setter触发时,watcher被奉告,然后从头烘托相关组件。

VUE学习关键拾掇
图片引自cn.vuejs.org/images/data…node.js设备教程

3、触及vue中data政策的propertyapprove特征giti批改,假定要结束批改后property的照顾,有必要要从原型链的层级批改。具javascrappointmentipt怎样读体办法,参看文章中具体介绍。

4、另外在异步更新DOM进程中,假定同一个作业循环进程中,同一个github中文官网网页watcher被触发多次,那么只会被推入到队伍中一次,approve不才一次tick中,只实施最后更新的那node.js是前端仍是后端次,这种去重简化了不必要的DOM改写。

5、每次tjavascript面试题ick,实践原理和setTimejavascript菜鸟教程Out类似,都会不才一轮改写时实施。可以自定义调用Vue.nexgititTick(callback)实施下次改写内容。

Vueapplication.component('example', {
template: '<span&a女配没有求生欲txtmp;Node.jsgt;{{ message }}<appointment/snodgiti轮胎是什么品牌e.js是前端仍是后端pan&javascript面试javascript面试题gt;',
datanode.js 教程: function () {
retunode.js是什么rn {
messag女配没有求生欲txte: '未更新'
}
},
methods: {
updateMessage: fujavascript高档程序设计nction () {
this.mejavascript:void(0)ssage = '已更新'
console.log(this.$enode.js是干什么的l.textContent) // => '未更新'
this.$nextTick(function () {
console.log(this.$el.textContent) // => '已更新'
})
}
}
})

二、从MV*办法了解照顾式原理

1、MVC办法:

Moappstoredule存放数据
View更新DOM
Controller调用Module给View烘托
M——>applicationC——>V

2、MVP办法

Presenter: 更新Module,批改View
M<==node.js面试题>P<==>V

3、MVVM办法女配没有求生欲txt

MVVM办法是进阶的MVP办法,这个才是vue运用的,前两个是过度版别介绍。
ViewModel: 主动化调用的Presentergit命令
Module 更新,View主动跟着更新

Vue的MVVjavascript什么意思M结束:
当Vue实例创建后,构成双向绑定,关键技术点便是 DOM Listener, Data binjavascript什么意思dings
M<=女配末世带娃求生>VM<=>V
View层,DOM Listener监听DOMnode.js环境装备的改动,
Module层,女配末世带娃求生Data bi女配没有求生欲txtndings 帮助更新View 和 DOapproveM
这个进程便是VM
Data bindings 便是指 Modulapplicatione里面有gGititeeget()/set(),结束对数据的批改,genode.js是什么t/set调用wajavascript:void(0)node.js 教程tcher()改写View,然后批改DOM。

三、VUE语法:指令、作业、过滤器、核算特node.js设备教程色,侦听器

1、指令:

  • vjavascript什么意思-if:条件指令
  • v-else: 条件指令,和v-if协作运用
  • v-show:烘托指giti轮胎令 闪现或躲藏元素
  • v-for:列表指令
  • v-model:用于将控件与monode.js设备教程dule双向绑定
  • v-model.lazy 只要在回车onblur时改动
  • v-model.number 只能Node.js输入数据
  • v-modenode.js是前端仍是后端l.trim 去除前后空格
  • input:与module双向绑定
  • v-bind:用来控制元素的特征值,简写办法 “giti:” (v-bind =giti轮胎是什么品牌 :)
    • v-bind:src女配满眼都是钱=”https://ju男配每天都在体内效果ejin.im/post/695503177女配末世带娃求生537447女配每天都在javascript面试题抱大腿我要成仙5301/expression”
    • v-bind:class=”httpnode.js面试题s://juejin.im/post/695503177JavaScript5374475NPM301/expression”
    • v-APPbind:style=”ht女配每天都appearance在抱大腿我要成仙giti轮胎tps://juejin.im/post/695gitlab5031775374475女配每天都在抱大腿我要成仙301/expressiGiton”

2、作业:

v-on:<作业名>
.stop
.prevejaJavaScriptvascript高档程序设计n女配末世带娃求生t
.13 或许 .enter
.left 或许 .right 或许 .middle
.once
.ctrl 或许 .shinode.js 教程ft 或许 .alt

3、过滤器

{{mnodegitee.js面试题essagappstoree | filter}} 用于格式化输出

4、核算特征:

把函数当成特征nodenode.js是什么东西.js是什么

5、侦听器:

避免watch乱用,改用 computed

四、组件

运用组件结束代码可复用。

1、组件生命周期:

四个阶段:Create/Mount/Update/Destroy

每一个阶段都有前女配没有求生欲txt后两个情况javascript菜鸟教程

beforeCreate/created (创建)

beforeMount/node.js设备mounted (挂载DOM)

beforeUpdate/updated (更新)

beforeDest女配没有求生欲txtroyJavaScript/destroyed (销毁)女配没有求生欲txt

2、组件通讯

1、父子通讯

父组件向子组件传递字符串或许传递变量:以子组件特征 props的办法,透传字符串javascrjavascriptipt面试题

Vue.component('child', {
template: `
<div>
<p :id="p1">javascript{{str}}</p&gtAPP;
</div>
`,
props: ['p1', 'str'],
methods: {
},
mounted: function(){
consojavasjavascript面试题cript数据类型le.log(this.p1node.js面试题, thgiti是什么牌子is.strgithub中文官网网页);
}
});
Vue.component('parent',node.js是什么东西 {
templatnode.js 教程e: `
<div>
<child :p1="prtP1" :str="prtStr"></child>  // 传递变量
// <child :p1="1111javascript菜鸟教程1111" :str="222222222appointmentnode.js是什么"></child>  // 传递字符串
</div>
`,
datjavascript:void(0)a: function(){
rnode.js是前端仍是后端eturn {
prtP女配末世带娃求生1: 'p456',
prtStr: 'abc'
}
}
});

2、子组件向父组件传递数据

  1. 在父组件中树立作业照顾函数
  2. 在父组件模版中,绑定作业,作业调用作业照顾函数
  3. 在子组件中,触发作业
// 子node.js环境装备组件
Vue.component('child'node.js面试题, {
template: `
<div>
<input type="buttgitlabon" @javascript高档程序设计click="sendData" value=女配没有求生欲藤萝为枝"点我发送信息">
</div>
`,
methods: {
sendData: func男配每天都在体内效果tiongitee(){
this.$emit('myEvjavascript高档程序设计ent', 'Hello World! I am Vue!');
}
}
});
// 父组件
Vue.component('parent',{application
template: `
<div>
<child @github永久回家地址myEvent="getData">&ltNode.jnode.js是前端仍是后端s;/child>
<hr /&ggiti轮胎是什么品牌南平明日气候女配末世带娃求生t;
<h4>现在的msappstoreg:{{msg}}</h4>
&node.js面试题lt;/div>
`,
methods: {
getData: function(msg){
console.log('收到了来自子组件的信息:' + msggitee);
this.m男配每天都在体javascript怎样读内效果sg = msg;
}
},
data: function(){
retapproachurngitinode.js是什么是什么牌子 {
msg: ''
};
}
});

3、javascript面试题父组件拜访子组件的数据:this.$ref

// 子组件
Vue.component(Node.js'child'javascript高档程序设计, {app装置下载
template: `
&lgiteet;div></div>
`,
data: function(){giti
return {
childSnode.js面试题tr: 'I am your son!'
};
},
mounted: fu南平明日气候nction(){
conode.js设备nsole.log('子组件的mouJavaScriptnAPPt:' + this.$paJavaScriptrent.parentStr);
}
});
// 父node.js面试题组件appointment
Vue.component('parent', {
template: `
<div>
<appearancechijav女配没有求生欲txtascript九九乘法表ld ref="mySon">&approachlt;/child>
<input type="buttojavascriptn" vjavascript怎样读alue="获得子组件信息"APP @click="getD女配明天见ata">
</div>
`,
data: function()app设备下载{
returnjavascript菜鸟教程 {
parentStr: 'I am your father!'
}
},
methods: {
getData: function(){
console.log('获得子组件信appearance息:' + this.$javascript数据类型refs.mySon.childStr);
}giti是什么牌子
}
});

4、子组件拜访父组件的数据: this.$parent

Vue.component('parent', {
template: `
<div>
<ul v-show="isSwitchOn"appearance>
<li v-fonode.js环境配置r="itemnode.js环境配置 in aJavaScriptrray">{{item}javascript九九乘法表}</li>
</ul>
<child ref="mySon" ></child>
&appreciatelt;/div>
`,
data: function(){
return {
isSwitchOn: true,
array: [5, 10, 25github永久回家javascript怎样读地址, 50]
};
}
});
// 子组件
Vjavascript面试题ue.comjavascript菜鸟教程ponent('child', {
template: `
<dnode.js设备iv>
<input type=app设备下载"button" valapproveue="JavaScript闪现/不闪现" @click="giteeshowOrNot" />
<input type="button" va女配没有求生欲藤萝为枝lue="添加" @click="addItem">
</div>
`,appreciate
methods: {
shoAPPwOrNot: function(){
this.$parent.isSwnode.js是干什么的itchOn = !this.$parentnode.js是什么.isSwitchOn;
},
addItem: function(){
this.$papprovearent.agitirray.gitipush(appreciate2appreciate5);
}
}
});

5、兄弟组件之间通讯

  • 需求经过公共的Vnode.js面试题ue实例政策
  • 接纳javascript:void(0)方绑定作业,node.js结构发送方触发作业
// 1. 创女配明天见建公共的Vue政策
var bridgithub永久回家地址ge = new Vue()agiti是什么牌子pplication;
// 2. 创建两个子组件
Vue.component('child-1',{
template: `
<div&javascript面试题gt;
<appstoreh4>msg: {{msg}}&ltjavascript:void(0);/h4&gtgithub中文官网网页;
<input type=node.js设备教程"button" value="1appear->2" @click="sendData" />
</NPMdiv>
`,
data: function(){
return {
msg: ''
}
},
methods: {
sendData: functionNPM女配美炸天(){
bridge.$emit('OneToTwoEvent', 'Hello 2, I am 1'node.js是前端仍是后端);
}
},
mounted: function(){
var that = this;
bridge.$on('TwoToOneEapplevGiten男配每天都在体内效果t', function(msg){
c女配每天都在为国争光onsoappearle.log('收到来自2的:' + msg);
t女配没有求生欲txthat.msg = msg;
})
}
});
Vue.node.js设备教程component('child-2',{
template:javascript怎样读 `
<div>
<h4>msg:node.js是什么东西 {{msg}}</h4>
<input type=javascript数女配明天见据类型"buttongithub永久回家地址" value="2->1" @click="sendDatjavascript是干什么的a" /APP>
</dGitiv>
`,
data: function(){
return {
msg: ''
}
},
methods: {
sendData: function(){appreciate
bridge.$emit('TwoToOneEvent', 'Hello 1, I am 2');
}
},
mounted: function(){
// 1. mounted被调用时,只是approve定义了回调函数,但是并没有运转
// 2. 当childjavascript怎样读-1来触发作业时,引擎来调用回到函数,此时初始化回调函数中的node.js是什么this指向
//    留神git指令:此时thiappointments并不只想child-2政策,所以,this.msg找不到的
/javascript:void(0)/ 3. 用闭包。
var that =approach tgithub永久回家地址his;
bridge.$on('OneToTwnode.js设备教程oEvjavascript菜鸟教程ent', function(msg){
console.log(apple'收到来自1的:' + msg);
that.msg = msg;
})
}
});

五、路由

女配满眼都是钱由便是设定URL和回来页applicnode.js装置ation面或许视图的对giti轮胎应联系,每个URL对应一个页面或许视图。

六、vuex

类Flux的南平明日天气情况处理。处理的问题是:vue原始数javascript面试题据被多个实例间同享时,假giti轮胎是什么女配没有求生欲txt品牌设被批改,将导node.js装置教程致多个实例发生改动,且无法追溯是谁node.js 教程批改的。javascript什么意思这简略构成紊乱和不安全。

  1. vugitlabex可以简略为,将每次对vue原始数据的批改都作记NPM
  2. 进阶了解:引用Flux思想,将data包裹上state,构成一个Storappstoree。View需求批改,可以发送一个acjavascript怎样读tionnode.js环境配置给dispatcher,然后由dispatcher去奉告Store,批改完,Viappearanceew再更新。

更深化的了解 jappreciateuejin.cn/post/695247…

七、脚手架: Vue cli