前端秘法番外篇----学完Web API,前端才能算真正的入门

简介: 前端秘法番外篇----学完Web API,前端才能算真正的入门



一.引言

众所周知,JS的世界有三大组成部分,ECAMscript掌管语法规则,DOM与HTML文档的解析息息相关,BOM则掌管着浏览器的操作

而API呢,其实就是实现某些功能的内置函数,是维护一方世界的神器

Web API 是一种通过网络(如互联网)访问的应用程序编程接口。它允许不同的应用程序之间进行通信和数据交换。

一般来说,Web API 由一个服务器提供,客户端应用程序(例如网页、移动应用或其他软件)可以通过发送 HTTP 请求来访问这些 API。服务器会响应这些请求,并返回相应的数据或执行相应的操作。

Web API 通常使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE 等)来定义不同的操作。例如,GET 请求用于获取数据,POST 请求用于创建新的资源,PUT 请求用于更新现有资源,DELETE 请求用于删除资源。

通过使用 Web API,开发人员可以方便地整合不同的系统和服务,实现数据共享和功能扩展。它提供了一种松耦合的方式,使得客户端应用程序无需了解服务器端的具体实现细节,只需按照 API 的规范进行请求即可。

Web API 可以使用各种编程语言和框架来实现,常见的技术包括 REST(Representational State Transfer)风格的 API 设计、JSON 或 XML 作为数据格式等。这样可以确保 API 的互操作性和可扩展性。

总的来说,Web API 为开发人员提供了一种便捷的方式,使他们能够利用其他系统提供的数据和功能,从而构建更强大、更集成的应用程序

二.元素的获取和事件

1.获取元素

元素的获取需要调用querySelector/querySelectorAll(获取同属于某一类的所有元素)

let btn = document.querySelector('.btn');

console.dir(btn);

这里我是获取了一个button元素,并将其所有的属性打印出来了

2.各种事件

2.1点击事件

let btn = document.querySelector('.btn');

btn.onclick = function(){

   alert('执行成功!');

}

这里我注册了一个点击事件,并绑定了一个回调函数

2.2键盘事件

主要将三种keydown, keypress, keyup

let txt = document.querySelector('.txt');

txt.onkeydown = function(event){

   let a = event.keyCode;

   console.log(String.fromCharCode(a));

}

这里我们注册了一个键盘点击事件,并绑定了一个回调函数,通过event全局变量得到用户输入数据的编码值,在通过fromCharCode将其转换为字符,但我们不难发现,它是不区分大小写的

let txt = document.querySelector('.txt');

txt.onkeypress = function(event){

   let a = event.keyCode;

   console.log(String.fromCharCode(a));

}

利用keypress可以区分大小写,但是它并不能检测所有的按键信息,所以在实际开发中,我们要检测用户是否按下了某个键,最好用keydown

let txt = document.querySelector('.txt');

txt.onkeyup = function(event){

   console.log('按键松开/抬起');

}

这个是用来检测用户按下某键后是否松开

三.获取&修改操作

1.获取修改元素属性

获取元素属性后可以用console.dir打印

修改元素属性可以使用innerHTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <span>这是未修改前的内容</span>
</body>
<script src = "JScode/JS01.js">
</script>
</html>

let sp = document.querySelector('span');
console.log(sp.innerHTML);
sp.innerHTML = "这是修改后的内容";
console.log(sp.innerHTML);
sp.innerHTML = "<h3>这是修改后的页面结构</h3>";

2.修改表单属性

2.1暂停播放键的转换

let btn = document.querySelector('input');
btn.onclick = function(){
    if(btn.value === '播放'){
        btn.value = '暂停';
    }else{
        btn.value = '播放';
    }
}

2.2计数器的实现

let txt = document.querySelector('.txt');
let btn1 = document.querySelector('.add');
let btn2 = document.querySelector('.min');
btn1.onclick = function(){
    txt.value = parseInt(txt.value) + 1;
}
btn2.onclick = function(){
    txt.value = parseInt(txt.value) - 1;
}

2.3全选的实现

let selectorAll = document.querySelector('.selectorAll');

let selector = document.querySelectorAll('.selector');

selectorAll.onclick = function(){

   if(selectorAll.checked){

       for(i = 0; i < selector.length; i++){

           selector[i].checked = true;

       }

   }

   else{

       for(i = 0; i < selector.length; i++){

           selector[i].checked = false;

       }

   }

}

for(i = 0; i < selector.length; i++){

   selector[i].onclick = function(){

       selectorAll.checked = isCheckedAll(selector);

   }

}

function isCheckedAll(selector){

   for(i = 0; i < selector.length; i++){

       if(selector[i].checked === false){

           return false;

       }

   }

   return true;

}

3.样式操作

通过WebAPI我们不仅可以修改页面结构,还能修改页面样式,也就是css

3.1行内样式操作

let test = document.querySelector('div');
test.onclick = function(){
    let size = parseInt(this.style.fontSize);
    size += 3;
    this.style.fontSize = size + "px";
}

3.2类名样式操作

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Document</title>

   <style>

       .light{

           background-color: aliceblue;

           color: black;

           width: 100%;

           height: 100%;

       }

       .dark{

           background-color: rgb(48, 46, 46);

           color: aliceblue;

           width: 100%;

           height: 100%;

       }

       html, body{

           width: 100%;

           height: 100%;

       }

   </style>

</head>

<body>

   <div class="light" οnclick="isChange()">

       Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas quibusdam culpa iste fugiat corrupti, commodi, sit voluptatibus illum debitis officiis ex voluptatum voluptatem. Expedita, omnis. Assumenda debitis quas accusamus aliquid.

       Voluptatibus, odio vel dolor illum magnam minus quod, commodi optio quisquam dignissimos necessitatibus id, ab culpa nemo ullam vero? Est modi tempora repudiandae sint dolores sapiente amet quae suscipit necessitatibus.

       Dolor quae cumque corporis dolore. Provident nobis obcaecati necessitatibus aperiam, possimus doloremque nam odio laudantium ipsum placeat quaerat architecto eveniet voluptates excepturi autem cumque? Nobis similique fugit excepturi voluptatum reprehenderit!

       Molestias excepturi asperiores labore reprehenderit deserunt magnam deleniti quis distinctio aperiam atque soluta odit sapiente debitis accusamus dolorum possimus, sint temporibus tenetur consectetur facilis dolorem similique provident. Consequuntur, excepturi ipsum.

       Velit pariatur a soluta aliquam tenetur minima alias, maxime eos perferendis, debitis nobis. Atque quaerat qui vero deserunt. Quasi, libero vitae. Iure non quaerat laborum. Sit autem at aliquam cum!

       Praesentium repellat corrupti quae saepe suscipit, dolor iste? Et dolores aliquid laborum dolor. Commodi, sequi labore corporis unde nam accusamus excepturi error laborum alias ex accusantium reiciendis at? Mollitia, voluptatem.

       Autem ullam beatae sequi sed, perferendis minus molestiae quisquam at deleniti aliquam reprehenderit obcaecati fugit dolorem suscipit tenetur placeat velit doloribus, magni cum, iusto quo consequuntur? Illum ipsum eligendi asperiores.

       Distinctio deserunt debitis sequi et! Ad, accusantium magni quaerat iure eos nostrum quidem mollitia sunt, eum assumenda ullam soluta non voluptatem atque? Odio voluptates atque eius! Ipsam aliquid iure sed!

       Ratione esse veritatis tenetur sapiente nobis at a quas pariatur quaerat numquam ipsa, sed porro quisquam laudantium officiis, quibusdam minus facere eum reprehenderit eligendi totam fugiat magnam. At, dolor voluptatum?

       Quos atque ducimus sint aut pariatur in aliquid molestias deserunt itaque culpa. Enim vel dolore beatae temporibus consectetur molestias dolores facere provident nesciunt, ipsa possimus, modi dignissimos facilis fugiat porro.

       Cum delectus asperiores expedita consectetur nulla placeat, qui cumque necessitatibus earum nobis sed, neque accusamus vero quis nesciunt eum eos odio, esse accusantium facere unde! Inventore sint perferendis a eveniet?

       Quis error porro ea, maxime architecto, quaerat alias doloribus vel facilis saepe quia. Voluptatibus perspiciatis maxime dolores eveniet, possimus eius sit ipsam a quibusdam sequi nemo. Optio molestiae rerum repudiandae!

       Omnis temporibus pariatur neque deserunt, debitis deleniti vel fugit architecto amet libero nemo laborum vitae obcaecati eius odit mollitia expedita quis praesentium, qui error ipsam suscipit eos quam. Fuga, corporis?

       Quis similique voluptatum placeat accusantium, alias consectetur odio dignissimos at velit est temporibus reiciendis! Blanditiis eum nam laboriosam eius labore aut doloremque voluptatem unde consequatur atque inventore amet, neque aperiam.

   </div>

</body>

<script>

   function isChange(){

       let element = document.querySelector('div');

       if(element.className === 'light'){

           element.className = 'dark';

       }else{

           element.className = 'light';

       }

   }

</script>

</html>

四.节点

1.创建节点

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Document</title>

</head>

<body>

 

</body>

<script>

   let element = document.createElement('h3');

   element.innerHTML = "this is a node";

</script>

</html>

2.插入节点

<script>
    let element = document.createElement('h3');
    element.innerHTML = "this is a node";
    let div = document.querySelector('div');
    div.appendChild(element);
</script>

<body>
    <div>
        <p class="p1">标签1</p>
        <p class="p2">标签2</p>
        <p class="p3">标签3</p>
        <p class="p4">标签4</p>
    </div>
</body>
<script>
    let element = document.createElement('p');
    element.innerHTML = "新标签";
    let div = document.querySelector('div');
    div.insertBefore(element, document.querySelector('.p2'));
</script>

第二个参数如果改为null,则效果等同于appendChild

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Document</title>

</head>

<body>

   <div>

       <p class="p1">标签1</p>

       <p class="p2">标签2</p>

       <p class="p3">标签3</p>

       <p class="p4">标签4</p>

   </div>

</body>

<script>

   let element = document.createElement('p');

   element.innerHTML = "新标签";

   let div = document.querySelector('div');

   div.insertBefore(element, document.querySelector('.p2'));

   div.insertBefore(element, document.querySelector('.p3'));

</script>

</html>

需要注意的是,如果一个节点重复插入两次,则只对最后一次生效

3.删除节点

用removeChild即可,注意删除节点的本质是将该节点移出DOM树,而不是销毁它,后续如果需要还可以将它加回来

相关文章
|
13天前
|
JSON 算法 API
一文掌握 1688 商品详情 API 接口:从入门到实战
1688是国内领先的综合电商批发平台,提供海量商品资源。其商品详情API助力开发者与企业获取商品的详细信息(如属性、价格、库存等),广泛应用于电商数据分析、比价系统及采购场景。API支持GET/POST请求,需传入通用参数(app_key、timestamp等)与业务参数(如product_id)。返回JSON格式数据,包含商品标题、价格、图片链接等详情,提升业务效率与决策精准度。
|
14天前
|
搜索推荐 API 开发者
京东商品列表 API 接口全解析:从入门到精通
京东商品列表API是京东开放平台为开发者提供的核心数据接口,支持批量获取商品基础信息、价格、库存状态等多维度数据。它具备数据丰富性、灵活筛选与分页查询、稳定高效等特点,可满足市场分析、选品优化、比价工具及推荐系统开发等需求,为电商业务创新提供坚实支撑。通过标准化通道,助力第三方高效、合法地利用京东海量商品数据。
|
1月前
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
|
22天前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
56 2
|
1月前
|
人工智能 运维 安全
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
48 3
|
2月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
2月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
3月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
120 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
4月前
|
人工智能 前端开发 API
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
235 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
|
2月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。