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

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

概述

前述分别在 HTML 基础 和 CSS 基础 中介绍了 HTML、CSS 的基本内容。HTML 定义了网页中包含哪些对象,CSS 定义了对象的显示样式。JavaScript(LiveScript)是一种运行于客户端的解释性脚本语言,使 HTML 页面更具动态性和交互性。比如实现响应你的点击鼠标、通过输入框向服务器提交登录密码,加载新的网页内容等等交互性功能。

JavaScript语言与常见的 C 语言、Python 语言类似,是包含顺序语句、逻辑语句的编程语言,当运行指定的语句、函数时就会指定预定义的功能。

JavaScript 主要的作用:

1)能够改变 HTML 内容

2)能够改变 HTML 属性

3)能够改变 HTML 样式 (CSS)

4) 能够隐藏 HTML 元素

5)能够显示 HTML 元素

JS 的基本语法

JS 是一个定义非常完善的编程语言,与 C\Python 类似,其包含变量(对大小写是敏感的)、语句(语句之间用分号分隔)、函数、作用域、循环结构、选择结构等概念。

变量示例:

var length = 10;                                  // Number   通过数字字面量赋值 
var points = x * 6;                               // Number   通过表达式字面量赋值
var lastName = "Johnson";                         // String   通过字符串字面量赋值
var cars = ["Sab", "Vlvo", "B0W"];                // Array    通过数组字面量赋值
var person = {firstName:"John", lastName:"Doe"};  // 键值对对象 通过对象字面量赋值
class iot-wang {                                  // 定义一个类
  constructor(name, url) {
    this.name = name;
    this.url = url;
  }
}

函数示例:

// 定义函数,返回 a 乘以 b 的结果
function myFunction(a, b) {
   	return a * b;                           
}
// 调用一次该函数
myFunction();

// 匿名函数
myButton.onclick = function () {
  alert("hello");
};

条件语句:

if (condition1)
{
    当条件 1 为 true 时执行的代码
}
else if (condition2)
{
    当条件 2 为 true 时执行的代码
}
else
{
  当条件 1 和 条件 2 都不为 true 时执行的代码
}

循环语句:

while (i<5)
{
    x=x + "The number is " + i + "<br>";
    i++;
}

事件,当触发一定的事件,如点击鼠标事件时触发执行某函数:

document.querySelector("html").addEventListener("click", () => {
  alert("别戳我,我怕疼。");
});

更多 JS 的学习资料可以参考 JavaScript 教程 | 菜鸟教程 (runoob.com).

在 HTML 中添加 JS 定义

在 THNL 页面中使用 JavaScript 代码主要有两种方法。

  • 直接在script标签中嵌入JavaScript代码。

    <body>
        <script type="text/javaScript">
        	...
    		...
        </script>
    </body>
    

    一般在比较大的项目里面是不推荐使用这种方法的,一般都是使用引入外部文件。一来是代码混乱,不好维护代码。二来是代码不美观。

  • 引入外部的JavaScript文件。

    <body>
        <script type="text/javaScript" src="script1.js"></script>
    </body>
    

进一步地,也可以引入其他网页上的 js 文件:

  <body>
      <script type="text/javaScript" 
      		src="http://www.........javaScript.js">
      </script>
  </body

JavaScript文件可位于 HTML 的 或 部分中,或者同时存在于两个部分中。但是为了整洁,通常都放置在 部分中。并且,通常将 JS 部分放在 HTML 文件的底部附近,因为浏览器会按照代码在文件中的顺序加载 HTML。如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。

需求及功能解析

本节主要演示如何在 ESP32 上通过 JS 脚本建立一个实时显示时间的网页。编译并烧录固件到设备参考:

本系列博客并不是一门专门介绍 JS 编程的课程,我们只需边实践边学习,了解常用的技术就可以了。

示例解析

与前述的示例类似(建议了解全系列博客-按顺序学习相关内容),本小节主要是 components/fs_image/index.html 中增加 JS 脚本:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>IOT LAO WANG</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
  </head>
  <body>
    <h1>Date and Time</h1>
    <p id="dateTime"></p>
    // JS 脚本
    <script>
      // var todays_date = new Date();
      // document.getElementById("dateTime").innerHTML = todays_date;
      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);
    </script>
  </body>
</html>

示例效果:

在这里插入图片描述

其他 JS 示例

仓库中还提供了其他 JS 示例:

  • js data time extern:
  • js console

讨论

总结

1)本节主要是介绍 JavaScript 编程的基础知识,介绍了 JS 编程中的变量、函数、常见语句、事件的基础概念;

2)在 HTML 中添加 JS 定义可以直接在script标签中嵌入JavaScript代码,也可以引入外部的JavaScript文件。

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

资源链接

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/196281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySql】悲观锁和乐观锁的介绍

一、并发控制 当程序中可能出现并发的情况时&#xff0c;就需要保证在并发情况下数据的准确性&#xff0c;以此确保当前用户和其他用户一起操作时&#xff0c;所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用…

数据安全:专业服务与您共同对抗.faust数字勒索的威胁

引言&#xff1a; 在数字世界的幕后&#xff0c;一股黑暗势力悄然崛起。.faust勒索病毒&#xff0c;如同数码时代的黑手党&#xff0c;通过其高度精密的加密技术&#xff0c;正在肆虐用户和组织的数据。本文将深入挖掘.faust的狡猾手法&#xff0c;为您揭示其隐藏在数字背后的…

居家适老化设计第三十三条---卫生间之暖风

居家适老化是指为了满足老年人居住需求而进行的住房改造&#xff0c;以提供更加安全、舒适、便利的居住环境。在居家适老化中&#xff0c;暖风系统是一个重要的考虑因素。暖风系统可以提供温暖舒适的室内温度&#xff0c;对老年人来说尤为重要。老年人常常身体机能下降&#xf…

浅谈基于EIoT能源物联网的工厂智能照明系统应用改造

【摘要】&#xff1a;随着物联网技术的发展&#xff0c;许多场所针对照明合理应用物联网照明系统&#xff0c;照明作为工厂的重要能耗之一&#xff0c;工厂的照明智能化控制&#xff0c;如何优化控制、提高能源的利用率&#xff0c;达到节约能源的目的。将互联网的技术应用到工…

PPSSPP (PSP游戏模拟器)最新版安装使用教程

PPSSPP优势 1、目前唯一的也是最好的psp模拟器 可运行绝大多数psp游戏且运行高速&#xff0c;即使是低配手机也能游玩经典大作。 2、支持自定义调节虚拟手柄和实体手柄连接 ppsspp模拟器支持使用虚拟手柄或者连接实体手柄游玩&#xff0c;同时还可以自定义调节按键选项。 …

mac电脑下载Netflix Mac(奈飞客户端)安装教程

Netflix Mac&#xff0c;奈飞官方客户端&#xff0c;带给您无限的电影和剧集体验&#xff01;与朋友分享最新热门剧集、电影&#xff0c;与家人一起享受高品质的流媒体内容。 通过Netflix Mac&#xff0c;您可以轻松地搜索、浏览和观看各种类型的影片&#xff0c;包括剧情片、…

Leetcode刷题之设计循环队列(C语言版)

Leetcode刷题之设计循环队列&#xff08;C语言版&#xff09; 一、题目描述二、题目示例三、题目解析Ⅰ、typedef structⅡ、MyCircularQueue* myCircularQueueCreate(int k)Ⅲ、bool myCircularQueueIsEmpty(MyCircularQueue* obj)Ⅳ、bool myCircularQueueIsFull(MyCircularQ…

老师怎样处理校园欺凌

校园欺凌是一个让人痛心又不可忽视的问题。作为老师&#xff0c;该如何处理这种问题&#xff0c;既能够保护受欺凌的学生&#xff0c;又能够让施暴者得到应有的教训呢&#xff1f; 及时发现并介入 经常关注学生的动态&#xff0c;一旦发现有校园欺凌的苗头&#xff0c;就要及时…

如何轻松将 4K 转换为 1080p 高清视频

由于某些原因&#xff0c;你可能有一些 4K 视频&#xff0c;与1080p、1080i、720p、720i等高清视频相比&#xff0c;4K 视频具有更高的分辨率&#xff0c;可以给您带来更多的视觉和听觉享受。但是&#xff0c;播放4k 视频是不太容易的&#xff0c;因为超高清电视没有高清电视那…

医疗器械企业升级路:直连客户盘活存量,布局出海寻求增量

随着随着医疗各领域VBP&#xff08;带量采购&#xff09;的稳步推进以及医疗机构DRG/DIP&#xff08;按疾病诊断相关分组/病种分值支付&#xff09;的深化应用&#xff0c;降本增效和精细化管理已经成为医院管理者的头等大事。 这也在倒逼医疗器械厂商提升管理水平和营销效率。…

FFA 2023|字节跳动 7 项议题入选

Flink Forward 是由 Apache 官方授权的 Apache Flink 社区官方技术大会&#xff0c;作为最受 Apache Flink 社区开发者期盼的年度峰会之一&#xff0c;FFA 2023 将持续集结行业最佳实践以及 Flink 最新技术动态&#xff0c;是中国 Flink 开发者和使用者不可错过的的技术盛宴。 …

竞赛选题 题目:基于机器视觉的图像矫正 (以车牌识别为例) - 图像畸变校正

文章目录 0 简介1 思路简介1.1 车牌定位1.2 畸变校正 2 代码实现2.1 车牌定位2.1.1 通过颜色特征选定可疑区域2.1.2 寻找车牌外围轮廓2.1.3 车牌区域定位 2.2 畸变校正2.2.1 畸变后车牌顶点定位2.2.2 校正 7 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享…

视频文案怎么写,媒介盒子支招

近几年短视频成为风口&#xff0c;各行各业都想分一杯羹&#xff0c;但是一头热的你&#xff0c;是否知道短视频的相关文案怎么写呢?正所谓兵马未动&#xff0c;文案先行&#xff0c;一个合适的文案是上热门的秘密武器&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;视频…

概要设计检查单、需求规格说明检查单

1、概要设计检查表 2、需求规格说明书检查表 概要&#xff08;结构&#xff09;设计检查表 工程名称 业主单位 承建单位 检查依据 1、设计方案、投标文件&#xff1b;2、合同&#xff1b;3、信息系统相关技术标准及安全规范&#xff1b; 检查类目 检查内容 检查…

汽车电子 -- 车载ADAS之RCW(后碰撞预警系统)

相关法规文件: RCW&#xff1a; GB 4785-2019 汽车及挂车外部照明和光信号装置的安装规定 一、后方碰撞预警系统 RCW&#xff08; Rear Collision Warning &#xff09; 参看&#xff1a;功能定义-后方碰撞预警 RCW 功能可以对自车行驶过程中对后方车辆进行监测&#xff0…

Tableau连接到mysql数据库,配置驱动

Tableau想要连接mysql数据库进行数据的可视化&#xff0c;但是没有ODBC驱动&#xff0c;看了几篇文章写的&#xff0c;不是很清楚&#xff0c;顺便写下自己的思路。 1、下载mysql对应的ODBC驱动 首先要知道自己mysql的版本&#xff0c;然后下载对应的ODBC驱动。 MySQL :: Dow…

colab notebook导出为PDF

目录 方法一&#xff1a;使用浏览器打印功能 方法二&#xff1a;使用nbconvert转换 方法三&#xff1a;在线转换 方法一&#xff1a;使用浏览器打印功能 一般快捷键是CTRLP 然后改变目标打印机为另存为PDF 这样就可以将notebook保存为PDF了 方法二&#xff1a;使用nbconver…

供应链攻击的类型和预防

供应链攻击是一种面向软件开发人员和供应商的新兴威胁&#xff0c;目标是通过感染合法应用分发恶意软件来访问源代码、构建过程或更新机制。 供应链攻击是威胁行为者通过利用软件供应链中的漏洞进入组织网络的一种网络攻击&#xff0c;供应链攻击的目标可以是软件开发过程中的…

虚幻学习笔记5—UI预设体制作

一、前言 本文使用的虚幻引擎5.3.2&#xff0c;在unity中有预设体的概念&#xff0c;可以将一个组合型的物体或UI制作成预设体&#xff0c;方便后续可以快速制作更多元的内容和复用。虚幻本身没有这个概念&#xff0c;但是要实现类似的效果其&#xff0c;故此我引用了这个概念。…

【密码学引论】Hash密码

第六章 Hash密码 md4、md5、sha系列、SM3 定义&#xff1a;将任意长度的消息映射成固定长度消息的函数功能&#xff1a;确保数据的真实性和完整性&#xff0c;主要用于认证和数字签名Hash函数的安全性&#xff1a;单向性、抗若碰撞性、抗强碰撞性生日攻击&#xff1a;对于生日…
最新文章