# 每日一问
# Day1
# 为什么使用 flex 布局,它们为你解决了什么问题?
flex 布局非常灵活,可以用来快速布局常见的元素居中,元素宽度或高度自适应剩余宽高等等之类的布局。
在移动端上能够布局兼容性更好的布局。
比如在布局多个行内元素基于顶部对齐的时候,使用 flex 布局同时通过设置 align-items 属性为 baseline,让主轴元素基于基线对齐就可以实现元素顶部对齐。
如果使用普通布局方式,例如设置元素为行级元素并使用 vertical-align 为 top/text-top,在部分手机上就会出现不对齐的现象。特别是中文和英文/数字需要对齐的场景下。
# 请解释 CSS Flexbox 的术语?
# css 像素与物理/硬件像素的不同?
# Day2
# 什么场景下需要双向数据绑定?
界面的实时操作能反映到数据同时数据的变更能实时反映到界面。 比如对表单的校验等场景下。(vue 比 react 对表单验证的处理就要方便很多)
# 如何配置单页应用?如何配置多页应用?
# Day3
# git 如何解决冲突?
对有冲突的代码,选择当前需要保留的代码,然后保存再提交。
产生冲突一般会出现在多个人同时对同一块代码做了修改,其中一方去合并修改的代码的情况下。
避免冲突的方式就是尽量避免多个人对同一块代码模块同时做修改,在提交代码前先在当前分支上拉取合并最新代码。同时也要尽可能减少多个人在同一分支上做修改的情况。
团队成员大的时候,就很需要一套标准化规范化的可以统一团队成员 git 工作流的方式,git flow 就是一种很有效的 git 工作流程。它没有在 git 的基础上扩展功能,只是使用脚步捆绑了一系列的 git 命令来完成一些特定的工作流程。
它分为 6 种分支: featuer 分支、develop 分支、realase 分支、master 分支、bugfix 分支、hotfix 分支。
feature 分支是功能分支,基于 develope 创建。
develop 是所有已完成分支的集合。
release 是版本管理分支,也是预发布分支。基于 develop 分支,最后被 finish 之后,会。
在团队分工合作的时候,每一个人负责独立的模块一定程度上可以避免一些代码冲突。当有很多人一起维护同一个项目的时候,如何保证自己开发的分支在提交前及时更新到所有人的代码修改,以及当 master 上出现 bug 时,同时又有新功能在并行开发需要上线等容易产生冲突的场景,如何去管理分支?
# Day4
# vue 中的几种通信方式
# Day5
# 为什么 vue 中函数不能使用箭头函数?
箭头函数的 this 继承的是其作用域链的上一层的 this。
vue2.0 版本中函数中的 this 绑定是通过 bind 来绑定的,对于非箭头函数,可以通过 bind 来指向函数的 this 指向。箭头函数不能通过 bind 来指向 this 指向。
function initMethods (vm: Component, methods: Object) {
const props = vm.$options.props
for (const key in methods) {
if (process.env.NODE_ENV !== 'production') {
if (typeof methods[key] !== 'function') {
warn(
`Method "${key}" has type "${typeof methods[key]}" in the component definition. ` +
`Did you reference the function correctly?`,
vm
)
}
if (props && hasOwn(props, key)) {
warn(
`Method "${key}" has already been defined as a prop.`,
vm
)
}
if ((key in vm) && isReserved(key)) {
warn(
`Method "${key}" conflicts with an existing Vue instance method. ` +
`Avoid defining component methods that start with _ or $.`
)
}
}
vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm)
}
}
var obj = {
a: 'yy'
}
function funb () {return this.a}
console.log(funb.bind(obj)())
var func = () => {return this.a}
console.log(func.bind(obj)())
# Day6
# webpack如何进行热更新?
每日3+1 →