使用Go语言创建HTTP服务器并展示网页

  使用Go语言创建一个简单的服务器时可以先建立一个项目根目录,随后在根目录中建立一个用于存放静态文件(HTML/CSS/JavaScript)的文件夹 GGboy,接下来输入命令初始化Go模块

go mod init GGboy // 项目名称是 GGboy

  在出现 go.mod 文件后即可开始编写 main.go 文件,该文件用于创建和启动HTTP服务器

// main.gopackage mainimport ("log"      // 记录日志信息的包"net/http" // 网络请求包
)func main() {// 定义静态文件目录, 用来存放.html和.css、.javascript文件的文件夹dir := "C:\\.......\\GGboy"// 设置路由http.Handle("/", http.FileServer(http.Dir(dir)))// 打开8080端口log.Println("打开端口:8080")if err := http.ListenAndServe(":8080", nil); err != nil {log.Fatal(err)}
}

编写好后即可输入命令运行HTTP服务器,但目前前端页面还没有写,项目还无法运行。

接下在GGboy文件夹中创建 index.html, 编写酷炫的HTML页面,在页面中插入图片及Go语言介绍,为字体进行css优化

<!-- index.html -->
<!DOCTYPE html>  
<html lang="zh">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>GGboy</title>  <link rel="stylesheet" href="styles.css">  
</head>  
<body>  <header>  <h1 class="colorful-title">欧耶!原来是GGboy</h1>  </header>  <main>  <section class="image-gallery">  </section> <section class="character-info">  <h2>猪猪侠介绍</h2>  <p id="pigHeroIntro">猪猪侠是一个勇敢而聪明的超级英雄,他总是勇敢地面对挑战,用他的智慧和力量保护他的朋友和家园。他有一颗善良的心,总是乐于助人,深受大家的喜爱。</p>  <h3>Go语言介绍</h3>  <p id="goLangIntro">  Go语言是一种由猪猪侠新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点:  <br>  1. 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。  <br>  2. Go语言为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。  <br>  3. Go语言是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。  <br>  4. Go语言完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。  <br>  按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。  <br>  Go语言是一种猪猪型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。  </p>  </section> </main>  <script src="script.js"></script><button onclick="window.location.href='https://www.csdn.net/';">快来点击小猪猪</button> 
</body>  
</html>

 在同文件夹中创建 script.js 文件,用来插入图片,在图片无法加载时显示错误提示

// script.js
document.addEventListener('DOMContentLoaded', function() {  const imageGallery = document.querySelector('.image-gallery');  const imageUrls = [  'https://tse3-mm.cn.bing.net/th/id/OIP-C.X7-Eyw-eFgdmIMxulVXRfAHaHa?rs=1&pid=ImgDetMain',  'https://tse4-mm.cn.bing.net/th/id/OIP-C.lDpdCQhVNxV6HO8qkgb3cwHaHD?w=510&h=486&rs=1&pid=ImgDetMain',  'https://tse2-mm.cn.bing.net/th/id/OIP-C.wLioQHhuKBlwpNl24hTLZwAAAA?w=400&h=408&rs=1&pid=ImgDetMain',  'https://tse1-mm.cn.bing.net/th/id/OIP-C.yTP33CZBMdATDzYMH58QyQHaHa?rs=1&pid=ImgDetMain'];  imageUrls.forEach(function(imageUrl) {  const img = document.createElement('img');  img.src = imageUrl;  img.alt = 'GGboy靓照';  imageGallery.appendChild(img);  });  
});

 在同文件夹中创建 styles.css 文件,用于优化图片及页面中的字体

/* styles.css */body {  font-family: Arial, sans-serif;  margin: 0;  padding: 0;  background-color: #f2f2f2;  
}  header {  background-color: #333;  color: white;  text-align: center;  padding: 20px;  
}  @keyframes blink {  0% { opacity: 1; }  50% { opacity: 0; }  100% { opacity: 1; }  
}.colorful-title {  font-size: 48px;  text-transform: uppercase;  letter-spacing: 2px;  animation: color-change 3s infinite;  background: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent;   animation: blink 1s linear infinite;
}  @keyframes color-change {  0% {background-position: 0 0;}  50% {background-position: 100% 0;}  100% {background-position: 0 0;}  
}  .image-gallery {  display: flex;  justify-content: space-between;align-items: center; flex-wrap: nowrap; padding: 10px; 
}  .image-gallery img {  flex: 0 0 auto; max-width: 20%; margin: 0 10px; 
}@keyframes colorChange {  0% { color: #ff0000; }20% { color: #00ff00; } 40% { color: #0000ff; } 60% { color: #ffff00; } 80% { color: #ff00ff; } 100% { color: #ff0000; } 
}  #goLangIntro {  font-family: 'Arial', sans-serif;  font-size: 16px;  line-height: 1.6;  color: #333; text-align: justify;  animation: colorChange 0.5s linear infinite;  
}  #pigHeroIntro {  font-family: 'Arial', sans-serif;  font-size: 16px;  line-height: 1.6;  color: #333; text-align: justify;  animation: colorChange 0.5s linear infinite;  
}

项目结构如下

 

在终端中输入命令运行刚才创建的Go语言HTTP服务器

go run main.go

显示以下信息即表示服务器创建成功

 

随后在浏览器顶部搜索栏中打开 http://localhost:8080  ,即可访问刚刚所创立的项目,可以看到酷炫的GGboy网页,最后在终端输入 Ctrl+C 即可关闭Go的HTTP服务器

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

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

相关文章

【Linux】如何关闭 swappiness ?

1、关闭 swappiness 查看 swappiness 的当前值&#xff1a; sysctl vm.swappiness cat /proc/sys/vm/swappiness cat /sys/fs/cgroup/memory/memory.swappiness永久关闭&#xff1a; echo vm.swappiness 0 >> /etc/sysctl.conf临时关闭&#xff1a; sysctl vm.swapp…

NCV5104DR2G中文资料规格书PDF数据手册引脚图图片价格产品概述产品功能引脚

产品概述&#xff1a; NCP5104是一款高压功率栅极驱动器&#xff0c;提供两个输出&#xff0c;用于直接驱动 2 个半桥配置的 N 沟道功率 MOSFET 或 IGBT。 它使用自举技术来确保正确驱动高端电源开关。 产品特性&#xff1a; 高压范围&#xff1a;高达 600 VdV/dt 抗扰度 5…

Qt登录页面

#include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget) {ui->setupUi(this);//接收动图QMovie *mv new QMovie(":/pictrue/luori.gif");ui->loglab->setMovie(…

探索多视角驱动的层次内容感知网络用于指静脉识别

文章目录 探索多视角驱动的层次内容感知网络用于指静脉识别总结摘要介绍相关工作多视角方法长短时记忆基于视角的目标表达 方法全局主干网络局部感知模块损失函数 实验和分析数据库实验设置和训练策略消融实验视角一致性的效果 参考文献 论文: Exploiting Multiperspective Dr…

【C++】多态 (上)

在实际生活中我们也经常见到多态的例子&#xff0c;多态就是不同的对象完成同一个行为时会产生不同的状态&#xff0c;比如成人和儿童购票就是不一样的&#xff0c;多态是可以基于继承的&#xff0c;我们本篇博客的多态就是基于继承的&#xff0c;下面我们先看一个简单例子 cla…

C语言内存函数之 memcpy和memmove函数

memcpy函数的记忆方法&#xff1a;mem表示内存类函数&#xff0c;属于头文件string.h里面的函数。cpy是copy的缩写&#xff0c;表示对内存数据进行拷贝。 memcpy函数的输入值和返回值&#xff1a;void* my_memcpy(void*brr,void*arr,size_t v) memcpy的输入值分别是被拷贝数…

电子考试信息软件系统设计

1 整体设计 融机改与人改、出题、答题、图表浏览、下载为一体。 每课十套试卷。随机抽题形成试卷&#xff0c;选项顺序随机打乱。 云端分布微服体系架构&#xff0c;非关系文档数据库支撑&#xff0c;合理编码数据表关联。 神禹网关调度&#xff0c;NACOS监护。 负载均衡与…

3.3网安学习第三阶段第三周回顾(个人学习记录使用)

本周重点 ①渗透测试介绍 ②sqlmap注入扫描工具 ③XSS脚本注入 本周主要内容 ①渗透测试介绍 一、渗透测试 通过模拟黑客对系统进行攻击的手段或技术&#xff0c;在被测系统中发现漏洞的行为。除了提供漏洞之外&#xff0c;还需提供安全意见。 与黑站不同&#xff0c;渗…

python --- 练习题3

目录 1、猜数字游戏&#xff08;使用random模块完成&#xff09; &#xff1a;继上期题目&#xff0c;附加 2、用户登录注册案例 3、求50~150之间的质数是那些&#xff1f; 4、打印输出标准水仙花数&#xff0c;输出这些水仙花数 5、验证:任意一个大于9的整数减去它的各位…

UE4 面试题整理

1、new与malloc的区别 new&#xff1a; new首先会去调用operator new函数&#xff0c;申请足够的内存&#xff08;大多数底层用malloc实现&#xff09;&#xff0c;然后调用类型的构造函数来初始化变量&#xff0c;最后返回自定义类型的指针&#xff0c;delete先调用析构函数&…

java内存分析工具visualvm

java内存分析工具visualvm 下载地址:https://visualvm.github.io/

位运算第三弹

力扣268.丢失的数字 public static int missingNumber(int[] nums) {int nnums.length;int []retnew int[n1];for(int i1;i<n;i){ret[nums[i-1]];}for(int i0;i<n;i){if(ret[i]0){return i;}}return 0;} 和上一道题&#xff0c;一个性质&#xff0c;用的是底层哈希表的思…