个人网站制作 Part 9 添加发布、管理博客功能 | Web开发项目

文章目录

  • 👩‍💻 基础Web开发练手项目系列:个人网站制作
    • 🚀 添加博客功能
      • 🔨使用Express和MongoDB
        • 🔧步骤 1: 创建博客模型
        • 🔧步骤 2: 创建博客路由
      • 🔨使用前端框架
        • 🔧步骤 3: 使用Vue.js渲染博客列表
    • 🚀 预览与保存
    • 🚀 下一步计划


👩‍💻 基础Web开发练手项目系列:个人网站制作

欢迎回到基础Web开发练手项目系列!

在前几篇博文中,我们已经创建了个人网站的基本结构、样式、导航栏、项目展示、联系信息、表单交互、动画效果、页面滚动效果、响应式设计、性能优化、页面动画、用户认证、数据库集成、电子邮件通知和社交媒体集成。

在本篇中,我们将学习如何添加博客功能,使你的网站具有发布和管理文章的能力。

在这里插入图片描述

🚀 添加博客功能

🔨使用Express和MongoDB

🔧步骤 1: 创建博客模型

server.js 文件中创建博客模型:

const blogSchema = new mongoose.Schema({
    title: String,
    content: String,
    author: String,
    date: { type: Date, default: Date.now }
});

const Blog = mongoose.model('Blog', blogSchema);
🔧步骤 2: 创建博客路由

server.js 文件中创建博客路由:

// 显示所有博客文章
app.get('/blogs', async (req, res) => {
    try {
        const blogs = await Blog.find();
        res.json(blogs);
    } catch (error) {
        res.json({ message: error.message });
    }
});

// 创建新博客文章
app.post('/blogs', async (req, res) => {
    const blog = new Blog(req.body);
    try {
        const savedBlog = await blog.save();
        res.json(savedBlog);
    } catch (error) {
        res.json({ message: error.message });
    }
});

🔨使用前端框架

🔧步骤 3: 使用Vue.js渲染博客列表
  1. index.html 文件中引入Vue.js。
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
  1. index.html 文件中创建博客列表区域。
<div id="app">
    <h2>博客列表</h2>
    <ul>
        <li v-for="blog in blogs" :key="blog._id">
            {{ blog.title }} - {{ blog.author }}
        </li>
    </ul>
</div>
  1. script.js 文件中添加Vue实例和获取博客数据的逻辑。
const app = new Vue({
    el: '#app',
    data: {
        blogs: []
    },
    mounted() {
        // 获取博客数据
        fetch('/blogs')
            .then(response => response.json())
            .then(data => this.blogs = data)
            .catch(error => console.error('获取博客数据失败:', error));
    }
});

🚀 预览与保存

确保保存所有文件并在浏览器中预览你的网站。你现在应该看到一个拥有基本博客功能的更加完善的个人网站了!

🚀 下一步计划

在下一篇文章中,我们将学习如何添加用户评论功能,使你的博客更加互动。记得继续关注本系列,为你的网站增添更多有趣的功能!

通过这个项目,你已经学到了Web开发中许多重要的基础知识,并通过添加博客功能使你的网站更加丰富多彩。祝你编码愉快,不断创新!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是零日攻击?

一、零日攻击的概念 零日攻击是指利用零日漏洞对系统或软件应用发动的网络攻击。 零日漏洞也称零时差漏洞&#xff0c;通常是指还没有补丁的安全漏洞。由于零日漏洞的严重级别通常较高&#xff0c;所以零日攻击往往也具有很大的破坏性。 目前&#xff0c;任何安全产品或解决方案…

OxyPlot 导出图片

在 OxyPlot 官方文档 https://oxyplot.readthedocs.io/en/latest/export/index.html 中查看 这里用到的是导出到 PNG 文件的方法&#xff0c;不过用的 NuGet 包最新版&#xff08;2.1.0&#xff09;中&#xff0c;PngExporter 中并没有 Background 属性&#xff1a; 所以如果图…

字符函数与字符串函数

前言 本次博客可以说内容最为多的一次博客&#xff0c;讲解同样很细致大家好好看看 1字符函数 在讲解字符函数时,大家得了解什么是字符吧 普通字符a b c 1 转义字符 \n 换行‘ \t’ 水平制表符\r回车 大家了解即可 在C语言中字符也可以有分类 所以我们先来看看…

软件测试经验与教训

大概在18年的时候&#xff0c;就看过《软件测试经验与教训》的纸制版&#xff0c;里面的一些观点深刻的影响了我&#xff0c;也影响了后来我对测试的思考。最近又一次快速阅读了电子版&#xff0c;还是收获满满。下面精选出10条&#xff0c;和大家分享。 一、测试人员是项目的…

testng测试类第2步

创建xml文件并编写xml文件 并学习其中的参数 1、创建 xml文件 在测试包->右键找到creat TestNG XML 创建xml文件 如果报错就可以粘贴过来 认识原始文件 这里首行是标识&#xff0c;其次是2个参数&#xff0c;name是测试套件的名称&#xff0c;谁的测试套件一般是公司名称…

JAVA实战手册-开篇总述

该专题以实战为出发点&#xff0c;总结概述了实际工作中常用的java知识点&#xff0c;掌握了这些知识点&#xff0c;日常工作开发以及面试都不在话下。 话不多说&#xff0c;直入正题&#xff0c;以下为JAVA知识点概括总结&#xff08;总计涵盖了10大类78小项&#xff09; 针对…

AcWing 727. 菱形——像拼图一样做题

题目描述] 分析&#xff1a; 利用程序根据输入的整数&#xff0c;画出由字符*构成的该整数阶的实心菱形。给出一个示例&#xff1a; n 7 n7 n7。 * * * * * * * * * * * * * * * * * * * * * * * * * 我们将采取拆解问题&#xff0c;通过四个部分的…

Linux编程4.7 网络编程-套接字与地址

1、因特网地址结构 struct in_addr{in_addr_t s_addr; /*ipv4地址*/ }struct sockaaddr_in{short int sin_family; /*Internet地址族&#xff0c;如AF_INET&#xff08;主机字节序&#xff09;*/ unsigned short int sin_port; /*端口号&#xff0c;16…

upload-labs第二关第五关

upload-labs第二关 1、先上传个马试试&#xff0c;看看页面显示什么&#xff0c;要先把上次上传的马删掉哦 2、提示文件类型不正确&#xff0c;在看下提示说是在服务端做了检查 3、那就上传个php格式的&#xff0c;然后呢bp抓包把文件格式改了 4、修改后的 5、修改后发现不…

【物联网】Modbus 协议及应用

Modbus 协议简介 QingHub设计器在设计物联网数据采集时不可避免的需要针对Modbus协议的设备做相关数据采集&#xff0c;这里就我们的实际项目经验分享Modbus协议 简介 Modbus由MODICON公司于1979年开发&#xff0c;是一种工业现场总线协议标准。1996年施耐德公司推出基于以太…

ansible 运维自动化

pxe 一键安装操作系统 操作系统只是提供一个平台 lnmp 需要多软件协同完成的一个简单项目 服务器正常运行 日常运维 巡检 服务器上的软件正常运行 zabbix 普罗米修斯 系统调优&#xff0c;架构调优 前言 运维自动化 云计算核心职能 搭建平台架构 …

TCPIP协议总结

一、TCP的三次握手 TCP连接的建立时&#xff0c;双方需要经过三次握手&#xff0c;而断开连接时&#xff0c;双方需要经过四次分手&#xff0c;那么&#xff0c;其三次握手和四次分手分别做了什么呢&#xff1f;又是如何进行的呢&#xff1f; 通常情况下&#xff0c;建立连接的…

从零开始学习如何使用 Postman 请求头

当你在使用 Postman 发送请求时&#xff0c;请求头&#xff08;Headers&#xff09;是你可以包含在 HTTP 请求中的重要部分之一。请求头包含了关于请求的元数据信息&#xff0c;这些信息对于服务器来处理请求是非常重要的。下面是一份详细的图文介绍&#xff0c;说明了如何在 P…

电商数据采集效率开挂【Python电商数据采集API接口】

数据监测 监测线上电商平台的商品、店铺数据&#xff0c;包括商品销量/库存/价格/店铺等级/发货地/促销活动等信息&#xff0c;支持十多个国内主流电商平台。 在线维权 实现多平台在线一键投诉&#xff0c;与各大电商投诉平台系统对接&#xff0c;实时同步投诉进展。 渠道管…

C# visual studio 2022 学习2

类成员&#xff1a; 1.字段成员 字段只是类中声明的一个变量&#xff0c;用来在对象中存储信息。 &#xff08;1&#xff09;.静态字段 使用static关键字修饰的就是静态字段&#xff0c;静态字段属于类而不属于某个类实例&#xff0c;对它的访问使用“类名.静态字段名” &…

28-2 文件上传漏洞 - 双写绕过

环境准备&#xff1a;构建完善的安全渗透测试环境&#xff1a;推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、双写绕过原理 在代码编写过程中&#xff0c;双写绕过原理指的是只对黑名单中的内容进行一次空替换。由于只进行一次替换&#xff0c;导致了双写绕过的情况…

数据结构从入门到精通——排序的概念及运用

排序的概念及运用 前言一、排序的概念排序稳定性内部排序外部排序 二、排序运用三、常见的排序算法四、排序性能检测代码srand()clock() 五、oj排序测试代码 前言 排序是将数据按照一定规则重新排列的过程&#xff0c;常见规则有升序、降序等。排序算法如冒泡排序、快速排序等…

JavaScript中的继承方式详细解析

什么是继承 继承是面向对象编程中的一个重要概念&#xff0c;它指的是一个对象&#xff08;或类&#xff09;可以获得另一个对象&#xff08;或类&#xff09;的属性和方法。在继承中&#xff0c;被继承的对象通常称为父类&#xff08;或基类、超类&#xff09;&#xff0c;继…

C++关键字:static

文章目录 一、static的四大用法1.静态局部变量2.静态全局变量3.静态函数4.类中的 静态成员变量、静态成员函数 一、static的四大用法 1.静态局部变量 延长局部变量的生命周期。 1.与普通的局部变量不同&#xff0c;局部静态变量在函数调用结束之后&#xff0c;不会被销毁&am…

中国银联订单支付产品实施指南(2022.A 版)

为落实总行提出以银行账户为基础&#xff0c;全面提升对小微企业、民营企业的支付结算服务能力和水平的总体思路要求&#xff0c;践行支付为民&#xff0c;银联提出建设订单支付产品&#xff0c;通过深度融合企业线上线下支付场景&#xff0c;充分赋能商业银行B2B业务支付结算&…