18 js13 原生js升华1 小知识点

1、浏览器基本组成:用户界面、浏览器引擎、渲染引擎、网络、UI后端、js引擎、数据存储;

网络:发送网络请求;UI后端:处理UI部分,例如js原生弹窗的UI(其不在页面中,页面中是渲染引擎渲染展示);数据存储:HTML5 、cookie等提供持久化缓存功能;(附:浏览器内核)

2、渲染引擎:解析html文档构建dom树,css树,构建dom树的过程中,执行“js时间线”,js引擎便开始解析识别javascript代码,dom树和css树构建完成后,形成新的树--->>render树,渲染引擎布局render树(页面中计算位置),绘制rdnder树,渲染页面;

[网速不好的时候,浏览器会采用默认加载策略,domTree解析完成后便加载到页面(无css样式和js逻辑);若中途网速恢复正常,则依旧继续进行渲染,并不会从头开始重新解析domTree,原因:渲染domTree是GUI线程的事情,而加载css或js是网络请求线程的事情,本质上不冲突] [网络请求如果超时,便不会再请求,未超时会继续发送请求]

【结构化标签html/head/body等若无内容、display;none,创建render树的时候不会存在】

创建rander树

渲染模式:标准模式和怪异模式(混杂模式);大部分浏览器都会有怪异模式,但并不明显,版本之间差异并不是很大;chrome高版本目前只支持标准模式(即使去掉<!DOCTYPE html>也不会变为怪异模式),聚焦点为ie6模式下的渲染模式,两种模式差距较大,必须掌握不同模式下的盒子模型;渲染模式就是历史过渡的作用,现在完成使命了;

[1].渲染模式中只要把<!DOCTYPE html>去掉,或者写错,并可变为怪异模式;(目前使用html5标准模式,后面两个版本基本淘汰)

[2].console.log(document.compatMode);//利用document属性可判断目前网页处于何种模式,CSS1Compat:标准模式; BackCompat:怪异模型;(向后兼容浏览器)

[3].怪异模式下的盒子模型(重点):代码区width/height = content+padding+border; (css3中可切换盒子模型,应用场景:扫雷)

[4].补充: [2016年1月12日,微软公司宣布于这一天停止对IE 8/9/10三个版本的技术支持,用户将不会再收到任何来自微软官方的IE安全更新;作为替代方案,微软建议用户升级到IE11或者改用Microsoft Edge浏览器] 【淘宝现不兼容ie8以下版本】【IE老版本浏览器目前:银行、政务系统还在用,不过很多站点已经不兼容了】

3、页面展示过程:url-->dns -->ip;  tcp三次握手;js/html/css/img;  js时间线; 渲染过程(渲染引擎); tcp 四次挥手;

4、label标签(表单元素):for属性对应表单元素的id;[测试:其是单向绑定的关系;点击label标签,两个元素都被触发,但点击input标签并不会触发label] [用户体验更好,常配套使用]

5、元素属性和特性:<input type="text" value="" id="demo"  class=""  data="">;[区别于js特性:单线程、ECMA标准等]

(1).天生自带的称为特性,type,value,class,id; js中的dom对象和元素的特性是一 一 映射的的关系,通过dom对象.可进行读取,但如果行间样式没写,例如value,可以通过对象.的方式进行赋值,但是并不会添加到行间,但是value的值已被添加了上去;[name在部分元素中是特性],div.id; div.className,  取到class属性不能div.class;

(2).后天自定义的称为属性,对象.的方式是取不到属性值的,不报错,返回undefined;,可以对象.方式赋值,但不会添加到行间;

(3).setAttribute();  getAttribute(); 无论是属性还是特性都可以通过这两个方法进行读取操作,但属性即使添加后,依旧不能通过对象.的方式取值;【removeAttribute() 方法,用来移除元素的特性,接受一个参数,即要移除元素的特性名 】

(4).jQuery封装方法:attr(); prop(): 两者底层封装的方法不言而喻,attr();//封装setAttribute(); getAttribute(); prop();//方法便是对象打点调用 ;

(5).如今无论特性or属性,统称为属性,两者的区别依旧要重视,特性是有映射关系的,属性没有;

6、图片懒加载、预加载:

[懒加载:大型购物网站为了用户体验需要保证响应迅速,往往先把首屏内容展示给用户,剩下的内容按需加载即可;也许用户压根不看首屏直接搜索,避免把所有内容都加载好占用带宽,浪费流量]

[预加载:图片全部加载完成后再添加至页面中,而不是一部分一部分的进行加载显示]

[网页中的图片应该采用懒加载+预加载的方式来解决此类需求,既可以提升用户体验,又可以提高浏览器的性能,节约浏览器的资源;整个过程先是懒加载,然后是预加载:伪代码:监控滑轮事件,不断判断当前div的位置,到了位置后采取预加载,把图片添加到页面之中即可】

7、Math.abs();//绝对值;Math.round();//四舍五入取整数;Math.ceil();/floor();Math.max(x,y);//返回大值;Math.pow(x,y);//返回x的y次幂;[Math.JSON.String,都是静态类,直接使用即可,不能手动new对象使用]   

Math.random();// [0,1) 左闭右开区间;应用场景:随机抽奖、数组中与sort()结合使用,乱序;

8、文档碎片: document.documentFragment; //就是一个容器(框),最初是希望来解决性能问题,减少重绘和重排,但多次实际测试中发现,其并没有提高多少性能;高级框架为解决性能问题,提出了一个虚拟DOM的概念;虚拟DOM 自己定义一个构造函数,当然也可以添加一些算法,然后此构造函数与元素的domTree进行一个简单的映射关系,不直接操作domTree,以免发生重绘和重排,操作虚拟的DOM来提高性能;

例:js通过dom对象为ul标签中填入10个li标签,每个li标签中写入内容(要求节约性能)

方案一:每循环一次往ul中插入li,反复渲染domTree,影响性能;

方案二:使用文档碎片,先将所有的li标签放入到文档碎片中,然后再放入ul标签,实际测试中发现其并不能大幅提升性能;(ie,firefox性能提高的还可以哈~)

补充:使用普通标签例如<div>也可以,但增加了多余标签,并且也不符合html结构不可随意更改,当在for循环中console.log(oDiv);的时候,每次都打印已添加的10个li标签,不会每循环一次打印出便是一个li标签,这种现象[全部放到div中,才会console.log(); 可以理解为内部将其提升了执行顺序];

使用文档碎片有两个特殊的现象:1.同上;2.在文档碎片未插入到元素中的时候,其才会显示(没有执行oUl.appendChild(oF); console.log(oF);// 才能显示其包裹了10个li标签),否则不会显示出;

【ul标签中当然可以放入其他块级标签,并不只能插入li标签;行级标签中只能嵌套行级标签,块级标签可以嵌套任何标签,p标签不能嵌套div、ul/ol/li标签】

方案三:字符串拼接(性能还OK)

9、封装document.getElementsByClassName(); //处理兼容性问题,Document/Element都有该方法

10、断点调试:debugger;(使用console.log();方法也很常见)

   [代码区写debugger;或者控制台中Sources上直接打断点展示]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,486评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,754评论 1 92
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 761评论 0 3
  • 2017年最后一个月: 愿你看淡世事沧桑,内心安然无恙 ​。 在这一年里的好事坏事都会在二十几天后变成往事。 越长...
    冰心玉壶miss阅读 128评论 0 0
  • “前人的思考,我们的阶梯”,“每一件事情背后都有其商业逻辑”,如果你也是《5分钟商学院》的学员,应当对这几句话并不...
    WilsonWang2018阅读 4,219评论 6 15