JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能

这篇具有很好参考价值的文章主要介绍了JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

应用:tab 栏切换

H5自定义属性


自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。

自定义属性获取是通过getAttribute(‘属性’) 获取。

但是有些自定义属性很容易引起歧义,不容易判断是元素的内置属性还是自定义属性。

H5给我们新增了自定义属性:

设置H5自定义属性

H5规定自定义属性data-开头做为属性名并且赋值。

比如

或者使用 JS 设置

element.setAttribute(‘data-index’, 2)

获取H5自定义属性

兼容性获取 element.getAttribute(‘data-index’);

H5新增 element.dataset.index 或者 element.dataset[‘index’] ie 11才开始支持

h5新增的获取自定义属性的方法 它只能获取data-开头的

dataset 是一个集合里面存放了所有以data开头的自定义属性

如果自定义属性里面有多个-链接的单词,我们获取的时候采取 驼峰命名法

console.log(div.dataset.listName);

console.log(div.dataset[‘listName’]);

节点操作


1. 父级节点

node.parentNode

parentNode 属性可返回某节点的父节点,注意是最近的一个父节点

如果指定的节点没有父节点则返回 null

2. 子节点

parentNode.childNodes(标准)

parentNode.childNodes 返回包含指定节点的子节点的集合,该集合为即时更新的集合。

注意:返回值里面包含了所有的子节点,包括元素节点,文本节点等。

如果只想要获得里面的元素节点,则需要专门处理。 所以我们一般不提倡使用childNodes

获取元素节点:

var ul = document. querySelector(‘ul’);

for(var i = 0; i < ul.childNodes.length;i++) {

if (ul.childNodes[i].nodeType == 1) {    // ul.childNodes[i] 是元素节点

console.log(ul.childNodes[i]);}

}

相当于:

console.log(ul.children);

parentNode.children(非标准

parentNode.children 是一个只读属性,返回所有的子元素节点。它只返回子元素节点,其余节点不返回

parentNode.firstChild

firstChild 返回第一个子节点,找不到则返回null。同样,也是包含所有的节点。

parentNode.lastChild

lastChild 返回最后一个子节点,找不到则返回null。同样,也是包含所有的节点。

parentNode.firstElementChild

firstElementChild 返回第一个子元素节点,找不到则返回null

parentNode.lastElementChild

lastElementChild 返回最后一个子元素节点,找不到则返回null。

实际开发中,firstChild 和 lastChild 包含其他节点,操作不方便,而 firstElementChild 和 lastElementChild 又有兼容性问题,那么我们如何获取第一个子元素节点或最后一个子元素节点呢?

解决方案:

如果想要第一个子元素节点,可以使用 parentNode.chilren[0]

如果想要最后一个子元素节点,可以使用 parentNode.chilren[parentNode.chilren.length - 1]

案例:下拉菜单

兄弟节点

node.nextSibling

nextSibling 返回当前元素的下一个兄弟节点,找不到则返回null。同样,也是包含所有的节点。

node.previousSibling

previousSibling 返回当前元素上一个兄弟节点,找不到则返回null。同样,也是包含所有的节点。

node.nextElementSibling

nextElementSibling 返回当前元素下一个兄弟元素节点,找不到则返回null。

node.previousElementSibling

previousElementSibling 返回当前元素上一个兄弟元素节点,找不到则返回null。

code.nextElementSibing与previousElementSibling存在兼容性问题

创建节点

document.createElement(‘tagName’)

ocument.createElement() 方法创建由 tagName 指定的 HTML 元素。因为这些元素原先不存在,是根据我们的需求动态生成的,所以我们也称为动态创建元素节点。

node.appendChild(child)

node.appendChild() 方法将一个节点添加到指定父节点的子节点列表末尾。类似于 CSS 里面的 after 伪元素。

node.insertBefore(child, 指定元素)

node.insertBefore() 方法将一个节点添加到父节点的指定子节点前面。类似于 CSS 里面的 before 伪元素。

案例:简单版发布留言案例

删除节点

node.removeChild(child)

node.removeChild() 方法从 DOM 中删除一个子节点,返回删除的节点

案例:删除留言案例

复制节点(克隆节点)

node.cloneNode()

node.cloneNode() 方法返回调用该方法的节点的一个副本。 也称为克隆节点/拷贝节点

注意:

如果括号参数为空或者为 false ,则是浅拷贝,即只克隆复制节点本身,不克隆里面的子节点。

如果括号参数为 true ,则是深度拷贝,会复制节点本身以及里面所有的子节点。

案例:动态生成表格

三种动态创建元素区别

document.write()

element.innerHTML

document.createElement()

document.write 是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘

innerHTML 是将内容写入某个 DOM 节点,不会导致页面全部重绘

innerHTML 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂

createElement() 创建多个元素效率稍低一点点,但是结构更清晰

总结:不同浏览器下,innerHTML 效率要比 creatElement 高

注册事件


给元素添加事件,称为注册事件或者绑定事件。

注册事件有两种方式:传统方式和方法监听注册方式

传统注册方式

利用 on 开头的事件 onclick

<button οnclick=“alert(‘hi~’)”>

btn.onclick = function() {}

特点: 注册事件的唯一性

同一个元素同一个事件只能设置一个处理函数,最后注册的处理函数将会覆盖前面注册的处理函数

方法监听注册方式

eventTarget.addEventListener(type, listener[, useCapture])

w3c 标准 推荐方式

addEventListener() 它是一个方法

IE9 之前的 IE 不支持此方法,可使用 attachEvent() 代替

特点:同一个元素同一个事件可以注册多个监听器

按注册顺序依次执行

eventTarget.addEventListener()方法将指定的监听器注册到 eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数。

该方法接收三个参数:

type:事件类型字符串,比如 click 、mouseover ,注意这里不要带 on

listener:事件处理函数,事件发生时,会调用该监听函数

useCapture:可选参数,是一个布尔值,默认是 false可以选择是冒泡还是捕获

删除事件的方式

传统注册方式

eventTarget.onclick = null;

方法监听注册方式

eventTarget.removeEventListener(type, listener[, useCapture]);

eventTarget.detachEvent(eventNameWithOn, callback);

事件流


事件流描述的是从页面中接收事件的顺序。

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即 DOM 事件流。

比如我们给一个div 注册了点击事件

DOM 事件流分为3个阶段:

1捕获阶段

2当前目标阶段

3冒泡阶段

JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言

事件冒泡: IE 最早提出,事件开始时由最具体的元素接收,然后逐级向上传播到到 DOM 最顶层节点的过程。

事件捕获: 网景最早提出,由 DOM 最顶层节点开始,然后逐级向下传播到到最具体的元素接收的过程。

JS 代码中只能执行捕获或者冒泡其中的一个阶段。

onclick 和 attachEvent 只能得到冒泡阶段。

addEventListener(type, listener[, useCapture])第三个参数如果是 true,表示在事件捕获阶段调用事件处理程序;如果是 false(不写默认就是false),表示在事件冒泡阶段调用事件处理程序。

实际开发中我们很少使用事件捕获,我们更关注事件冒泡。

有些事件是没有冒泡的,比如 onblur、onfocus、onmouseenter、onmouseleave

事件对象


eventTarget.onclick = function(event) {

// 这个 event 就是事件对象,我们还喜欢的写成 e 或者 evt

}

eventTarget.addEventListener(‘click’, function(event) {

// 这个 event 就是事件对象,我们还喜欢的写成 e 或者 evt

})

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言

判断

回到题目,如果你真想检验一个人的水平。第一步先考察一下基本的编程基础,问几个基本的编程问题,可以和前端相关也可以无关。比如垃圾收集大致是怎么做的,setTimeout 大致做了什么(说会在另一个线程里执行回调的直接毙掉)。

第二步考察一下知识面,问问http、tcp的基本知识,dns是怎么工作的,或者常用框架的实现原理,看看候选人是不是除了自己的一亩三分地什么都不关心。

第三步考察hold业务逻辑的能力,从一个简单的注册页,或者查询页开始,先让说下代码的基本架构,然后需求、性能、可靠性、安全层层加码,看看能不能很快的反馈出解决方案。能对答如流的要么做过,要么对他来说这种复杂度的东西是小case。

前三步都没问题,基本上说明候选人已经还行了,但是行到什么程度,不知道。如果想找比较厉害的,就增加个第四步,亮点项目考察。

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了,我整理一套前端面试题分享给大家,希望对即将去面试的小伙伴们有帮助!

JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言

JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能,2024年程序员学习,前端,javascript,开发语言

tcp的基本知识,dns是怎么工作的,或者常用框架的实现原理,看看候选人是不是除了自己的一亩三分地什么都不关心。

第三步考察hold业务逻辑的能力,从一个简单的注册页,或者查询页开始,先让说下代码的基本架构,然后需求、性能、可靠性、安全层层加码,看看能不能很快的反馈出解决方案。能对答如流的要么做过,要么对他来说这种复杂度的东西是小case。

前三步都没问题,基本上说明候选人已经还行了,但是行到什么程度,不知道。如果想找比较厉害的,就增加个第四步,亮点项目考察。

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了,我整理一套前端面试题分享给大家,希望对即将去面试的小伙伴们有帮助!

[外链图片转存中…(img-wpWB7fbG-1711641048450)]

[外链图片转存中…(img-UJmguBfI-1711641048451)]文章来源地址https://www.toymoban.com/news/detail-845811.html

到了这里,关于JavaScript Web APIs2(2),GitHub标星1w的前端架构师必备技能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端面试:【浏览器与渲染引擎】Web APIs - DOM、XHR、Fetch、Canvas

    嗨,亲爱的读者!当我们在浏览器中浏览网页时,我们常常会与各种Web API打交道。这些API允许我们与网页内容、服务器资源和图形进行交互。本文将深入探讨一些常见的Web API,包括DOM、XHR、Fetch和Canvas,以帮助你了解它们的用途和如何使用它们。 1. DOM(文档对象模型): 用

    2024年02月11日
    浏览(30)
  • GitHub标星9

    基本解耦方案 组件化的第一步就是对要拆出去的组件进行解耦,常见解耦方式有以下几种: (1) 公用代码处理 基础业务逻辑分别拆成基础组件 自身逻辑完整、用于完成某一特定功能、不含业务逻辑的一组代码,独立成 SDK 代码量很小不足以拆分成单独拆分的代码和资源,我们

    2024年04月27日
    浏览(50)
  • 涨薪7K,GitHub标星3.2K

    前言 最近两部剧爆火,30而已,20不惑,其实刚刚开始看这个 点击领取完整开源项目《安卓学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》 2个电视剧我在想是不是说反了。不是应该29而已,30不惑吗?后面想想其实他应该是想告诉我们这个残酷的现实

    2024年03月11日
    浏览(55)
  • Github超1W Star的机器学习 项目合集:助你轻松跨入AI领域(可快速下载)

    AI时代已经来临,机器学习成为了当今的热潮。但是,很多人在面对机器学习时却不知道如何开始学习。 今天,我为大家推荐几个适合初学者的机器学习开源项目,帮助大家更好地了解和掌握机器学习的知识。这些项目都是开源的,且已经加入了 Github加速计划 ,可以 快速下

    2024年01月22日
    浏览(38)
  • Github 标星 4w+,如何用 Python 实现所有算法

    点击蓝色“五分钟学算法”关注我哟 加个“星标”,一起学算法 编译 | 周素云、蒋宝尚 来源 | 大数据文摘出品 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码,全都给你交代清楚了。为了让新手更加直观的理解,有的部分还配了动图。 标

    2023年04月08日
    浏览(29)
  • Web APIs

    API 是一些预先定义的函数,提供应用程序与开发人员基于某软件或硬件访问一组例程的能力 Web APIs 是 W3C 组织的标准,是 JS 独有的部分 Web API 是浏览器提供的一套操作浏览器功能和页面元素的 API,即 DOM 与 BOM 文档对象模型(Document Object Model)是 W3C 组织推荐的处理可扩展标

    2024年04月14日
    浏览(32)
  • Web APIs——案例

    需求:当页面滚动到秒杀模块,导航栏自动滑入,否则滑出 分析:         ①:用到页面滚动事件         ②:检测页面滚动大于等于 秒杀模块的位置 则滑入,否则滑出         ③:主要移动的是秒杀模块的顶部位置 需求:点击不同的模块,页面可以自动跳转不同的位置

    2024年02月06日
    浏览(22)
  • web APIs-练习二

    轮播图点击切换: 随机点名: 小米搜索框: 评论回车发布: tab栏切换: 个人注册-同意协议: 仿京东显示隐藏密码: 验证码倒计时: 手风琴:

    2024年02月15日
    浏览(24)
  • Web前端-JavaScript

    目录 1 概述 2 HTML嵌入JS代码三种方式 2.1 第一种方式 2.2 第二种方式 2.3 第三种方式 3 变量 4 数据类型 4.1 概述 4.2 Number数据类型  4.3 几个值得注意的函数 4.4 Boolean数据类型  4.5 String数据类型 4.6 关于Object类型 4.7 NaN、undefined、null的区别 4 函数 5 事件 5.1 JS中有哪些常用的事件

    2024年02月09日
    浏览(44)
  • Web前端 Javascript笔记3

     内存中的生命周期         1、内存分配         2、内存使用(读写)         3、内存回收,使用完毕之后,垃圾回收器完成         内存泄漏:该回收的,由于某些未知因素,未释放,叫做内存泄漏 栈:数据存在其中会自动释放 堆:对象,根据程序员的操作来决定释

    2024年04月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包