href使用情况
相对,绝对URL
片段标识符
Javascript代码段
Javascript代码段
href=”javascript”(伪协议)
实现A标签的点击事件运行
可绑定回调
1
2
3 getElementById().addEventListener('click',function (e){
},false)
href=”javascript:void(0)”
< link定义文档与外部资源的关系,多用于CSS文件
<link rel="stylesheet" -> 规定当前文档与被链接文档之间的关系
href="index.css" -> 文档位置
type="text/css" -> 链接文档的MIME类型
></link>
加载顺序:onLoad->onShow->onReady->onHide->onShow->onUnload
页面第一次启动加载顺序:onLaunch->onLoad->onShow->onReady->onHide->onShow->onUnload
页面隐藏后启动加载顺序:onHide->onLoad->onShow->onReady->onHide->onShow->onUnload
插入、更新或者移除DOM
v-if
v-show
动态组件
组件根节点
(自动嗅探)是否应用CSS过渡或者动画
判断是否提供了JS钩子函数
(否则)DOM插入/删除,在下一帧立即执行
1 | <transition name="slide-fade"> (html) |
在animationd事件触发时删除
html不变
css中transition换为animation
.enter-class
.enter-active-class
……
后添的属性为非响应式的
除非Object.freeze(),即阻止修改的属性
前缀$:与用户定义的属性区分开
1 vm.$el === document.getElementById('example')
$watch实例方法:
1
2
3 vm.$watch('a',function (newValue,oldValue){
})
this指向Vue实例
不能使用 => 函数1
2
3
4
5
6new Vue({
......
created: function(){
console.log('a is:'+ this.a)
}
})
将DOM绑定到底层Vue实例的数据
写渲染render函数 + JSX
绑定文本: 使用v-once(一次性插值)
原始HTML: v-html 使用属性值被替换 xss攻击
特性:v-bind
js: 单个表达式
1 | (复杂逻辑放在Vue实例)(return绑定关系) |
计算属性缓存 | 方法 |
---|---|
computed | methods |
只有依赖改变时才重新求值响应 | 每次触发重新渲染,调用方法将总会再次执行函数 |
e.g Data.now()不改变 | 无 |
使用情况:多个计算属性依赖于很大的数组A,避免多次执行getter | 无 |
计算属性 | 侦听属性 |
---|---|
computed | watch |
无 | 观察和响应Vue实例上的数据变动 |
默认只有getter属性,可添加setter属性 | 执行异步或者开销较大的操作 |
1 | <div v-bind:class="{~定义在computed里,返回对象的计算属性~}"></div> |
也可绑定数组样式
1
2
3
4
5
6v-bind:style = "styleObject"
data: {
styleObject: {
color: 'red'
}
}
1 | <template v-if="ok"></template> |
1 | <div v-else> |
e.g 切换用户类型,不会清除input内容
用key方法:
v-if v-else 中复用已有template元素
规定不要复用:添加key,未添加key仍会复用*
不支持template元素和v-else
总被渲染,只是简单CSS显示切换
初始化渲染开销大
频繁切换时使用*
1 | <li v-for="item in items"> |
1 | <li v-for="(value,key) in object"></li> |
e.g Object.assign()或_.extend()1
2
3
4> vm.userProfile = Object.assign({},vm.userProfile,{
age:27,
favoriteColor:'Vue Green'
})
1 | <li v-for="n in even(numbers)"></li> |
v-bind:item
is = “todo-item”
v-on:click = “great” (methods定义function)
也可以使用example2.great()调用
1 | v-on:click = "say(hi)" |
method中function有event参数
{.stop,.prevent,.capture,.self,.once}
{.enter,.tab,….}
{.ctrl,.alt,.shift,.meta}
负责监听用户的输入事件以更新数据 总将Vue实例的数据作为数据来源
1 | <input v-model="message"/> |
1 | //定义一个名为button-counter的新组件 |
•局部注册:局部注册的组件在其子组件中不可用1
2
3
4
5
6
7//ComponetB.js
import ComponentA from './ComponentA'
export default {
components: {
ComponentA
}
}
1 | var ComponentA = {/* */} |
•全局导入基础组件 src/main.js
1 | Vue.component('blog-post',{ |
1 | Vue.component('custom-input',{ |
父子prop:单向下行绑定
改变prop:1
2
3
4
5
6
7//传递一个初始值:本地data属性
props:['initialCounter'],
data: function () {
return {
counter: this.initialCounter
}
}
1 | //计算属性:原始的值传入且需要转换 |
1 | //带默认值的对象 |
1 | //自定义验证函数 |
实例创建之前验证,实例属性(data,computed等)在default或者validator函数中是不可用的
1 | st => start:自动添加到跟元素上,class和style可添加 |
一个组件的v-model默认会利用名为value的prop和名为input的事件
一个组件的根元素上直接监听一个原生事件1
v-on:focus.native = "onFocus"
组件重构:.native监听失败 $listeners属性指向某个子元素v-on=”$listeners”
prop双向绑定 update:my-prop-name触发事件
子组件赋值 this.$emit(‘update:title’,new Title)
父组件监听事件并更新本地数据属性 v-on:update:title = “doc.title = $event”
缩写为 v-bind:title.sync = “doc.title” (v-bind.sync = “doc”)(多个)
若没有slot元素,则任何传入它的内容都会被抛弃
理解:类似于input元素中placeholder,若不输入其他内容(组件),则显示插槽
1 | <slot name="header"></slot> |
1 | <base-layout> |
异步解析组件定义
被渲染的时候才会被触发,结果存起来供未来渲染
1 | Vue.component('async-webpack-example',function(resolve){ |
1 | Vue.component('async-webpack-example', |
根元素:this.$root
父元素:$parent
访问子组件:ref组件1
2<base-input ref="usernameInput">
this.$refs.usernameInput
node -v
node helloworld.js
引入required模块
1 | var http = require("http"); |
创建服务器:监听客户端的请求,类似于Apache,Nginx等HTTP服务器
1 | http.createServer(function (request, response) { |
接受请求和响应请求: 客户端可以使用浏览器或者终端发送HTTP请求,服务器接受请求后返回响应数据
var可保存变量,在console中可以输出
“_”获取上个表达式的运算结果
异步编程
回调函数一般作为最后一个参数出现
官网下载安装包
进入node.exe所在的目录运行node –version
node -v
输入node,即进入Node.js的交互环境,在交互环境下,输入任意Javascript语句,回车即可得到结果
错误信息:安装create-react-app出错
原因:版本需要大于6
安装cnpm和create-react-app需要检查path
npm install -g cnpm –registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org
输入npm list -g -depth=0检查安装包的路径
添加路径到环境变量PATH中,结尾添加“;”
npm set registry https://registry.npm.taobao.org # 注册模块镜像
npm set disturl https://npm.taobao.org/dist # node-gyp 编译依赖的 node 源码镜像
npm cache clean # 清空缓存