Crow C++框架的测试记录

1.路由:

CROW_ROUTE(app, "/")

      .name("hello")([] {

        return "Hello world";

      });

在访问根目录时,服务器返回“Hello world”。这是标准的服务器返回方式。

2.html放置位置

只有在template文件夹下才能被识别。

也可以用crow::mustache::set_base(“.”)来设置路径。

不需要将html文件和css资源添加到工程,只要在template路径下即可。

3.html渲染

测试发现,如果直接双击html,在装饰文件夹路径正确的情况下,可以正常显示网络界面。但是使用crow::mustache::load_text返回html并显示时,无法正常显示。猜测是html渲染的问题,因此引出4对渲染的测试。

4.CROW的MUSTACLE模块

Mustacle的功能是为了在JSON中解析一些词,并作为返回的HTML中的部分内容。

        【1】auto page = crow::mustache::load_text("path/to/template.html");

这种方式没有使用mustacle进行渲染,

        【2】auto page = crow::mustache::load("path/to/template.html");

                auto page = crow::mustache::compile("my mustache {{value}}")#这句好像不使用

CROW_ROUTE(app, "/h2/<string>")([](std::string name) { // 
		auto page = crow::mustache::load("fft.html"); // 
		crow::mustache::context ctx({ {"person", name} }); // 
        return page.render();
		//return page.render(ctx); //
		});

这种方法在返回的template.html中,可以把网页的my mustache值设置为value

Html中显示的{person}会被替换为url中的<string>,这样就实现了动态渲染。

        

这里hello {person}被替换为了 hello <hahh>

5.CROW无法正确显示html的原因:

解析html得到的命令会多一个“.”,正在排查原因。

(1)尝试:改变了日志级别后,没有出现后面的“.”,但是还是无法读取。

(2)新建static文件夹,把css让入static中,同时修改html里面css的路径。

当前文件结构

--+---static

--+---templates

--+---main.cpp

(3)把资源文件放入static中,然后修改templates的html文件中索引css的地址,就可以正常加载css和图片,并成功显示网页。

6.本地html缓存会影响界面显示。为什么修改html内容,本地html打开界面还是不变?因为chrome有缓存。需要清理浏览器的缓存,这样修改html才能观察到结果。

7.CROW的蓝图模块

crow的蓝图相当于是把路由的设置分块化进行。原先只能在main函数里面定义路由,现在可以在不同的cpp文件中定义路由,这样就可以在实例化对象的时候进行定义。这样就可以符合面向对象的思想,即对象生成-》对象设计某个函数-》对象设置路由地址以及返回函数。主函数就只要注册就行了。

【1】bp.h

class BP
{
public:
	crow::Blueprint temp =crow::Blueprint("temp","static","templates");

	BP();

	~BP();
};

在某一个类中设置一个蓝图对象temp,路由地址是“temp”。注意!后面的static和templates是对应的html和css文件地址,需要进行设置,也可以自定义。

【2】bp.cpp

 BP::BP()
 {
	 CROW_BP_ROUTE(temp, "/xyz") ([]     //该路径下的路由
		 {
			 return "asd";
		 });

	 CROW_BP_ROUTE(temp, "/") ([]     //该路径下的路由
		 {
			 return "THIS IS BLUEPRINT temp";
		 });

	 CROW_BP_ROUTE(temp, "/ccc")
		 ([]() {
		 auto page = crow::mustache::load_text("index.html");
		 return page;
			 });
}

 BP::~BP()
 {
 }

注意,需要使用CROW_BP_ROUTE进行定义BP路由!在主程序中只要用CROW_ROUTE定义路由。

此时,bp对象中,有路由   

(1)/xyz   返回“asd”

(2)/        根路由,显示 “this is blueprint temp”

(3)/ccc 显示index.html文件

【3】main.cpp

 BP bp;
    app.register_blueprint(bp.temp);

实例化对象bp,这个bp具有一个定义好的temp,路由地址是/temp。此时,运行主程序,就可以进行访问。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值