实习僧面经

垂直居中的几种方法

文字超出省略

一行内容

  1. overflow:hidden; //超出的文本隐藏
  2. text-overflow:ellipsis; //溢出用省略号显示
  3. white-space:nowrap; //溢出不换行

两行内容

  1. overflow: hidden;
  2. text-overflow: ellipsis;
  3. display:-webkit-box; //作为弹性伸缩盒子模型显示。
  4. -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
  5. -webkit-line-clamp:2; //显示的行

cookie vs localstorge vs sessionstorge

http的状态码

vue生命周期,Dom在那个阶段完成

vue的模版指令

vue的修饰符

表单修饰符

  • .lazy在我们输入完所有东西,光标离开才更新视图。
  • .trim过滤首尾的空格
  • .number限制输入的只能是数字
  1. <input type="text" v-model="value">
  2. <input type="text" v-model.lazy="value">
  3. <input type="text" v-model.trim="value">
  4. <input type="text" v-model.number="value">
  5. <p>{{value}}</p>

事件修饰符

  • .stop一键阻止事件冒泡,简直方便得不行。相当于调用了event.stopPropagation()方法。
  • .prevent用于阻止事件的默认行为,例如,当点击提交按钮时阻止对表单的提交。相当于调用了event.preventDefault()方法。
  • .self只当事件是从事件绑定的元素本身触发时才触发回调。
  • .once绑定了事件以后只能触发一次,第二次就不会触发。
  • .capture事件触发从包含这个元素的顶层开始往下触发。
  • .passive
  • .native该修饰符的作用就是把一个vue组件转化为一个普通的HTML标签,注意:使用.native修饰符来操作普通HTML标签是会令事件失效的

鼠标按键修饰符

  • .left 左键点击
  • .right 右键点击
  • .middle 中键点击

键值修饰符

  • .keyCode
  1. //普通键
  2. .enter
  3. .tab
  4. .delete //(捕获“删除”和“退格”键)
  5. .space
  6. .esc
  7. .up
  8. .down
  9. .left
  10. .right
  11. //系统修饰键
  12. .ctrl
  13. .alt
  14. .meta
  15. .shift
  16. <input type="text" @keyup.ctrl="shout(4)">

.exact

场景我们只需要或者只能按一个系统修饰键来触发(像制作一些快捷键的时候),而当我们按下ctrl和其他键的时候则无法触发。那就这样写。

  1. <button type="text" @click.ctrl.exact="shout(4)">ok</button>

v-bind修饰符

.camel渲染为驼峰名

.sync

双向绑定事件, v-bind 和 @update的语法糖

  1. //父亲组件
  2. <comp :myMessage="bar" @update:myMessage="func"></comp>
  3. //js
  4. func(e){
  5. this.bar = e;
  6. }
  7. //子组件js
  8. func2(){
  9. this.$emit('update:myMessage',params);
  10. }

现在这个.sync修饰符就是简化了上面的步骤

  1. //父组件
  2. <comp :myMessage.sync="bar"></comp>
  3. //子组件
  4. this.$emit('update:myMessage',params);

注意

  1. 使用sync的时候,子组件传递的事件名必须为update:value,其中value必须与子组件中props中声明的名称完全一致(如上例中的myMessage,不能使用my-message)
  2. 注意带有 .sync 修饰符的 v-bind 不能和表达式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的)。取而代之的是,你只能提供你想要绑定的属性名,类似 v-model。
  3. 将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”,是无法正常工作的,因为在解析一个像这样的复杂表达式的时候,有很多边缘情况需要考虑。

v-for中key的作用

使用v-for更新已渲染的元素列表时,默认用就地复用策略;列表数据修改的时候,他会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素; 我们在使用的使用经常会使用index(即数组的下标)来作为key,但其实这是不推荐的一种使用方法。

v-if和v-show的区别

  • v-show 不管条件是真还是假,第一次渲染的时候都会编译出来,也就是标签都会添加到DOM中。之后切换的时候,通过display: none;样式来显示隐藏元素。可以说只是改变css的样式,几乎不会影响什么性能。
  • v-if 在首次渲染的时候,如果条件为假什么也不操作,页面当作没有这些元素。当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。当条件从真变为假的时候,开始局部编译,卸载这些元素,也就是删除。