【极客兔兔-Web框架Gee详解】Day0 序言

文章目录

  • 一、Web 开发
    • 1. 什么是Web 开发?
    • 2. 主要组成部分
      • 2.1 前端开发
      • 2.2 后端开发
      • 2.3 全栈开发
      • 2.4 数据库管理
    • 3. Web开发过程
      • 3.1 规划和设计:
      • 3.2 开发和编码:
      • 3.3 测试和优化:
      • 3.4 部署和维护:
    • 4. 总结
  • 二、用标准库`net/http`处理Web请求
    • 1. 动态路由
    • 2. 鉴权和中间件
    • 3. 模板引擎
    • .....
  • 三、Web框架
  • 四、Gee框架


Gee是一个Web框架,当我们决定进行Web开发,实现一个Web应用时,就可以用到,下面各位小可爱,跟着我一步步开始这个项目吧~

一、Web 开发

要学习Web框架,那么首先就需要搞明白,什么是Web 开发呢?

1. 什么是Web 开发?

Web开发就是创建和维护网站的过程。它涉及从设计网站的外观和用户体验,到编写代码实现网站的功能,再到确保网站在互联网上正常运行。

2. 主要组成部分

2.1 前端开发

  • 负责网站的外观和用户交互。
  • 使用HTML、CSS和JavaScript等技术。
  • 确保网站在不同设备和浏览器上看起来都不错。

2.2 后端开发

  • 负责网站的逻辑和数据处理。
  • 使用服务器端语言如Python、Java、Go等。
  • 管理数据库,处理用户请求,确保数据安全。

2.3 全栈开发

  • 同时处理前端和后端的开发工作。
  • 需要掌握多种技术和工具。

2.4 数据库管理

  • 存储和管理网站的数据。
  • 使用数据库系统如MySQL、PostgreSQL、MongoDB等。

3. Web开发过程

3.1 规划和设计:

  • 确定网站的目标和功能。
  • 设计网站的结构和用户界面。

3.2 开发和编码:

  • 编写前端和后端代码。
  • 实现网站的功能和交互。

3.3 测试和优化:

  • 确保网站在不同设备和浏览器上正常运行。
  • 优化网站的性能和安全性。

3.4 部署和维护:

  • 将网站发布到互联网上。
  • 定期更新和维护网站,修复问题。

4. 总结

简单来说,Web开发就是把一个网站从无到有地创建出来,并确保它能在互联网上正常运行和使用。

二、用标准库net/http处理Web请求

Go语言的net/http库是一个强大且灵活的标准库,用于构建HTTP客户端和服务器。它提供了处理HTTP请求和响应的基本功能,使开发者可以轻松地创建Web应用程序和服务。

package mainimport ("fmt""log""net/http"
)
func main() {http.HandleFunc("/", handler) // 注册处理函数http.HandleFunc("/count", counter)log.Fatal(http.ListenAndServe("localhost:8000", nil)) // 启动服务器
}func handler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path) // 发送响应
}

这个标准库提供了基础的Web功能,即监听端口,映射静态路由,解析HTTP报文。但在一些常见的Web开发需求上,开发者需要手动实现更多的功能:

1. 动态路由

  • 标准库的限制:net/http的路由机制是基于静态路径匹配的,无法直接支持动态路由(如/hello/:name或/hello/*)。
  • 框架的优势:Web框架通常提供强大的路由功能,支持动态路由、路径参数、正则表达式匹配等。

2. 鉴权和中间件

  • 标准库的限制:net/http没有内置的中间件机制,开发者需要在每个处理函数中手动实现鉴权、日志记录等功能。
  • 框架的优势:Web框架通常提供中间件机制,允许开发者在请求处理的不同阶段插入通用逻辑,如鉴权、日志、错误处理等。

3. 模板引擎

  • 标准库的限制:虽然Go的标准库提供了html/template和text/template,但它们的功能相对基础,缺乏一些高级特性。
  • 框架的优势:许多Web框架集成了更强大的模板引擎,提供更简化和灵活的HTML生成机制。

三、Web框架

当我们离开框架,使用基础库时,需要频繁手工处理的地方,就是框架的价值所在。

直白地说,Web框架就像是搭建网站的“工具箱”或“模板”。它提供了一套现成的工具和结构,帮助开发者更快、更轻松地创建网站或Web应用。

举个例子
想象你要建一座房子:

  • 没有框架:你需要从头开始,自己设计图纸,买材料,搭建每一面墙,安装每一个电线和水管。这就像使用net/http标准库,你需要自己处理每一个细节。

  • 有框架:你有一个预制的房屋模板,里面有现成的墙壁、屋顶、管道和电线。你只需要根据自己的需求进行调整和装饰。这就像使用Web框架,框架已经为你处理了很多常见的功能,你只需要专注于实现具体的业务逻辑。

假设你要创建一个简单的博客网站:

  • 没有框架:
    • 你需要自己处理用户请求,解析URL,管理用户会话,处理表单数据,连接数据库,生成HTML页面等。这需要编写大量的代码来处理这些基础功能。
  • 使用Web框架:
    • 框架已经提供了用户认证、路由、模板引擎、数据库连接等功能。你只需要编写少量代码来定义博客的具体功能,比如发布文章、显示文章列表等。

四、Gee框架

不同的框架设计理念和提供的功能有很大的差别。比如 Python 语言的 django和flask,前者大而全,后者小而美。Go语言/golang 也是如此,新框架层出不穷,比如Beego,Gin,Iris等。

Gee框架是用 Go 语言实现一个简单的 Web 框架,参考了Gin,大家可以看到很多Gin的影子。
在这里插入图片描述

参考:https://geektutu.com/post/gee.html
大佬的源代码/数据集已上传到 https://github.com/geektutu/7days-golang

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

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

相关文章

Java入门(8)--反射机制

Java反射机制:运行时的强大工具 🔍 🎯 掌握Java反射,让你的代码更具灵活性和扩展性! 在上一篇文章中,我们学习了Java网络编程的相关知识。今天,让我们深入探讨Java反射机制,了解如何…

Aurora 64b/66bIP核学习

本文作为在学习使用aurora IP核的道路上,找到的一些对该IP讲解比较详细的资料,记录下来,便于日后翻阅,温故知新。 Aurora IP的特点 Aurora 协议在 2002 年由 Xilinx 公司首次提出,是由Xilinx提供的一个开源、免费的链…

树叶分类竞赛(Baseline)以及kaggle的GPU使用

树叶分类竞赛(Baseline)-kaggle的GPU使用 文章目录 树叶分类竞赛(Baseline)-kaggle的GPU使用竞赛的步骤代码实现创建自定义dataset定义data_loader模型定义超参数训练模型预测和保存结果 kaggle使用 竞赛的步骤 本文来自于Neko Kiku提供的Baseline,感谢大佬提供代码…

服务器作业(2)

架设一台NFS服务器,并按照以下要求配置 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 配置文件设置: [rootlocalhost ~]# vim /etc/exports 1、开放/nfs/shared目录,供所有用户查询资料 共享…

014:无人机遥控器操作

摘要:本文详细介绍了无人机遥控器及其相关操作。首先,解释了油门、升降舵、方向舵和副翼的概念、功能及操作方式,这些是控制无人机飞行姿态的关键部件。其次,介绍了美国手、日本手和中国手三种不同的操作模式,阐述了遥…

Redis的持久化以及性能管理

目录 一、Redis持久化概述 1.什么是Redis持久化 2.持久化方式 3.RDB持久化 3.1概念 3.2触发条件 3.3执行流程 3.4启动时加载 4. AOF持久化 4.1概念 4.2启动AOF 4.3执行流程 4.4启动时加载 5.RDB和AOF的优缺点 二、Redis性能管理 1.查看Redis内存使用 2…

什么是JS的垃圾回收机制?

在JavaScript中,垃圾回收(Garbage Collection,简称GC)是一种自动内存管理机制。它的主要任务是识别并回收不再被使用的对象,以释放内存空间。以下是关于JavaScript垃圾回收机制的详细解释: 标记清除算法 …

Java项目实战II基于Java+Spring Boot+MySQL的高校办公室行政事务管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在高等教育…

HTB:PermX[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are listening on PermX? 使用nmap对靶机TCP端口进行开放扫描 2.What is the default domain name used by the web server on the box? 使用curl访问靶机80端口 3.On what subdomain of permx.htb is there an o…

nginx安装ssl模块教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、openssl是什么?二、ssl证书免费申请地址三、安装步骤1.nginx安装ssl模块 总结 一、openssl是什么? OpenSSL 不仅是一个独立的工具包,它…

在Vue和OpenLayers中使用移动传感器实现飞机航线飞行模拟

项目实现的核心代码 项目概述 该项目的目标是使用Vue.js作为前端框架,结合OpenLayers用于地图显示,实时获取来自手机传感器的数据(如经纬度、高度、速度)来模拟飞机在地图上的飞行轨迹。整体架构如下: Vue.js 用于构建…

分析 SQL 语句的一般步骤

analyse-sql 数据库的性能调优是一个很大的话题。但是对于开发人员来讲,掌握一些常用的 SQL 优化手段却不是什么难事。 从本章节开始,将连载总结常用的适合于开发人员的 SQL 优化手段与大家分享。 要想解决性能优化的问题,首先要想办法发现哪…

数据库基础(2) . 安装MySQL

0.增加右键菜单选项 添加 管理员cmd 到鼠标右键 运行 reg文件 在注册表中添加信息 这样在右键菜单中就有以管理员身份打开命令行的选项了 1.获取安装程序 网址: https://dev.mysql.com/downloads/mysql/ 到官网下载MySQL8 的zip包, 然后解压 下载后的包为: mysql-8.0.16-…

文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题

三、对引理 24.10 的证明进行改善,使其可以处理最短路径权重为 ∞ ∞ ∞ 和 − ∞ -∞ −∞ 的情况。引理 24.10(三角不等式)的内容是:设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图,其权重函数由 w : E → R w:E→R w:E→R 给出&…

深度学习基础知识-损失函数

目录 1. 均方误差(Mean Squared Error, MSE) 2. 平均绝对误差(Mean Absolute Error, MAE) 3. Huber 损失 4. 交叉熵损失(Cross-Entropy Loss) 5. KL 散度(Kullback-Leibler Divergence&…

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前,需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed,它就是一个绝对定位元素。​ 在…

Qt5 读写共享内存,已验证,支持汉字的正确写入和读取

Qt5,读写共享内存,Windows下同一个进程下可测试; 通过查看控制台输出即可看到写入和读出的内容; 相比网上其他介绍的方法,大部分均不支持汉字的正常读取,下面方法已经做了汉字存储的支持,可以…

Java图片转word

该方法可以控制一页是否只显示存放一张图片 第一步 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache…

VueSSR详解 VueServerRenderer Nutx

SSR Vue中的SSR&#xff08;Server-Side Rendering&#xff0c;服务器端渲染&#xff09;是一种将页面的渲染工作从客户端转移到服务器端的技术。以下是对Vue中SSR的详细解释&#xff1a; 一、SSR的工作原理 在传统的客户端渲染&#xff08;CSR&#xff09;中&#xff0c;页面的…

指针(c语言)

一.指针的定义 1.内存被划分为一个一个内存单元&#xff0c;对内存单元进行编号&#xff0c;这些编号称为内存单元的地址&#xff0c; 其中指针就是存放地址的容器 2.平常说的指针&#xff0c;其实就是指针变量 注意&#xff1a; 1个内存单元的大小是1个字节&#xff0c;如果是…