1、调研背景与目的

1.1 背景

做完Hexo博客后的第二个项目

1.2 目的

了解前后端概念,学习前端代码

2、前置学习知识点

  • 了解前端和后端是什么,前后端分离是什么

  • 了解前端的主流编码语言(阐述出各个语言的特点,做表格展示)

  • 学习基础html、css、JavaScript的用法

  • 学习npm的使用


3、计划

3.1 计划1

在2025-7-27之前回答出前置学习知识点的相关内容

可以通过对应的demo来展示


前端(Frontend)是什么?:

指的是用户直接可见、可交互的部分,相当于 Web 应用的 “脸面”,负责与用户进行直接沟通。

核心职责
  • 将数据以直观的形式展示给用户(如文字、图片、表格、图表等)。
  • 接收用户的操作(如点击按钮、输入文字、滑动屏幕等)并给出反馈(如页面跳转、弹窗提示)。
技术栈
  • 基础技术:HTML(结构)、CSS(样式)、JavaScript(交互逻辑)。
  • 框架 / 库:React、Vue、Angular(用于构建复杂交互的单页应用)、jQuery(简化 DOM 操作,逐渐被框架替代)。
  • 工具:Webpack(打包工具)、Sass/Less(CSS 预处理器)等。
示例
  • 你在淘宝上看到的商品列表、搜索框、购物车界面,都是前端开发的成果。
  • 当你点击 “加入购物车” 按钮,按钮变色、购物车数量 + 1 的动画,也是前端代码实现的。

后端(Backend)是什么?:

指的是用户看不到的 “幕后” 部分,相当于 Web 应用的 “大脑” 和 “仓库”,负责处理业务逻辑和数据存储。

核心职责
  • 接收前端发送的请求(如用户登录、查询商品)。
  • 处理请求(如验证账号密码、从数据库中查询商品数据)。
  • 存储和管理数据(如用户信息、订单记录、商品库存等)。
  • 返回处理结果给前端(如登录成功的消息、商品列表数据)。
技术栈
  • 编程语言:Java、Python、Node.js、PHP、Ruby 等。
  • 框架:Spring(Java)、Django(Python)、Express(Node.js)等。
  • 数据库:MySQL、PostgreSQL(关系型);MongoDB(非关系型)等。
示例
  • 当你在淘宝输入账号密码点击 “登录” 时,后端会验证账号密码是否正确,并返回 “登录成功” 或 “密码错误” 的结果。
  • 你下单后,后端会更新商品库存、生成订单记录并存储到数据库中。

前后端分离?:

https://www.bilibili.com/video/BV1RM4y1K75S/?spm_id_from=333.337.search-card.all.click&vd_source=2fe9bfebbd823f8ccdcbf8dcb5336b34(相关视频)

  • 基本运用于带有业务操作功能的网站类型,非纯展示类功能网站(或统计点击数等等)。

  • 由于服务的网站带有业务逻辑的功能,所以服务端采用动态HTML服务,需要后端来动态生成HTML代码。


表格展示:

前端语言 特点 应用场景 优点 缺点
html 1、用于构建网页的结构,是网页的 “骨架”;2、由标签组成,语义化标签提升可读性;3、本身不具备逻辑处理能力,需配合 css 和 js 使用 所有网页的基础结构搭建 1、学习门槛极低,语法简单直观;2、所有浏览器都原生支持;3、语义化标签提升 SEO 和可访问性 1、仅能构建静态结构,无逻辑处理能力;2、复杂页面需大量标签,维护成本高
css 1、控制网页的视觉表现(颜色、布局、字体等);2、支持层叠、继承、优先级规则;3、可通过选择器精准定位元素;4、CSS3 新增动画、过渡、弹性布局等功能 网页美化、响应式布局、动画效果实现 1、能精确控制网页视觉表现;2、支持响应式设计,适配多设备;3、与 HTML 分离,便于维护 1、代码冗余度高,复用性差(原生);2、复杂布局实现繁琐(如垂直居中);3、浏览器兼容性问题突出
JavaScript 1、网页的 “行为” 核心,负责交互逻辑和动态效果;2、弱类型语言,支持面向对象和函数式编程;3、可操作 DOM,实现页面动态更新;4、可通过 Node.js 用于后端开发 表单验证、动态数据渲染、事件处理、API 交互等 1、前端唯一原生编程语言,功能强大;2、生态丰富,社区活跃;3、可跨端开发(前后端、移动端) 1、弱类型导致代码维护难度高(大型项目);2、异步编程逻辑复杂,易出错;3、不同浏览器存在兼容性差异

HTML、JavaScript、CSS的基本用法

可参考网站 https://www.w3school.com.cn/ 里面有三种语言的详细用法
三种语法基础的学习是通过 https://www.bilibili.com/video/BV1BT4y1W7Aw?spm_id_from=333.788.videopod.episodes&vd_source=2fe9bfebbd823f8ccdcbf8dcb5336b34&p=9 来理解

HTML 全称是”Hypertext Markup Language”(超文本标记语言)
CSS 全称是”Cascading Style Sheets”(层叠样式表)
JavaScript(简称”JS”)


HTML的基本框架

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>

</body>
</html>


CSS语法

CSS通常由选择器属性属性值组成。多个规则可以组合在一起,以便同时应用多个样式

1
2
3
4
选择器{
属性1: 属性值1;
属性2: 属性值2;
}

1.选择器的声明中可以写无数条属性
2.声明的每一行属性,都需要以英文分号结尾
3.声明中的所有属性和值都是以键值对这种形式出现的


示例:

1
2
3
4
5
/*这是一个 p 标签选择器 */
p{
color: blue;
font-size: 16px;
}

借CSS的三种不同导入方式来熟悉CSS的使用(基于HTML框架)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS 导入方式</title>
<link rel="stylesheet" href="css/style.css">
</head>

<style>
p{
color: blue;
font-size: 26px;
}
h2{
color: green;
}
</style>
<body>
<p>这是一个应用了css样式的文本</p>
<h1 style="color: red;">这是一个一级标题标签,使用内联样式</h1>
<h2>这是一个二级标题,应用内部样式</h2>
<h3>这是一个三级标题,应用外部样式</h3>

</body>
</html>

其中h3引用的外部文件具体为(在头部link的引用):

格外提一嘴:三种导入方式的优先级:内联样式 > 内部样式表 > 外部样式表

1
2
3
h3{
color: greenyellow
}

JavaScript的用法

  • 导入方式
    1、内联式(在HTML里直接嵌入JS代码):


    不同于CSS代码放在style标签内,JS代码需放在script标签内


    2、外部引入(通过script标签的src属性引入)
    代码块展示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS 导入方式</title>

    <script>
    console.log("Hello,Worldhead标签的内联样式");
    </script>

    <script src="./js/myscript.js"></script>
    </head>

    <body>
    <h1>JavaScript 的导入方式</h1>
    <script>
    console.log("Hello,body标签的内联样式");
    alert("你好,内联样式弹窗"); <!-- 浏览器网页上方的弹窗显示 -->
    </script>
    </body>

    </html>

    外部引用的的文件内容(代码块中的myscript文件):

    1
    console.log("Hello,外联样式");

npm的使用

3.2 计划2

3.25 计划2.5

  • 2025-8-9 晚上9点完成了Todo页面的汇报(HTML 181/200)(javascript 183/200)



Todo:

  • 把Todolist的查找功能完善,bug修复
  • 了解JSON是什么,JSON.stringify(),JSON.parse()的作用的是什么
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    const obj = {
    uname: ' pink',
    age: 18,
    hobby:['乒乓球','足球'],
    family: {
    baby: '小pink'
    }
    }
    // 把对象转化为JSON字符串
    // {"uname":" pink","age":18,"hobby":["乒乓球","足球"],"family":{"baby":"小pink"}}
    //consolo.log(JSON.stringify(obj))
    const o = JSON.parse(JSON.stringify(obj))
    console.log(o)
    o.family.baby = '123'
    console.log(obj)
  • 把完成好的Todolist工程部署到GitHub上的新仓库(用Git命令)
  • 完善本周计划表

2025-8-12晚9点半对接留下的Todo和新的内容

3.3 计划3

游戏时间周期:2025.8.18-2025.8.24晚九点半验收

  • 探究如何用git命令更新新的项目内容到github仓库
    1
    2
    3
    4
    5
    6
    7
    8
    9
    先确认文件夹是否绑定了github远端的仓库:
    -git remote -v
    若显示的是仓库的地址,则无误
    接着
    -git add . 将本地所有的更新内容添加到该文件夹的git仓库中
    -git status 可以先用git status查看本地仓库目录中文件的状态,如是否被修改,新增或删除
    -git commit -u origin "Second commit" 我这里是第二次提交,所以""里是这么填
    -git push -u origin master(这里填的是你要提交到的分支)
    然后远端仓库就会显示同步了,会显示更新的内容
  • 了解下Vue和React(调研时间:2025-8-12 到 2025-8-14中午),最后决定出使用哪一个来编写游戏
框架 设计理念 模版语法 学习 适用场景
Vue 渐进式框架,核心专注视图层,可按需引入工具(路由、状态管理等),强调灵活性和易用性 基于 HTML 模板,使用v-指令(如v-if、v-for)实现逻辑,模板与逻辑分离 较低,模板语法贴近传统前端,中文文档完善,适合初学者 中小型项目、快速开发、国内企业应用(电商、后台系统等)
React 组件化与函数式编程,强调 “一切皆组件”,通过 JSX 将逻辑与视图结合,理念更激进 使用 JSX(JavaScript XML),允许在 JS 中直接写 HTML 结构,逻辑与视图通过 JS 结合 较高,JSX 和函数式编程思想对 JS 基础要求高,文档以英文为主 大型复杂应用、国际项目、跨平台开发(React Native)、大厂核心业务
  • 再根据所看的视频,简单的小游戏开发还是适合用Vue进行构建,React反而会相对麻烦


    结论: 决定用Vue进行编写 2025-8-17晚上九点半校对排期
  • 使用前端代码完成一个ToDo页面,支持添加修改删除查找;支持展示已完成事项(✓)

  • 使用前端代码实现两个简单的本地游戏(贪吃蛇或五子棋或Google恐龙快跑)包含路由跳转多页面

  • 将之前做的本地游戏上线

3.4 计划4


3.3 计划3实际完成进度:只实现了打地鼠一个游戏,游戏在本地还未上线


2025-8-26 校对复盘

  • 贪吃蛇项目复盘:需要一步一步地去实现代码,有问题及时沟通,频繁试错,出现问题解决问题,主要还是敢问多问

  • 推箱子项目复盘: 给项目留下收尾复盘的时间,不要盲目追求速度,要在对项目底层逻辑理解且知道其可执行度的情况下去推进,但也要多问

  • 加强提炼问题和表述问题的能力,提高提问的效率,让别人更直观地能get到问题点然后更好地去帮忙解决问题

2025-8-26(延期两天)后续代办

  • 完善第二个游戏,实现router(路由跳转)

  • 把打地鼠的项目用git命令上传到Github的远程仓库

4、示例文档

5、

6、参考资料