zoukankan      html  css  js  c++  java
  • 前端小知识集锦

    持续更新中............
     
    同点:都是保存在浏览器端,且同源的
     
    区别:
    cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
    cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
    数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
    作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
    Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。
     
     
    2.什么是渐进增强(progressive enhancement)、优雅降级(graceful degradation)呢?
      渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
      优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
      区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。
     
    “优雅降级”观点
    “优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。
    在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。
     
    “渐进增强”观点
    “渐进增强”观点则认为应关注于内容本身。
    内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。
     
    3.组件、插件、控件的区别

    控件:是编程中用到的,按钮就算是一个控件,窗口也是等等

    组件:是软件的一部分.软件的组成部分.

    插件:网页中用到的,flash插件,没有它浏览器不能播放flash.

    首先范围最广的应该是组件,英文component,提起组件我们不应该把他和具体的技术,什么dll文件,ocx控件,activex等等联系起来,因为组件仅仅是一个概念,如果非要解释的话,那就是凡是在软件开发中用到了软件的复用,被复用的部分都可以称为组件。构件的英文也是component,所以说构件和组件其实是一个意思只是翻译的不同而已。

    其实我认为最有意思的应该是插件,顾名思义,“插件”是允许我们动态插入的,而不是在编程的时候静态的写入的,这就是与普通的组件的区别,因为普通的组件是在编程的时候引入的。我们以硬件为例子,例如USB接口,主机设定了标准的接口,而不必考虑外部接口具体是什么设备只要这种设备实现主机提供的接口,两者就可以通讯。这种插件有个最大的优点就是即插即用,即支持动态的插入。

    插件是组件(构件)的一种,我们可以这样给插件进行定义,那就是凡是在应用程序中已经预留接口的组件就是插件,例如:Java中jdbc技术,jdbc只是一个接口,任何一个插件制造商只要实现这个接口都可以被java平台所使用。我们还可以拿IE插件作为例子,IE中之所以可以嵌入很多的应用程序,那是因为IE允许他们插入,说的明白一点,那就是在IE的源程序中已经为这些应用程序预留了接口,只要把通知浏览器已经加载了什么插件,浏览器就会调用预留的接口调用这些所谓的插件。

    当然控件也是组件(构件)的一种,按照网上的说法,控件就是可视化的组件,我也同意这种说法,其实再从普通组件中分解出控件完全是没有必要的,因为对于开发人员来讲,可不可视对于非软件人员来说可能很重要,但是对于软件人员来说又有什么区别呢?

    4.目前主流的四大浏览器内核有Trident、Gecko、WebKit和Presto。

      Trident/IE内核:Trident内核的常见浏览器有:IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)、2345浏览器、腾讯TT、淘宝浏览器、阿云浏览器(早期版本)、瑞星安全浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器、海豚浏览器等等。

     Gecko/Firefox内核:火狐。

     WebKit内核:WebKit内核常见的浏览器:傲游浏览器3、[1] Apple Safari (Win/Mac/iPhone/iPad)、Symbian手机浏览器、Android 默认浏览器。

    Presto内核:由于Presto是商业引擎,使用Presto的除开Opera以外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770网络浏览器等。

    //-ms代表【ie】内核识别码

    //-moz代表火狐【firefox】内核识别码

    //-webkit代表谷歌【chrome】/苹果【safari】内核识别码

    //-o代表欧朋【opera】内核识别码

    5.React Js的目的是为了使前端的V层更具组件化,能更好的复用,它能够使用简单的html标签创建更多的自定义组件标签,内部绑定事件,同时可以让你从操作dom中解脱出来,只需要操作数据就会改变相应的dom。
    React Native的目的是希望我们能够使用前端的技术栈就可以创建出能够在不同平台运行的一个框架。可以创建出在移动端运行的app,但是性能可能比原声app差一点。

     
  • 相关阅读:
    Mysql数据备份命令
    git命令大全
    git 安装及普通命令
    git学习资料
    php 魔术方法 和 魔术常量
    react事件处理(绑定)
    java父类、子类构造函数调用过程
    java字符串String的intern()方法,举例说明
    java关键字static使用的“坑”(准备、初始化)
    java虚拟机
  • 原文地址:https://www.cnblogs.com/iriliguo/p/7063811.html
Copyright © 2011-2022 走看看