工作生活

知识点(二)

2019-07-03  本文已影响0人  送你一堆小心心

1. css实现图片自适应宽高

    .img {
          width: 100%;
          height: auto;
     }

2.讲 flex,手写出 flex 常用的属性,并且讲出作用

flex 是 flexible box的缩写,意为:'弹性布局',用来为盒状模型提供最大的灵活性。
主要属性分布如下:

3.BFC是什么?怎么生成BFC?BFC有什么作用?

BFC是block format content ,意思是块级格式化上下文,它是一个独立渲染的区域,只有block-level box参与,并且规定了内部的block-level box布局,并且与这个区域内好无关系

作用 -- 清除浮动


image.png

作用 -- 防止垂直margin重叠(折叠)


image.png

4.项目里面的前端鉴权是怎么实现的?

具体分析看这个https://blog.csdn.net/wang839305939/article/details/78713124/

5. vue的虚拟dom是怎么回事?

虚拟dom可以理解为保存了一棵dom树被渲染之前所包含的所有信息,而这些信息可以通过对象的形式一直保存在内存中,并通过JavaScript的操作进行维护。

6. vue 双向绑定讲一讲

https://www.cnblogs.com/zhouyideboke/p/9626804.html这个讲的非常的好

7. 手写函数防抖和函数节流

函数节流和函数防抖都是优化高频率执行js代码的一种手段

函数节流,以滚动事件为例

    var canRun = true // 初始值是已经空闲
    document.getElementById('throttle').onscroll = function () {
        if (!canRun) {
            return; // 判断是否已经空闲,如果在执行中,直接return
        }
        canRun = false
        setTimeout(function(){
              console.log('函数节流')
              canRun = true
        },300)
    }

函数防抖

    var timer = false
    document.getElementById9('debouce').onscroll = function(){
          clearTimeout(timer) // 清除未执行的代码,重置会初始化状态
          timer = setTimeout(function(){
                console.log('函数防抖')
          },300)
    }

8. load、DOMContentLoaded 事件的触发顺序

load事件:页面资源全部载入(js,css,图片加载完成)出发
ready事件:原生无ready,只有(等同于)DOMContentLoaded事件。是在dom加载完成后触发,此时引用的资源未必已加载完成。
所以,DOMContentLoaded事件一定在load之前。

9. 图片懒加载的实现过程

10. vue-lazyloader的原理,手写伪代码

image.png

11. url的组成

image.png

12. css实现瀑布流布局

13. 深拷贝和浅拷贝

14. 同源策略以及jsonp解决跨域

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说 Web 是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

它的核心就在于它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。

由于 script 标签不受浏览器同源策略的影响,允许跨域引用资源。因此可以通过动态创建 script 标签,然后利用 src 属性进行跨域,这也就是 JSONP 跨域的基本原理。

直接通过下面的例子来说明 JSONP 实现跨域的流程:

  // 1. 定义一个 回调函数 handleResponse 用来接收返回的数据
  function handleResponse(data) {
      console.log(data);
  };

  // 2. 动态创建一个 script 标签,并且告诉后端回调函数名叫 handleResponse
  var body = document.getElementsByTagName('body')[0];
  var script = document.gerElement('script');
  script.src = 'http://www.laixiangran.cn/json?callback=handleResponse';
  body.appendChild(script);

  // 3. 通过 script.src 请求 `http://www.laixiangran.cn/json?              callback=handleResponse`,
  // 4. 后端能够识别这样的 URL 格式并处理该请求,然后返回       handleResponse({"name": "laixiangran"}) 给浏览器
  // 5. 浏览器在接收到 handleResponse({"name": "laixiangran"}) 之后立即执行 ,也就是执行 handleResponse 方法,获得后端返回的数据,这样就完成一次跨域请求了。

15. 讲解MVVM

数据(Model)和视图(View)是不能直接通讯的,而是需要通过ViewModel来实现双方的通讯。当数据变化的时候,viewModel能够监听到这种变化,并及时的通知view做出修改。同样的,当页面有事件触发时,viewMOdel也能够监听到事件,并通知model进行响应。Viewmodel就相当于一个观察者,监控着双方的动作,并及时通知对方进行相应的操作。

上一篇下一篇

猜你喜欢

热点阅读