当前位置: 首页 > article >正文

ESP32-Web-Server编程-JS 基础 2

ESP32-Web-Server编程-JS 基础 2

概述

上节介绍了 JS 编程的基础。如前所述,在 HTML 中,可以通过下述 两种方式使用 JS 程序:

  • 直接在 HTML 文件中通过 script 标签中嵌入 JavaScript 代码
  • 通过 src 元素引入外部的 JavaScript 文件

在上一个小节的示例中,我们介绍了第一种方式。本小节主要介绍第二节方式。

示例解析

相比上节的示例,本小节主要添加了三处更改:

1)在 index.html 中通过 script指定需要的 JavaScript 文件

<body>
    <h1>Date and Time</h1>
    <p id="dateTime"></p>
    <script src="script.js"></script>
  </body>

2)在 components/fs_image/js 目录新建 script.js 文件:

function time() {
    var vWeek, vWeek_s, vDay;
    vWeek = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
    var date =  new Date();
    year = date.getFullYear();
    month = date.getMonth() + 1;
    day = date.getDate();
    hours = date.getHours();
    minutes = date.getMinutes();
    seconds = date.getSeconds();
    vWeek_s = date.getDay();
    document.getElementById("dateTime").innerHTML = year + "年" + month + "月" + day + "日" + "\t" + hours + ":" + minutes + ":" + seconds + "\t" + vWeek[vWeek_s];
};
setInterval("time()", 1000);

3)更改后端代码,增加请求 JS 文件的 hander:

/* Handler to respond with js.
 * Browsers expect to GET website icon at URI /stylesheet.css.*/
static esp_err_t js_get_handler(httpd_req_t *req)
{
    extern const unsigned char js_start[] asm("_binary_script_js_start");
    extern const unsigned char js_end[]   asm("_binary_script_js_end");
    const size_t js_size = (js_end - js_start);
    httpd_resp_set_type(req, "text/javascript");
    httpd_resp_send(req, (const char *)js_start, js_size);
    return ESP_OK;
}

与前面提到的类似,在加载 HTML 文件时,若发现 HTML 通过 src 指定了要加载的文件,浏览器会自动发起 Get 请求来向服务器请求对应的资源。

总结

1)本节主要是介绍引入外部 JavaScript 文件的方法。与前述在 HTML 中引入外部 CSS 文件类似,引入外部 JS 文件也需要同时更改前端、后端代码。

2)示例在 ESP32 Web 中添加了 JS 代码,用于实时显示当前时间。

资源链接

1)ESP32-Web-Server ESP-IDF系列博客介绍
2)对应示例的 code 链接 (点击直达代码仓库)

3)下一篇:ESP32-Web-Server编程- JS 基础 3

(码字不易感谢点赞或收藏)


http://www.kler.cn/a/147567.html

相关文章:

  • 面试时问到软件开发原则,我emo了
  • 基于OpenCV的图片人脸检测研究
  • git上传文件到远程仓库
  • DB-GPT系列(四):DB-GPT六大基础应用场景part1
  • HarmonyOS Next 组件或页面之间的所有通信(传参)方法总结
  • 《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性
  • SLURM资源调度管理系统REST API服务配置,基于slurm22.05.9,centos9stream默认版本
  • WPF实战项目十五(客户端):RestSharp的使用
  • WordPress老是提示无法连接到FTP服务器
  • 【产品设计】如何设计SaaS商业模式
  • leetcode目标和
  • 4.3-Linux网络命名空间
  • FFmepg 核心开发库及重要数据结构与API
  • 基于可微分渲染器的相机位置优化【PyTorch3D】
  • CPU、GPU、TPU内存子系统架构
  • Python入门学习篇(三)——比较运算符赋值运算符逻辑运算符成员运算符
  • 【JavaEE初阶】Thread 类及常见方法、线程的状态
  • 集成学习的两种常见策略:bagging VS. boosting
  • KVM虚拟机的NAT网络模式原理及过程展示
  • 谈谈中间件设计的思路
  • vue 浏览器版本兼容问题解决方案
  • 解决SQLyog连接MySQL8时报错:错误号码2058
  • Vatee万腾的科技远行:vatee数字化力量的前瞻发现
  • LeetCode Hot100 114.二叉树展开为链表
  • 企业网络中的身份安全
  • Redis与Mysql的数据强一致性方案