使用Astro+Vercel+Cloudflare一天时间开发部署上线一个知识博客网站,简直简简单单

news2024/9/21 16:20:25

大家好,这里是程序猿代码之路。在当今数字化时代,拥有一个个人博客网站对于分享知识、展示个人品牌变得越来越重要。然而,许多非技术背景的用户对于搭建和维护一个网站可能会感到望而却步。幸运的是,随着低代码和无代码平台的兴起,即使没有编程经验的人也能轻松构建起属于自己的在线空间。我就给大家实操以下如何使用Astro这一现代化的网站构建工具,只需半小时,即可打造一个简洁美观、功能完备的知识博客网站

一、Astro简介

Astro是一个基于React的静态站点生成器,它允许开发者快速构建高性能的网站。Astro集成了Markdown支持、SSR(服务器端渲染)、API路由等现代web开发所需的功能,特别适合创建博客、文档站点以及小型论坛。

1. Astro的特点

  • 易用性:Astro提供了简洁的API和配置,即使是初学者也能迅速上手。
  • 性能优化:Astro生成的静态页面加载迅速,有利于SEO和用户体验。
  • 可扩展性:通过插件系统和集成API路由,Astro可以轻松扩展功能。

2. 为什么选择Astro

  • 响应式设计:Astro创建的网站天然支持响应式布局,适应各种屏幕尺寸。
  • 社区支持:Astro拥有活跃的社区,不断贡献插件和最佳实践。

二、环境准备

在开始之前,我们需要确保系统中已经安装了必要的软件和工具。

1. 安装Node.js

  • 下载并安装:访问Node.js官网,下载适合自己操作系统的安装包。
  • 验证安装:在终端输入node -v,确认Node.js已正确安装。

2. 安装Astro

  • 使用npm:运行npm install -g astro,全局安装Astro。
  • 验证安装:运行astro --version,确认Astro已正确安装。

当然这一步可以不用,后面咱们使用模板即可!

三、网站构建流程

接下来,我们将一步步构建自己的知识博客网站。咱们先来看看成品。如下:

怎么样,是不是还是挺biu特否的?

其实,要实现这个效果非常简单!!你只需要一个astro模板即可!

astro模板地址:https://astro.build/themes

我们只需要打开astro模板先选择一个免费模板即可:

该模板的github地址:https://github.com/ixartz/Astro-boilerplate

将该项目拉取到本地运行即可。

1. 运行astro项目模板

我就懒得换编译工具了,直接用Idea来进行运行了,当然了,大家可以用VSCode或者HbuilderX同样可以运行astro项目的。将项目导入到Idea中如下:

打开终端输入npm install安装依赖。

npm install

安装依赖成功之后输入npm run dev运行项目即可。

npm run dev

项目启动成功

项目本地地址:http://localhost:4321/

接下来当然就是将他改成咱们自己的东西咯。

2. 修改成自己想要的

我这边只需要自我介绍我的文章我的项目的模块。其它的就不需要了。

src/pages/index.astro文件中更改首页需要展示的模块。

原本的代码

<Base head={{ title, description }}>
  <Hero />
  <Sponsors />
  <ProjectList />
  <RecentPosts postList={lastThreePosts} />
  <CTA />
</Base>

改之后的代码

<meta name="referrer" content="no-referrer" />
<Base head={{ title, description }}>
  <Hero />
  <RecentPosts postList={lastThreePosts} />
  <ProjectList />
</Base>

也就是把SponsorsCTA模块给去掉了而已,并且新增加了一行<meta name="referrer" content="no-referrer" />代码。加这一行的原因是由于引用了网络图片或者云存储图片是项目会跨域,找不到图片。因此加上这一行解决跨域,在需要引用网络图片的页面都需要加上这个,比如文章显示、文章列表展示都是页面都需要,除了这个引用图片链接的问题,其它的没问题了。大家找到想换的地方,全局搜索,然后替换掉即可。比如说替换下面框住的部分。

在idea中按住全局搜索快捷键ctrl+shift+r即可搜索,找到之后替换成自己想要的即可,如下:

3. 如何新增加文章

在文件夹src/pages/posts下就是所有文章,需要新增文章的话只需要在下面新建.md文件即可,以下给一篇文章参考参考!!

4. 部署上线

部署上线也非常简单,那咱们就用vercel进行项目的部署上线吧,这方面又需要说许多。请大家慢慢看吧!

使用vercel部署的前提是需要将代码以及打包之后的文件上传到代码托管平台中,如GitHubGitLabBitbucket等等,咱们就以github为例。首先将代码传到github中如下:

项目地址: https://github.com/Heng-Xiao/astro_doc

接下来就是打开vercel主页进行选择个人开发者使用github登录https://vercel.com/signup。

然后将github的项目导入即可。如下:

运行成功之后应该就会有一个vercel自带的域名,但是这个域名目前咱们国内是访问不了,被墙了。因此就需要用户自定义域名了,正好我也有一个阿里的空闲的域名好久没有用了,正好给用上:henglulu.top,注意:大家如果不需要自定义域名的话最好不要用vercel,用Netlify来进行部署上线就很好。

我用vercel最最最重要的就是它还会自动生成一个免费的域名并且自带SSL证书也就是可以直接通过https进行访问。这玩意不知道能省多少钱。

那么我们如何进行自定义域名绑定呢?,这个时候我们就得需要域名解析神器Cloudflare啦!

Cloudflare的主流服务是域名解析,简单来说就是当你输入baidu.com的时候告诉计算机它所指向的ip地址是什么。这也是一个可以白嫖的网站,因为基础版的域名解析也是免费的。虽然免费,功能却一样不少,甚至更安全更丰富。Cloudflare对域名解析的同时提供代理服务,隐藏真实的ip,保护站点免受不法攻击。你的应用在vercel部署之后会自动生成一个以vercel.app为后缀的域名,也支持自定义域名。自定义域名可以通过Cloudflare进行域名解析并利用代理服务达到访问vercel的目的。

因此,我们可以配合Cloudflare的域名解析,和在国内服务商购买好的域名,我们就可以将vercel部署的应用的自带域名代理到我们自己的域名,这样就可以在国内访问我们的vercel应用了。

因为我有一个阿里云的空闲的域名,因此就以阿里云来进行示例。域名还是非常便宜的,随便挑一个便宜的购买就可以,备案成功就行啦!

有备案好的域名之后前往https://www.cloudflare.com/zh-cn进行注册,有账号的直接登录。然后进行添加站点即可

然后当然是选择免费的啦!!!

登录阿里云打开阿里云域名管理

Cloudflare中添加CNAME类型的解析,比如这个项目就是把henglulu.top重定向到astro-doc-wheat.vercel.app,并打开 proxy 服务。我在这边为了对应根路径访问和www访问,两个都加上了。

并且为了防止Vercel + Cloudflare = 重定向次数过多,我们应该进入 Cloudflare Dashboard,点击有问题的域名,打开左侧的 SSL/TLS 设置,在 Overview 中设置加密模式为完全或完全(严格)即可。

接下来就在Vercel上为自己部署好的前端应用添加新的域名解析。进入到部署好了的项目的主页,可以看到一个“Domain”的按钮,点击进入

然后进入之后,输入你买好的域名然后点击Add:

选择默认的方案,也就是把根域名和www解析一起加上。

接下来打开网站访问成功:https://www.henglulu.top/

四、知识博客演示

项目地址: https://github.com/Heng-Xiao/astro_doc

线上地址:https://www.henglulu.top/

五、后续功能拓展与优化

为了使我们的知识博客网站更加完善,我们后续打算可以添加一些高级功能和进行性能优化。

1. 集成评论系统

  • 选择服务:考虑集成第三方评论系统,如Disqus或Giscus,增加用户互动。
  • 配置接入:按照服务商的指南,在相应页面集成评论系统的SDK。

2. SEO优化

  • 元标签:合理设置页面的标题、描述和关键词,提高搜索引擎的友好度。
  • 站点地图:生成XML站点地图,并提交给各大搜索引擎,加速内容被发现。

3. 性能优化

  • 代码分割:利用Astro提供的按需加载功能,减少首屏加载时间。
  • 图片优化:压缩图片资源,使用现代图片格式如WebP,提升加载速度。

五、总结与展望

通过Astro+Vercel+Cloudflare,我们不仅能够在一天内搭建起一个知识博客网站,并且还能部署上线啦。随着个人网站在互联网中的地位日益提升,掌握一项快速建站的技能,无疑会在个人品牌建设和知识分享的道路上,为我们增添一份强大的助力。

如若大家想了解更多相关知识,请关注我,一名有故事的程序猿!!创作不易,麻烦大家给个关注,最后感谢您的阅读,希望本文对您有所帮助!如有任何疑问或建议,请随时留言交流

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

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

相关文章

Spring高手之路21——深入剖析Spring AOP代理对象的创建

文章目录 创建代理对象核心动作的三个步骤1. 判断 Bean 是否需要增强&#xff08;源码分析时序图说明&#xff09;2. 匹配增强器 Advisors&#xff08;源码分析时序图说明&#xff09;3. 创建代理对象&#xff08;源码分析时序图说明&#xff09; 创建代理对象核心动作的三个步…

C++模版基础知识与STL基本介绍

目录 一. 泛型编程 二. 函数模板 1. 概念 2. 函数模版格式 3. 函数模版的原理 4. 模版函数的实例化 (1). 隐式实例化 (2.) 显式实例化 5. 模版参数的匹配原则 三. 类模板 1. 类模板的定义格式 2. 类模板的实例化 四. STL的介绍 1. 什么是STL&#xff1f; 2. STL的版…

netty入门-7 ByteBuf

文章目录 前言ByteBuf结构池化与非池化创建&#xff08;直接内存/堆内存&#xff09;写入和读取释放零拷贝&#xff0c;slice&#xff0c;duplicate&#xff0c; copy&#xff0c;Composite 结语 前言 ByteBuf这部分视频讲的更为详细。 主要参考视频。 ByteBuf 结构 首先这…

C# Task.WaitAll 的用法

目录 简介 1.WaitAll(Task[], Int32, CancellationToken) 2.WaitAll(Task[]) 3.WaitAll(Task[], Int32) 4.WaitAll(Task[], CancellationToken) 5.WaitAll(Task[], TimeSpan) 结束 简介 Task.WaitAll 是 C# 中用于并行编程的一个的方法&#xff0c;它属于 System.Threa…

开始尝试从0写一个项目--后端(三)

器材管理 和员工管理基本一致&#xff0c;就不赘述&#xff0c;展示代码为主 新增器材 表设计&#xff1a; 字段名 数据类型 说明 备注 id bigint 主键 自增 name varchar(32) 器材名字 img varchar(255) 图片 number BIGINT 器材数量 comment VARC…

Elasticsearch 使用误区之三——分片设置不合理

Elasticsearch 是一个强大的搜索和分析引擎&#xff0c;它通过将数据分散到多个节点的分片中来进行分布式处理。 本文将探讨分片大小和策略的概念&#xff0c;以优化 Elasticsearch 的性能并防止过度分片或分片过大等问题。 先看个分片设置不合理的真实企业案例&#xff1a; 10…

陶晶驰串口屏使用记录与教程

首先把串口屏想象成和正点原子usmart调试程序一样的程序&#xff0c;串口屏主芯片有些是GD32 STM32都是主流单片机&#xff0c;里面下载了一些固件形成了现在的操作系统 其实我更喜欢把他们&#xff08;usmart&#xff0c;串口屏主程序&#xff0c;micropython&#xff0c;at指…

uniapp vue3 使用画布分享或者收藏功能

使用HBuilder X 开发小程序&#xff0c;大多数的画布插件很多都是vue2的写法&#xff0c;vue3的很少 我自己也试了很多个插件&#xff0c;但是有一些还是有问题&#xff0c;不好用 海报画板 - DCloud 插件市场 先将插件导入项目中 自己项目亲自用过&#xff0c;功能基本是完善…

GraphRAG:基于实体的本地搜索方法:知识图谱与非结构化数据的融合

GraphRAG&#xff1a;基于实体的本地搜索方法:知识图谱与非结构化数据的融合 在自然语言处理和信息检索领域,如何有效地结合结构化知识和非结构化文本数据一直是一个重要的研究方向。本文介绍一种基于实体的本地搜索方法,该方法巧妙地融合了知识图谱中的结构化数据和输入文档中…

优化冗余代码:提升前端项目开发效率的实用方法

目录 前言代码复用与组件化模块化开发与代码分割工具辅助与自动化结束语 前言 在前端开发中&#xff0c;我们常常会遇到代码冗余的问题&#xff0c;这不仅增加了代码量&#xff0c;还影响了项目的可维护性和开发效率。还有就是有时候会接到紧急业务需求&#xff0c;要求立马完…

打造一篇完美的【数学建模竞赛论文】:从准备到撰写的全面指南

目录 一、赛前准备 1.1 报名与纪律要求 1.2 MD5码上传 1.3 竞赛准备 1.4 时间分配 二、论文格式规范 2.1 摘要 2.2 参考文献 2.3 排版要求 三、建模过程与方法 3.1 问题分析与模型假设 3.2 模型构建与求解 3.3 结果分析与检验 四、论文撰写技巧 4.1 论文结构 4…

Redisson中分布式锁继承体系

直接上图 画了好久 关于非公平锁和公平锁中差异化函数如tryLockInnerAsyc 和unsubscribe还没有时间进行探索&#xff0c;这应该是公平锁和非公平锁之间的差异所在。 说一说Redisson中的类之间关系设计 参考抽象类实现接口_一个抽象之类 如果要实现某个接口怎么办-CSDN博客 众…

电脑文件误删除如何恢复?数据恢复第一步是什么?这五点要第一时间处理!

电脑文件误删除如何恢复&#xff1f;数据删除恢复的第一时间要做什么&#xff0c;你知道吗&#xff1f; 在使用电脑的过程中&#xff0c;误删除重要文件的情况时有发生。面对这种情况&#xff0c;不必过于慌张&#xff0c;因为有多种方法可以帮助你恢复误删除的文件。以下是恢复…

金字塔监督在人脸反欺骗中的应用

介绍 论文地址&#xff1a;https://arxiv.org/pdf/2011.12032.pdf 近年来&#xff0c;人脸识别技术越来越普及。在智能手机解锁和进出机场时&#xff0c;理所当然地会用到它。人脸识别也有望被用于管理今年奥运会的相关人员。但与此同时&#xff0c;人们对人脸欺骗的关注度也…

醒醒,别睡了...讲《数据分析pandas库》了—/—<3>

直接上知识点 一、 1、新建数据框时建立索引 所有的数据框默认都已经使用从 0 开始的自然数索引&#xff0c;因此这里的"建立”索引指的是自定 df pd.DataFrame( {varl : 1.0, var2 :[1,2,3,4], var3 :[test,python,test,hello] , var4 : cons} , index [0,1,2,3]) …

【ESP32 IDF SPI硬件驱动W25Q64】

目录 SPISPI介绍idf配置初始化配置通信 驱动代码 SPI SPI介绍 详细SPI介绍内容参考我之前写的内容【ESP32 IDF 软件模拟SPI驱动 W25Q64存储与读取数组】 idf配置 初始化配置 spi_bus_initialize() 参数1 &#xff1a;spi几&#xff0c;例如spi2,spi3 参数2&#xff1a;…

MySQL体系结构与查询执行流程详解

MySQL 体系结构与查询执行过程详解 MySQL 是一个采用单进程多线程架构模式的关系型数据库管理系统。本文将详细介绍 MySQL 的体系结构及其查询语句的执行过程,并探讨性能优化的关键点。 MySQL 体系结构 MySQL 的架构为 Client-Server 架构。总体上,我们可以将 MySQL 的体系…

python—pandas基础(2)

文章目录 列操作修改变量列筛选变量列使用.loc[]&#xff08;基于标签)使用.iloc[]&#xff08;基于整数位置&#xff09;使用.filter()方法 删除变量列添加变量列 变量类型的转换Pandas 支持的数据类型在不同数据类型间转换 建立索引新建数据框时建立索引读入数据时建立索引指…

如何在宝塔面板给域名配置 SSL 证书

首先需要有证书 这里以阿里云为例 1. 首先进入到 SSL 证书管理控制台 选择个人测试证书&#xff0c;并点击购买 免费的可以使用三个月。 购买完成之后回到控制台。 点击创建证书&#xff0c;将标红的地方填写&#xff0c;其他默认就好。 然后提交审核就行。 这里需要对域名…

JS逆向高级爬虫

JS逆向高级爬虫 JS逆向的目的是通过运行本地JS的文件或者代码,以实现脱离他的网站和浏览器,并且还能拿到和浏览器加密一样的效果。 10.1、编码算法 【1】摘要算法&#xff1a;一切从MD5开始 MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以,…