Linux应用实战之网络服务器(四)JavaScript介绍

0、前言

准备做一个Linux网络服务器应用实战,通过网页和运行在Linux下的服务器程序通信,这是第四篇,介绍一下JS,让HTML网页实现与服务器通信。

1、JS常用语法

  • JavaScript是一种脚本语言,主要用于前端开发,可以在网页上实现动态效果、交互功能等。
  • JavaScript可以与HTML和CSS结合使用,用于操作网页的内容和样式。
  • JavaScript也可以在服务器端使用(Node.js),用于构建后端应用程序。

1.1 变量

1.1.1 变量声明
关键字作用域重复声明变量修改初始化要求
var函数作用域或全局作用域允许允许可选
let块级作用域不允许允许必须
const块级作用域不允许不允许必须
1.1.2 变量类型
数据类型含义
Number用于表示数值,包括整数和浮点数。例如:42, 3.14159
String用于表示文本或字符序列。例如:"Hello, World!"
Boolean表示逻辑值,只有两个可能的值:true 或 false。
Object用于存储多个值作为属性,是JavaScript中复杂数据结构的基础。例如:日期、数组、函数等都是对象。
Null表示一个空值或“无”的概念。通常用于表示对象不存在或变量没有指向任何对象。
Undefined表示变量已声明但未赋值时的状态。
SymbolES6新增的数据类型,表示唯一的、不可变的原始值,通常用作对象的属性键。
BigIntES10新增的数据类型,用于表示任意大小的整数,解决了JavaScript中Number类型无法精确表示大整数的问题。

1.2 函数

1.2.1 普通函数

使用function关键字来定义函数:

function functionName(parameters) {  // 执行的代码  return result; // 可选,返回函数执行结果  
}
1.2.2 箭头函数

箭头函数(Arrow Functions)是ES6(ECMAScript 2015)中引入的一种新的函数表达方式,它提供了一种更简洁、更直观的方式来编写函数。箭头函数在语法上比普通函数更简洁,并且不绑定自己的this,它捕获其所在上下文的this值,这使得在回调函数和事件处理器中处理this变得更为简单。

基本语法:

(parameters) => { functionBody }

当函数体只有一条语句时,可以省略大括号,并且当只有一个参数时,甚至可以省略圆括号:

parameter => expression

示例:

const greet = name => {  return `Hello, ${name}!`;  
};  console.log(greet('Alice')); // 输出: Hello, Alice!

1.3 异步处理

Promise是JavaScript中进行异步编程的新的解决方案,它代表了一个异步操作的最终完成(或失败)及其结果值。它是ES6(ECMAScript 2015)引入的一种语言特性,用于解决回调地狱(callback hell)问题,使异步代码更具可读性和可维护性。

示例:

// 创建一个Promise对象  
const promise = new Promise((resolve, reject) => {  // 假设这里是一个异步操作,比如网络请求  setTimeout(() => {  // 异步操作成功,调用resolve方法,并传递结果  resolve('异步操作成功!');  // 如果异步操作失败,可以调用reject方法,并传递错误信息  // reject(new Error('异步操作失败!'));  }, 1000);  
});  // 使用.then()方法处理异步操作成功的结果  
promise.then(result => {  console.log(result); // 输出:异步操作成功!  
}).catch(error => {  console.log(error); // 如果异步操作失败,这里会捕获到错误并输出  
});

示例中建了一个Promise对象,并在执行器函数中模拟了一个异步操作(使用setTimeout来模拟)。如果异步操作成功,调用resolve方法并传递结果;如果异步操作失败,调用reject方法并传递错误信息。然后使用.then()方法处理异步操作成功的结果,使用.catch()方法处理异步操作失败的情况。在实际开发中,Promise经常与fetch API、axios等用于网络请求的库一起使用,以处理异步的网络请求和数据获取。

2、为登录界面添加逻辑

使用js为之前设计的HTML界面添加逻辑。当输入用户名和密码点击登录按键后,将输入的内容发送至服务器,修改代码如下,其中const url = "http://192.168.1.101:8080/login";要改为服务器的IP地址和监听端口号:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Login</title><style>body {font-family: Arial, sans-serif;background-color: #f0f0f0;text-align: center;padding: 20px;}h2 {color: #333;}form {max-width: 300px;margin: 0 auto;background-color: #fff;padding: 20px;border-radius: 5px;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);}label {display: block;text-align: left;margin-bottom: 5px;}input {width: calc(100% - 10px);padding: 8px;margin-bottom: 10px;border: 1px solid #ccc;border-radius: 3px;display: inline-block;}button {padding: 8px 20px;background-color: #007bff;color: white;border: none;border-radius: 3px;cursor: pointer;}button:hover {background-color: #0056b3;}</style>
</head>
<body><h2>Login</h2><form><label for="username">Username:</label><input type="text" id="username" name="username"><label for="password">Password:</label><input type="password" id="password" name="password"><br><br><button type="submit" onclick="submitForm()">Login</button></form>
</body><script>function submitForm() {const username = document.getElementById("username").value;const password = document.getElementById("password").value;const url = "http://192.168.1.101:8080/login"; // 服务器地址console.log(url);fetch(url, {method: "POST",headers: {"Content-Type": "application/json"},body: JSON.stringify({ username: username, password: password })}).then(response => {return response.json();}).then(data => {if (data.status === 'ok') {console.log("Login ok!");alert("Login ok!"); } else {console.log("Login failed!");alert("Login failed!");}}).catch(error => {console.log("Login error!");alert("Login error!");});}</script>
</html>

测试结果如下,暂时没有服务器,所以返回错误:

3、总结

本文简单介绍了js的常用语法,为之前的登录界面添加了访问服务器的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识图谱与大数据:区别、联系与应用

目录 前言1 知识图谱1.1 定义1.2 特点1.3 应用 2 大数据2.1 定义2.2 应用 3. 区别与联系3.1 区别3.2 联系 结语 前言 在当今信息爆炸的时代&#xff0c;数据成为了我们生活和工作中不可或缺的资源。知识图谱和大数据是两个关键概念&#xff0c;它们在人工智能、数据科学和信息…

Vulnhub:MY FILE SERVER: 1

目录 信息收集 1、arp 2、nmap 3、whatweb WEB web信息收集 dirmap FTP匿名登录 enum4linux smbclient showmount FTP登录 ssh-kegen ssh登录 提权 系统信息收集 脏牛提权 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l I…

Python中模块

基本概念 **模块 module&#xff1a;**一般情况下&#xff0c;是一个以.py为后缀的文件 ①Python内置的模块&#xff08;标准库&#xff09;&#xff1b; ②第三方模块&#xff1b; ③自定义模块。 包 package&#xff1a; 当一个文件夹下有 init .py时&#xff0c;意为该文…

Soot入门学习笔记

Soot 适合参考的文档和教程如下&#xff1a; 北京大学软件分析技术 南京大学软件分析 Tutorials for soot McGill University 198:515 (vt.edu) 比较好的笔记资料&#xff1a; 南京大学《软件分析》课程笔记 比较好的入门作业或者案例&#xff1a; CSCE710 Assignmen…

备忘录删除了怎么恢复?解锁4个简单方法

误删除苹果备忘录是一个常见的问题&#xff0c;而且很容易导致我们遗失重要信息的情况。但是&#xff0c;如果您不幸误删了备忘录&#xff0c;也不必过分担心&#xff0c;因为有几种简单的方法可以帮助您恢复这些备忘录。备忘录删除了怎么恢复&#xff1f;在本文中&#xff0c;…

编译与链接(想了解编译与链接,那么看这一篇就足够了!)

前言&#xff1a;在我们练习编程的时候&#xff0c;我们只需要将代码写入、运行&#xff0c;就可以得到计算之后的结果了&#xff0c;但是你有没有想过&#xff0c;为什么就可以得到计算之后的结果呢&#xff0c;它的底层又到底是什么呢&#xff1f; ✨✨✨这里是秋刀鱼不做梦的…

全面了解电子邮件的优点和不足之处

没有任何一种通信方式能像电子邮件一样长期如此受欢迎。当你想到忙碌的职业人士在企业或办公室环境中工作时&#xff0c;你可能会想象他们正专心致志地给某人写邮件&#xff0c;按照指示传递信息。电子邮件的优点和缺点是什么&#xff1f;优点包括易于访问、透明度高&#xff0…

DC-DC芯片D1509, 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。

一、应用领域 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。 二、功能介绍 D1509是芯谷科技推出的一款输入耐压40V、输出电压1.23-37V可调、输出电流最大2.0A的高效率、高精度DC-DC芯片&#xff0c;其输出电压有固定3.3V、5.0V和12.0V的版本&#xff0c;…

Android Studio控制台输出中文乱码问题

控制台乱码现象 安卓在调试阶段&#xff0c;需要查看app运行时的输出信息、出错提示信息。 乱码&#xff0c;会极大的阻碍开发者前进的信心&#xff0c;不能及时的根据提示信息定位问题&#xff0c;因此我们需要查看没有乱码的打印信息。 解决步骤&#xff1a; step1: 找到st…

【MySQL】数据库--表操作

目录 一、创建表 二、查看表 三、修改表 1. 添加字段--add 2.修改表名--rename to 3.修改列名--change 4.修改字段的数据类型--modify 5.删除字段&#xff08;列&#xff09;--drop 四、删除表 一、创建表 create [temporary]table[if not exists]table_name [([colu…

(免费分享)基于springboot,vue超市管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredis 本项目分为系统管理员、…

腾讯云邮件推送功能有哪些?如何有效使用?

腾讯云邮件推送如何设置&#xff1f;怎么用邮件推送做高效营销&#xff1f; 腾讯云作为业界领先的云服务提供商&#xff0c;其邮件推送功能在便捷性、稳定性和安全性上都有着出色的表现。那么&#xff0c;腾讯云邮件推送功能究竟有哪些呢&#xff1f;让AokSend来探个究竟。 腾…