0%
Vue3:setup配置项
发表于
分类于
Vue
setup
是Vue3.0中一个新的配置项,值为一个函数。
基本信息
setup
是所有Composition API(组合API)的容器。组件中所用到的:数据、方法等等,均要配置在
setup
中。setup
函数的两种返回值:- 若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。(重点关注!)
- 若返回一个渲染函数:则可以自定义渲染内容。
setup
执行的时机- 在beforeCreate之前执行一次,this是
undefined
。
- 在beforeCreate之前执行一次,this是
setup
的参数props
:值为对象,包含:组件外部传递过来,且组件内部声明接收了的属性。context
:上下文对象attrs
: 值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性, 相当于this.$attrs
。slots
: 收到的插槽内容, 相当于this.$slots
。emit
: 分发自定义事件的函数, 相当于this.$emit
。
Vue:路由
发表于
分类于
Vue
一个路由(route)就是一组映射关系(key - value),key是路径,value是组件。多个路由需要路由器(router)进行管理。
基本使用
安装vue-router,命令:
npm i vue-router
应用插件:
Vue.use(VueRouter)
编写router配置项:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22//引入VueRouter
import VueRouter from 'vue-router'
//引入Luyou 组件
import About from '../components/About'
import Home from '../components/Home'
//创建router实例对象,去管理一组一组的路由规则
const router = new VueRouter({
routes:[
{
path:'/about',
component:About
},
{
path:'/home',
component:Home
}
]
})
//暴露router
export default router实现切换(active-class可配置高亮样式)
Vue:Vue Class Component的使用和注意点
发表于
分类于
Vue
基本使用
vue-class-component这个库主要用来方便以class的模式写Vue组件。
@component装饰器使类成为一个Vue组件,可以更加方便地编写Vue的配置项,方式如下:
data
可以直接声明为类的属性;methods
可以直接声明为类的原型方法;computed
可以直接声明为类属性的getter
和setter
;- 所有Vue的生命周期钩子也可以直接声明为类的原型方法(但不能在实例上进行调用)
1 | <template> |
H5:document-body和document-documentElement.md
发表于
分类于
H5
概念
documentElement
是整个节点树的根节点,即<html>
标签body
是DOM树对象的body子节点,即<body>
标签
DTD
- 页面具有DTD,或者说指定了DOCTYPE时,使用
document.documentElement
- 页面没有DTD时,使用
document.body
为了兼容两种情况,通常兼容如下:
1 | const scrollTop = windon.PageYOffset || |
通常在设置scrollTop
时,也需要做区分。
Vue:插槽的使用
发表于
分类于
Vue
Vue:父子组件之间的通信
发表于
分类于
Vue
Vue:组件之间相互访问
发表于
分类于
Vue
Swift进阶:函数派发机制
发表于
分类于
Swift进阶
静态派发 vs 动态派发
根据函数调用能否在编译时或运行时确定,可以将派发机制分成两种类型:
静态派发
:在编译期的时候,编译器就知道要为某个方法调用某种实现。因此, 编译器可以执行某些优化,甚至在可能的情况下,可以将某些代码转换成inline
函数,从而使整体执行速度异常快。动态派发
:一定量的运行时开销为代价,提高了语言的灵活性。在动态派发机制下,对于每个方法的调用,编译器必须在方法列表(witness table
或virtial table
)中查找执行方法的实现,如在运行时判断选择父类的实现,还是子类的实现。由于对象的内存都是在运行时分配的,因此只能在运行时执行检查。
编译型语言的函数派发方式
- 直接派发(Direct Dispatch)
- 编译后就确定了方法的调用地址(也叫
静态派发
),汇编代码中,直接跳到方法的地址执行,生成的汇编指令最少,速度最快 - 例如C语言,C++默认也是直接派发
- 由于缺乏动态性,无法实现多态
- 编译后就确定了方法的调用地址(也叫
Swift进阶:Runtime机制
发表于
分类于
Swift进阶
Swift类的对象创建和销毁
Swift中可以定义两种类:
- 从
NSObject
或者其派生类派生的类(NSObject体系的子类) - 从Swift基类
SwiftObject
派生的类(在定义类时没有指定基类时,默认会从基类SwiftObject派生)
Swift中类的实例对象都是在堆内存中创建的。系统会为类提供一个默认的init
构造函数,如果想自定义构造函数,需要重写重载init
函数。
类的实例对象的构建
不像OC那样将
alloc
和init
分开调用;直接使用
类型(初始化参数)
来完成实例对象的创建:let lily = Person("Lily")
在编译时,系统为每个类的初始化方法生成一个:
模块名.类名.__allocating_init(类名, 初始化参数)
的函数