# 每日一问

# Day1

# 为什么使用 flex 布局,它们为你解决了什么问题?

flex 布局非常灵活,可以用来快速布局常见的元素居中,元素宽度或高度自适应剩余宽高等等之类的布局。

在移动端上能够布局兼容性更好的布局。

比如在布局多个行内元素基于顶部对齐的时候,使用 flex 布局同时通过设置 align-items 属性为 baseline,让主轴元素基于基线对齐就可以实现元素顶部对齐。

如果使用普通布局方式,例如设置元素为行级元素并使用 vertical-align 为 top/text-top,在部分手机上就会出现不对齐的现象。特别是中文和英文/数字需要对齐的场景下。

flexbox

# 请解释 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如何进行热更新?