ES6 基础与前后端交互完全指南(超详细入门版)
作者 :燐妤
来源 :CSDN
原文链接 :点击查看
目录
[ES6 基础与前后端交互完全指南(超详细入门版)](#ES6 基础与前后端交互完全指南(超详细入门版))
[3.1 箭头函数](#3.1 箭头函数)
[3.2 模板字符串](#3.2 模板字符串)
[3.3 解构赋值](#3.3 解构赋值)
[3.4 展开运算符](#3.4 展开运算符)
[3.5 练习示例](#3.5 练习示例)
[四、Promise 基础与异步操作](#四、Promise 基础与异步操作)
[Promise 常用方法](#Promise 常用方法)
[五、async/await 语法](#五、async/await 语法)
[六、ES6 模块化](#六、ES6 模块化)
[七、fetch/axios 请求基础](#七、fetch/axios 请求基础)
[八、综合项目实战------AI 对话应用](#八、综合项目实战——AI 对话应用)
前言
ES6(ECMAScript 2015)是 JavaScript 的一次重要更新,带来了大量新特性,使 JS 更适合工程化开发。与此同时,掌握前后端交互也是现代前端开发的必备技能。
本章将从 ES6 核心语法开始,讲解 Promise、async/await、模块化、fetch/axios,并最终实现一个 AI 对话应用 的完整前后端示例。
一、学习目标与重点
学习目标
- 掌握箭头函数、模板字符串、解构赋值等 ES6 核心语法
- 理解 Promise,能够处理异步操作
- 掌握 async/await 语法
- 理解 ES6 模块化(import/export)
- 掌握 fetch/axios 进行 HTTP 请求
- 能够实现前后端数据联动的完整流程
重难点
- 重点:Promise 链式调用、async/await 错误处理、fetch API 使用
- 难点:Promise 执行时机、async 函数返回值、跨域 CORS 概念
二、情景导入
场景示例:开发一个 AI 平台前端页面,需要与 FastAPI 后端交互,实现数据获取、消息发送、结果渲染。同时需要处理异步请求状态(加载中、成功、失败),并使用 ES6+ 语法提高代码可读性和维护性。
三、箭头函数、模板字符串、解构赋值
3.1 箭头函数
javascript
// 传统函数
function add(a, b) {
return a + b;
}
// 箭头函数
const add = (a, b) => a + b;
// 单个参数可省略括号
const square = x => x * x;
// 多行需加大括号和 return
const greet = name => {
const msg = `Hello, ${name}!`;
return msg;
};
// 返回对象需加括号
const createUser = name => ({ name, age: 25 });
注意 :箭头函数没有自己的 this,在对象方法中要注意使用场景。
演示案例:

效果演示:

3.2 模板字符串
javascript
const name = "Alice";
const age = 25;
const msg = `Hello, ${name}! You are ${age} years old.`;
const html = `
<div class="user">
<h2>${name}</h2>
<p>Age: ${age}</p>
</div>
`;
支持表达式和多行拼接。
演示案例:

效果演示:

3.3 解构赋值
javascript
// 数组解构
const [a, b, c] = [1, 2, 3];
// 对象解构
const user = { name: "Alice", age: 25 };
const { name, age } = user;
// 函数参数解构
function greet({ name, age }) {
return `Hello ${name}, you are ${age}`;
}
案例演示:

效果演示:

3.4 展开运算符
javascript
// 数组展开
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4];
// 对象展开
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
3.5 练习示例
javascript
function showUser({ name, age, email = "未设置" }) {
return `
======== 用户信息 ========
姓名: ${name}
年龄: ${age}
邮箱: ${email}
========================
`.trim();
}
console.log(showUser({ name: "Alice", age: 25 }));
四、Promise 基础与异步操作
核心概念
Promise 状态:
- Pending(进行中)
- Fulfilled(已成功)
- Rejected(已失败)
javascript
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
if (success) resolve("操作成功");
else reject("操作失败");
}, 1000);
});
promise
.then(result => console.log("成功:", result))
.catch(error => console.error("失败:", error))
.finally(() => console.log("完成"));
案例演示:

效果演示:

Promise 常用方法
javascript
// 并行执行
Promise.all([fetch("/api/a"), fetch("/api/b")]);
// 竞速执行
Promise.race([fetch("/api/a"), fetch("/api/b")]);
练习示例
javascript
function mockAPI() {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() < 0.8) resolve({ code: 200, data: ["item1","item2"] });
else reject({ code: 500, message: "服务器错误" });
}, 1000);
});
}
mockAPI()
.then(res => console.log("成功:", res))
.catch(err => console.error("失败:", err));
五、async/await 语法
javascript
async function getUser() {
try {
const response = await fetch("/api/user");
const user = await response.json();
return user;
} catch (error) {
console.error("获取失败:", error);
throw error;
}
}
// 并行请求
async function loadData() {
const [users, orders] = await Promise.all([fetch("/api/users"), fetch("/api/orders")]);
}
注意:async 函数默认返回 Promise。
六、ES6 模块化
导出
javascript
// math.js
export const PI = 3.14159;
export function add(a, b) { return a + b; }
export default class Calculator { add(a,b){return a+b;} }
导入
javascript
import { PI, add } from "./math.js";
import Calculator from "./math.js";
const calc = new Calculator();
动态导入
javascript
async function loadModule() {
const module = await import("./math.js");
console.log(module.add(3,4));
}
七、fetch/axios 请求基础
fetch
javascript
const response = await fetch("/api/users");
if (!response.ok) throw new Error("请求失败");
const data = await response.json();
axios
javascript
import axios from "axios";
const api = axios.create({ baseURL: "http://localhost:8000" });
const { data } = await api.get("/users");
对比:
- fetch:浏览器内置,需手动解析 JSON,错误需手动处理
- axios:功能更完善,支持拦截器、超时、进度监控
八、综合项目实战------AI 对话应用
项目功能
- 封装 API 模块
- 消息发送和接收
- 加载状态显示
- 错误处理
- 历史消息渲染
流程图
核心代码示例
api.js
javascript
const BASE_URL = "http://localhost:8000";
export async function sendMessage(message){
const res = await fetch(`${BASE_URL}/chat`,{
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify({ message })
});
if (!res.ok) throw new Error(`请求失败: ${res.status}`);
return res.json();
}
app.js
javascript
import { sendMessage } from "./api.js";
const chatBox = document.getElementById("chat-box");
const input = document.getElementById("message-input");
const sendBtn = document.getElementById("send-btn");
function appendMessage(role, content){
const div = document.createElement("div");
div.className = `message ${role}`;
div.innerHTML = `<strong>${role==="user"?"你":"AI"}:</strong> ${content}`;
chatBox.appendChild(div);
chatBox.scrollTop = chatBox.scrollHeight;
}
async function handleSend(){
const message = input.value.trim();
if(!message) return;
appendMessage("user", message);
input.value = "";
sendBtn.disabled = true;
try{
const data = await sendMessage(message);
appendMessage("ai", data.reply || "未获取到回复");
} catch(e){
appendMessage("ai", `请求失败: ${e.message}`);
} finally{
sendBtn.disabled = false;
}
}
sendBtn.addEventListener("click", handleSend);
input.addEventListener("keypress", e=>{
if(e.key==="Enter") handleSend();
});
index.html 页面结构可参考前面示例。
九、总结
- 箭头函数、模板字符串、解构赋值
- Promise 异步处理
- async/await 编写异步代码
- ES6 模块化
- fetch/axios 请求及错误处理
- 前后端数据交互实现
本文结合了 ES6 核心语法与前后端交互的实战经验,如果对你的学习有帮助的话,可以点点免费的赞赞支持一下,谢谢各位!
每日励志文案:
先完成,再完美