前端题目笔记(1)

作者: ai房子菇凉 | 来源:发表于2017-02-22 17:23 被阅读0次

    1.location.href="/location.assign(") ,href与assign方法会产生历史记录;

    location.replace(),在replace之后,浏览历史就被清空了。

    2.浮动:“浮动元素会脱离文档流。”

    清除浮动:.clearfix:after {

    content: ".";

    display: block;

    height: 0;

    clear: both;

    visibility: hidden;

    }

    3.angularjs ng-if ng-show ng-hide区别

    在使用anularjs开发前端页面时,常常使用ng-show、ng-hide、ng-if功能来控制页面元素的显示或隐藏,那他们之间有什么不同呢?

    实现原理方面:ng-show/ng-hide是通过修改CSS样式方式控制元素显示与隐藏,对应的DOM元素会一直存在于当前页面中,而ng-if根据表达式的值动态的在当前的页面中添加删除页面元素。如果赋值表达式的值为false,那么这个元素就会从页面中删除,否则会添加一个元素。ng-if创建元素时用的是被它编译后的代码,如果ng-if内部的代码被其它方式修改过,那么修改只会对本次展现有效,页面元素重新渲染后修改效果会消失,而ng-show/ng-hide则能够保留dom元素上次修改后的状态。在作用域方面,两者也存在差异:当一个元素被ng-if从DOM中删除时,与其关联的作用域也会被销毁。而且当它重新加入DOM中时,则会生成一个新的作用域,而ng-show和ng-hide则不会。

    4.[1]定义

    浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎

    渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具

    [2]渲染引擎:

    firefox使用gecko引擎

    IE使用Trident引擎

    2015年微软推出自己新的浏览器,原名叫斯巴达,后改名edge,使用edge引擎

    opera最早使用Presto引擎,后来弃用

    chrome\safari\opera使用webkit引擎

    13年chrome和opera开始使用Blink引擎

    js引擎:

    老版本IE使用Jscript引擎

    IE9之后使用Chakra引擎

    edge浏览器仍然使用Chakra引擎

    firefox使用monkey系列引擎

    safari使用的SquirrelFish系列引擎

    Opera使用Carakan引擎

    chrome使用V8引擎。nodeJs其实就是封装了V8引擎

    5.判断浏览器类型的主要就是window.navigater.userAgent对象。

    6.实现单行文本的溢出显示省略号 用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览。

    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;

    7. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.

     CMD 推崇依赖就近,AMD 推崇依赖前置。

    看代码:// CMD

    define(function(require, exports, module) {  var a = require('./a')  a.doSomething()    var b = require('./b') // 依赖可以就近书写  b.doSomething()  // ... })

    // AMD 默认推荐的是

    define(['./a', './b'], function(a, b) {  // 依赖必须一开始就写好    a.doSomething()    b.doSomething()    ...})

    8.HTTP缓存技术,304和200有何区别

    浏览器第一次加载资源的时候,返回一般为200,意思是成功获取资源,并会在浏览器的缓存中记录下max-age,第二次访问的时候:如果只是用浏览器打开,那么浏览器会去判断这个资源在缓存里有没有,如果有的话,会去判断max-age,看看过期没有,如果没有过期,则直接读缓存,根本不会和服务器进行交互,换句话说,断网都能打开,就和本地跑一样!如果已经过期了,那就去服务器请求,等待服务器响应,这是很费时间的,服务器如果发现资源没有改变过,那么就会返回304,告诉浏览器,我没变过,你去读缓存吧,于是浏览器也不用从服务器拉数据了,然而,等待服务器响应也是一个很要命的问题,在网速发达的今天,等一个响应,有时比下载还慢。

    如果是用浏览器刷新的,那么浏览器不会去判断max-age了,直接去服务器拿,如果服务器判断资源没变过,则还是会返回304,和上面是一样的,所以刷新一下,其实很可怕,等于把所有的资源都要去服务器请求一边,问问服务器我过期了没有。

    相关文章

      网友评论

        本文标题:前端题目笔记(1)

        本文链接:https://www.haomeiwen.com/subject/ktqmwttx.html