HTML+CSS+JS对话式实战(1)-开篇:认识我们要做的社团活动发布平台

点此查看 所有教程、项目、源码导航

文章目录

  • [0. 作者的话](#0. 作者的话)
  • [1. 人物介绍](#1. 人物介绍)
  • [2. 为什么调用后端接口,数据可以持久保存?](#2. 为什么调用后端接口,数据可以持久保存?)
  • [3. 项目功能说明](#3. 项目功能说明)
    • [3.1 社团管理员(社团负责人)功能](#3.1 社团管理员(社团负责人)功能)
    • [3.2 普通学生功能](#3.2 普通学生功能)
  • [4. 页面规划](#4. 页面规划)
  • [5. 开发约定](#5. 开发约定)

0. 作者的话

刚刚写完4个系列的教程如下:

《副队长HTML教程(完结)》

《副队长CSS教程(完结)》

《副队长HTML+CSS实战(完结)》

《副队长JS教程(完结)》

尚未稍歇,继续开始第5个系列教程,也就是《HTML+CSS+JS对话式实战》。

本教程我准备创新一下,尝试对话式、引导式的开发模式,我个人感觉对新手学习更加友好,更有沉浸式的感觉。

当然,如果后续反馈比较好的话,会在实战系列教程里面,更多采用这个模式。

继续努力吧!

1. 人物介绍

本篇先和大家介绍咱们教程里的两位主角:毛哥、副队

毛哥:计算机专业大一学生。刚刚系统学完 HTML、CSS、原生 JavaScript,DOM、BOM、AJAX XHR 的语法基础都过了一遍,理论看懂了,但从来没有做过对接后端接口的完整项目。对前后端怎么配合、数据怎么长久保存充满好奇,动手热情很高,也是咱们这个教程里的学习者。

副队:计算机专业大三学长,全栈方向。他是计算机学院篮球队的副队长,大家平时习惯简称叫他副队。他前端基础懂一些,主攻后端,熟练使用 SpringBoot 开发接口。平时喜欢带着学弟做实战项目,善于把复杂的原理讲通俗。本次项目,所有后端接口都由副队负责写好、调试完毕,带着毛哥专注写前端,体验真实前后端联调的开发流程。

两人是同一个学院的,经常在实验室一起捣鼓代码,这一次打算一起开发一个社团活动发布平台。

毛哥:副队,我们前面 JS 基础、DOM、BOM、AJAX XHR 都学完了,今天咱们要干啥?

副队:今天咱们就正式上手实战,做一个完整的网页项目------社团活动发布平台。后端接口我已经用Java全部写好了,你不用写后端代码,只写前端 HTML、CSS、原生 JS,通过 AJAX 调用我给你的接口就行。在开始写代码之前,先聊一个你大概率会好奇的问题。

2. 为什么调用后端接口,数据可以持久保存?

毛哥:对了副队,我之前自己写 JS,在变量里存的数据,只要页面一刷新就没了。为什么调用后端接口提交数据,数据就能一直保留,刷新页面还在?

副队:这个问题问到点子上了,咱们把这个底层逻辑先讲明白。

咱们之前写代码的时候,所有定义的变量、页面上临时生成的数据,都是放在浏览器内存里。内存是临时空间,只要页面刷新、标签页关闭、浏览器关掉,内存就会清空,数据直接消失,没办法长期保存。

后端服务跑在服务器上,配套还有数据库。当我们前端通过 XHR 发送 POST 请求,把活动信息传给后端,整个流程是这样:

  1. 前端收集表单里填写的活动名称、时间、地点等信息,通过网络传给后端;
  2. 后端收到数据,做基础校验;
  3. 校验通过之后,后端把这条数据写入数据库;
  4. 数据库的数据保存在服务器的硬盘上。硬盘属于持久化存储,就算后端程序重启、服务器短暂关机,硬盘里的数据也不会丢失。

后面刷新页面,前端发起查询接口请求,就是向后端索要数据:后端去数据库读取保存好的记录,再返回给前端,我们再用 JS 把数据渲染到页面上。所以刷新之后,活动信息还在。

毛哥:我大概懂了!也就是说,浏览器内存只是临时放数据,一关页面就清空;真正要长期存,就得交给服务器的数据库,对吧?

副队:没错,理解很到位。那你再想想,咱们之前学过 localStorage,它也能存东西,它和数据库存储有啥区别?

毛哥:localStorage 是存在我这台电脑浏览器里的对吧?换别的电脑打开网页,就看不到了?

副队:对,区别就在这里。localStorage 是存在你当前这台电脑的浏览器里面,换一台电脑、换一个浏览器打开页面,就看不到之前存的数据了,只适合单人本地使用。

而存在服务器数据库里的数据,任何一台设备访问网页、调用同一个接口,都能拿到相同的数据,所有学生、社团负责人看到的活动列表是统一共享的,这正是社团平台需要的效果。

✅ 小结

  • 浏览器内存:临时存储,页面刷新数据丢失;
  • localStorage:存在本机浏览器,换设备失效,适合单人本地小数据;
  • 后端+数据库:数据存服务器硬盘,多用户共享、持久保存;
  • 接口:就是前端和后端提前约定好的通信通道,用来互相传递数据。

毛哥:这么一说我理清了!前端负责展示页面、收集用户输入,然后通过接口把数据发给后端;后端负责把数据存数据库,前端想看数据的时候,再发请求拿回来渲染。是这个流程吧?

副队:完全正确,这就是前后端配合最核心的逻辑。

3. 项目功能说明

毛哥:懂啦!那咱们这个项目具体要实现哪些功能?

副队:咱们这个平台有两类角色:社团管理员、普通学生。

开发顺序约定:先做管理员端,再做学生端。管理员负责录入维护数据,先把活动增删改查做好,有了活动数据之后,再开发学生浏览、报名的功能。

3.1 社团管理员(社团负责人)功能

  1. 发布新的社团活动,填写活动名称、分类、时间、地点、报名截止时间、招募上限、活动简介;
  2. 查看自己发布的所有活动列表;
  3. 在报名截止之前,可以编辑修改活动信息;报名截止后,不允许修改;
  4. 可以删除、下架活动;
  5. 点击活动,可以查看该活动所有报名学生的名单。

毛哥:我注意到有个限制,报名截止之后不能修改活动,这个是后端帮我们控制吗?

副队:是的,校验逻辑放在后端。前端只是做页面展示,就算前端偷偷改代码绕过限制,后端也会判断时间,拒绝修改请求,保证数据安全。

3.2 普通学生功能

  1. 浏览全部公开的社团活动,支持按活动分类筛选;
  2. 点开卡片,查看活动详细信息;
  3. 提交活动报名,同一个活动只能报名一次,后端会做重复报名拦截;
  4. 在报名截止时间之前,可以取消自己的报名;
  5. 查看【我的报名】,看到自己所有已经报名的活动。

毛哥:明白了,报名不能重复也是后端做校验,防止我反复提交多条报名记录。

4. 页面规划

一共三个核心页面,通过导航栏切换:

  1. 活动管理页:管理员使用,表格展示自己发布的活动,包含新增、编辑、删除、查看报名名单按钮;
  2. 活动广场页:学生使用,卡片形式展示全部活动,支持筛选;
  3. 我的报名页:学生使用,展示自己提交过的报名记录,支持取消报名。

毛哥:三个页面分开,导航切换,一个给管理员管理数据,另外两个给学生看活动和管理自己的报名,分工很清楚。

5. 开发约定

  1. 后端接口文档由我提供,包含接口地址、请求方式、请求参数、返回数据格式;
  2. 全程使用原生 XHR 实现 AJAX 请求,复用之前学过的知识;
  3. 先搭建静态页面,再逐步对接接口实现动态功能。

毛哥:太好了,那我们下一节要讲什么?

副队:下一节咱们先大家活动管理页面的静态骨架,先看到整体效果。

相关推荐
一支蜉蝣1 小时前
Day26 XD安全学习笔记--PHP 应用&模版引用&Smarty渲染&MVC 模型&数据联动&RCE 安全
笔记·网络安全·html·php
速易达网络1 小时前
Three.js 动画入门教学:从场景搭建到流畅动效
开发语言·javascript·ecmascript
贾伟康2 小时前
【共创稿事节】HarmonyOS 7.0 Want隐式跳转:从接入到生产验证
性能优化·实战·harmonyos·arkts·arkui
Hilaku2 小时前
CORS 到底在保护谁?90% 的前端理解错了跨域的本质
前端·javascript·程序员
用户298698530142 小时前
Python 将 Markdown 批量转为 HTML:单文件与目录遍历两种实现
python·html·markdown
阿琳a_2 小时前
b-map-viewer:面向 Vue 3 的地图可视化 SDK,从接入到展示再到交互分析
前端·javascript·vue.js·gis·数据可视化·地图
钱栈up3 小时前
热榜上手|HyperFrames:写HTML出MP4
前端·html
Captain1314_李祖团3 小时前
5. MLIR相关语法
java·前端·javascript
齐 飞3 小时前
VUE2常用语法总结
javascript·vue.js