加载中...
返回

读书摘抄站点构建(后端篇|之一)

书接上文,前端暂告一段落之后就要准备后端了。

我原本已经在服务器上用Docker运行过Drogon,但是服务器+vim的开发环境属实有点不太直观,还是决定在Windows上也配一个Drogon环境,结果遇到了不少坑,稍做记录,是为站点后端第一篇。

Step0 环境配置

VCPKG安装+集成

第一步是安装VCPKG,这是微软开发的一款C++软件包管理工具,Drogon就通过这款工具下载。

去到 microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS (github.com) 下载代码或克隆仓库,运行 bootstrap-vcpkg.bat 完成安装。会生成一个 vcpkg.exe ,可以添加环境变量以便全局使用。

使用 vcpkg search drogon 既可以初步观察到Drogon库的情况;同时,这条命令的顺利运行也就表示我们的安装已经成功。

使用命令 vcpkg integrate install 可以将vcpkg进行全局集成,此后从VCPKG下载的库都能在Visual Studio里面直接使用。全局集成可以通过 vcpkg integrate remove 来移除。

对于工程项目的集成,应该通过 vcpkg integrate project 来完成,这样在单一项目中下载的库不会影响到其他项目,较为理想。具体做法参见参考资料 [1] ,我选择直接使用全局集成。

Drogon安装

使用命令 vcpkg install drogon 或命令 vcpkg install drogon:x64-windows 来安装Drogon,前者安装的是X86的包,后者安装的是X64的包。

安装完成之后,应该从 [VCPKG PATH]\installed\x86-windows\tools\drogon 文件夹中找到 drogon_ctl 工具,该工具可以帮助我们生成Drogon项目及一系列组件,很有意义;我在初次安装的时候并没有找到这个工具,通过 vcpkg install drogon[ctl] 实现手动安装。

至此,可以使用 drogon_ctl create project [ProjectName] 来创建一个Drogon项目了。

Step1 运行

IDE配置

完成环境的配置到可以运行,还需要若干步骤,而这些步骤花费了我相当一些时间,因此有必要予以记录。

假定我们已通过 drogon_ctl create project server 来创建一个名为 server 的项目,第一件事是 使用Visual Studio打开该项目

用VS 打开本地文件夹 的方式打开项目,IDE自动识别该项目为CMake项目,完成CMake的一些前期配置。

紧接着并不是直接运行,而是通过【Project】–>【CMake Settings for server】这个路径来完善CMake的配置;务必在这个地方勾选Drogon路径,否则IDE无法完成Drogon框架的编译。

这里最坑的一点是,即便没有勾选这个选项,仍然能够通过编译、生成可执行文件,但你添加的功能都没办法生效。我此前根据文档添加了一个简单的控制器,结果并没有起作用。

配置文件

Drogon项目生成的时候,自带一个 config.json 文件,该文件目前还没有进行深入的理解,但是我进行了以下几点:

  • document_root 改为静态模板的文件夹,默认页面是 index.html 不变;

  • 把第 230 行的 simple_controllers_map 注释掉,因为目前还不需要进行控制器、过滤器等的添加:

    //"simple_controllers_map": [
    //  {
    //    "path": "/path/name",
    //    "controller": "controllerClassName",
    //    "http_methods": [
    //      "get",
    //      "post"
    //    ],
    //    "filters": [
    //      "FilterClassName"
    //    ]
    //  }
    //],
    
  • 修改 main.cc 文件,把加载配置文件的那行代码取消注释:

    drogon::app().loadConfigFile("../../../config.json");
    

至此,程序就可以运行了。

运行

直接通过VS生成目标程序,可以参考资料 [2] 进行静态页面和控制器的简单使用。

参考资料

[1] Visual Studio开源库集成器Vcpkg全教程–利用Vcpkg轻松集成开源第三方库_chenjm的专栏-CSDN博客_vcpkg

[2] CHN 03 快速开始 · drogonframework/drogon Wiki (github.com)

9 comments
Anonymous
Markdown is supported
@mpv945
mpv945commentedover 2 years ago

添加图片,如果使用外部图床的http链接 。图片无法点击放大,你那边怎么解决的?

@SGS4ever
SGS4evercommentedover 2 years ago

@mpv945
添加图片,如果使用外部图床的http链接 。图片无法点击放大,你那边怎么解决的?

我的博客没有使用图床,所以没办法帮到你~

@Celetherin
Celetherincommentedover 2 years ago

您好,我也是使用的stack主题,我在照着您的方法添加返回顶部按钮时,遇到了按钮虽然出现、也能够点击,但无法实现实际上的返回顶部功能的问题,我没有任何的代码知识,不知道您有没有解决方法?
另外,也是想提醒一下其他需要这篇教程的朋友,最新版的stack主题,添加返回按钮的组件应该在layouts/partials/sidebar/right.html, 在layouts/_default/single.html中添加代码会导致出现两个右边栏。

@jsjcjsjc
jsjcjsjccommentedabout 2 years ago

请教一下博主,如何优雅的给stack主题添加广告哈?
我只想在左或者右侧边栏底部,或者每篇文章底部添加一个小小的广告,但是默认似乎的满屏广告哈~~
感谢

@SGS4ever
SGS4evercommentedabout 2 years ago
@ClimbingMouse
ClimbingMousecommentedalmost 2 years ago

你好,按照你的方法设置页面载入动画,这个动画不会停止咋办啊

@46fafa
46fafacommentedalmost 2 years ago

博主你好,请问一下主页布局修改哪里的代码如何作用于整个网页,我发现修改后的布局只存在主页和前两篇文章,其他部分还是没修改的样子

@4kohakunushi
4kohakunushicommentedabout 1 year ago

你好,关于左侧栏图标高亮我这里存在一些问题想请教你。我取消了原本主页直接抓取post的内容在中间显示的版块,这个部分改成了其他东西,与此同时新增了一个抓取post信息的与links、search等目录并列的一个目录,现在的问题是这些部分虽然都能正常显示,但是对应的抓取post的那个目录无法选中以后高亮,应该修改增加什么才能让它也可以选中后高亮呢?

@SGS4ever
SGS4evercommentedabout 1 year ago

首先我只能基于本文使用的Stack版本来尝试解答,因为没看过当前的Stack主题的代码~
我重新翻了下此前写的关于高亮的内容,理论上只要你的post页面的标题在menu配置中即可高亮。如果post页面是你站点的根路径,那应该可以参考我的文章里写的方法,修改下active的触发逻辑~

@4kohakunushi
你好,关于左侧栏图标高亮我这里存在一些问题想请教你。我取消了原本主页直接抓取post的内容在中间显示的版块,这个部分改成了其他东西,与此同时新增了一个抓取post信息的与links、search等目录并列的一个目录,现在的问题是这些部分虽然都能正常显示,但是对应的抓取post的那个目录无法选中以后高亮,应该修改增加什么才能让它也可以选中后高亮呢?

有朋自远方来,不亦说乎?