C++网站开发MVC框架TreeFrog Framework教程——2.简单示例

news/2024/5/20 15:31:03/文章来源:https://blog.csdn.net/gg_18826075157/article/details/73072250

下面以一个博客文章管理网站的开发实例作为这个框架的使用入门教程。

1.安装TreeFrog Framework

下面以Ubuntu为例说明:

1.1.安装框架的依赖库:

$ sudo apt-get install -y qt5-default qt5-qmake libqt5sql5-mysql libqt5sql5-psql  libqt5sql5-odbc libqt5sql5-sqlite libqt5core5a libqt5qml5 libqt5xml5 qtbase5-dev qtdeclarative5-dev qtbase5-dev-tools gcc g++ make

1.2.安装客户端的DB库

$ sudo apt-get install -y libmysqlclient-dev libpq5 libodbc1

1.3.下载框架源码

网址:http://www.treefrogframework.org/download

1.4.源码安装

$ tar xvfz treefrog-x.x.x.tar.gz
$ cd treefrog-x.x.x
$ ./configure
$ cd src
$ make
$ sudo make install
$ cd ../tools
$ make
$ sudo make install

2.生成项目的骨架

我们为程序命名为bolgapp,那么执行下面的命令即可自动生成项目的骨架:

$ tspawn new blogapp

3.创建数据表

在数据库中创建存储“博客文章”的数据表,它包含以下数据列:idtitle, body, created_at, updated_at, lock_revision。其中created_atupdated_at分别表示创建时间和修改时间,它们会由TreeFrog负责自动插入和更新。lock_revisio这个名字会被TreeFrog识别为乐观锁,他一般表示的是当前资源的版本号,因此其数据类型一般是整型。

3.1.MySQL

$ mysql -u root -pmysql> CREATE DATABASE blogdb DEFAULT CHARACTER SET utf8;mysql> USE blogdb;mysql> CREATE TABLE blog (id INTEGER AUTO_INCREMENT PRIMARY KEY, title VARCHAR(20), body VARCHAR(200), created_at DATETIME, updated_at DATETIME, lock_revision INTEGER) DEFAULT CHARSET=utf8;mysql> DESC blog;+---------------+--------------+------+-----+---------+----------------+| Field         | Type         | Null | Key | Default | Extra          |+---------------+--------------+------+-----+---------+----------------+| id            | int(11)      | NO   | PRI | NULL    | auto_increment || title         | varchar(20)  | YES  |     | NULL    |                || body          | varchar(200) | YES  |     | NULL    |                || created_at    | datetime     | YES  |     | NULL    |                || updated_at    | datetime     | YES  |     | NULL    |                || lock_revision | int(11)      | YES  |     | NULL    |                |+---------------+--------------+------+-----+---------+----------------+

3.2.SQLite

$ cd blogapp$ sqlite3 db/blogdbsqlite> CREATE TABLE blog (id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(20), body VARCHAR(200), created_at TIMESTAMP, updated_at TIMESTAMP, lock_revision INTEGER);

4.关于乐观锁

所谓乐观锁,其实就是在更新数据(写操作)时不主动进行获得锁并上锁的操作,而是在最后保存写入时再通过检查对象数据的版本号,如果与原来的一致(说明期间没有其他人进行更新),那才执行最后的写入操作,否则放弃执行。TreeFrogORM框架支持乐观锁机制,这需要对应的数据表提供一个数据列来表示版本号(一般是整型)。这样就可以省去大量的上锁操作,可以提高系统的整体效率。

5.配置数据库

使用文本编辑器打开项目工程目录下的config/database.ini文件,在[dev]配置子项中根据自己的情况输入对应的值,保存后再退出。

5.1.MySQL的例子:

[dev]
DriverType=QMYSQL
DatabaseName=blogdb
HostName=
Port=
UserName=root
Password=******
ConnectOptions=

5.2.SQLite的例子:

[dev]
DriverType=QSQLITE
DatabaseName=db/blogdb
HostName=
Port=
UserName=
Password=
ConnectOptions=

运行下面的命令:

$ cd blogapp
$ tspawn --show-tables

如果配置成功的话,会显示下面的内容:

DriverType:   QMYSQL
DatabaseName: blogdb
HostName: 
Database opened successfully
-----------------
Available tables:blog

6.根据数据表自动生成源代码

下面的命令会根据之前创建好的数据表blog自动生成C++源代码——包括控制器、模型、视图。

$ tspawn scaffold blog

7.编译项目源代码

首先运行下面的命令生成Makefile文件。如果输出了大量的WARNING警告,不用担心,这属于正常情况。

$ qmake -r "CONFIG+=debug"
或者
$ qmake -r "CONFIG+=release"

运行make命令,把刚才自动生成的源代码都编译了。

$ make

如果编译成功,那么将会在lib目录下生成以下库文件:controllermodelviewhelper

8.启动项目

在项目的根目录下运行下面的命令,开启项目(默认端口号是8800):

$ treefrog -e dev

这样默认是shell前台运行项目,可以按Ctrl+c来关闭停止。当然,你也可以加上-d选项来让程序在后台执行。这里的dev指的就是读取各个配置表中的[dev]配置子项。当然,你也可以指定其他的配置子项。

配置子项说明
dev开发用
test测试用
product正式发行用

正常停止程序:

$ treefrog -k stop

强制停止程序:

$ treefrog -k abort

重启程序:

$ treefrog -k restart

9.用浏览器访问

开启程序后,在浏览器的地址栏上输入http://localhost:8800/Blog即可访问到我们的博客文章系统。
首页1
新建博客
首页2

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

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

相关文章

C++网站开发MVC框架TreeFrog Framework教程——8.Otama模板

Otama模板系统的最大特点在于表现层的纯粹性&#xff0c;使用原生的HTML标签取代形如<%...%>这样的嵌入脚本代码。 使用之前&#xff0c;记得把配置文件&#xff08;development.ini&#xff09;中的模板系统设置为Otama&#xff1a; TemplateSystemOtamaOtama模板文件…

从零开始开发一个大型网站

从零开始开发一个大型网站 更新&#xff1a;前端代码已全部由TypeScript进行重写 这是本人第一个从零开始开发一个大型网站&#xff08;前后端部署代码&#xff09;&#xff0c;是一个内容分享社区&#xff0c;详细信息见github。目前还是开发中后期&#xff0c;随后还要进行…

使用MVC框架开发网站(一)

概述 本章您将学会&#xff1a; 1.MVC的概念及使用 2.MVC与ASP.NET的区别 3.路由和URL导向 4.控制器和视图 5.模型与模型状态 6.过滤器 7……. 第1章_MVC与ASP.NET的区别 1.1概述 MVC是一种流行的Web应用架构技术&#xff0c;他把Web应用划分成Model、Controller和V…

利用beego开发网站(一)

在这里&#xff0c;我将分享我这段时间学到的关于怎样搭建一个简单的beego项目&#xff0c;分享的东西仅仅是入门级别。 一&#xff0c;安装golang的开发工具和语言的编译工具&#xff08;如果本步骤不会的话&#xff0c;请去golang中国社区查阅资料进行开发搭建&#xff09; 我…

使用ThinkPHP框架快速开发网站(多图)

使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站&#xff0c;基本功能算是完成了。比较有收获的是大概了解了ThinkPHP框架。写一些东西留作纪念吧。如果对于同样是Web方面新手的你有一丝丝帮助&#xff0c;那就更好了挖。 以前用PHP做过一个很蹩脚的网站&#xff0…

node爬虫_爬取斗图啦网站上的表情包

最近在学习node.js,做点不是人的事情&#xff1a;爬取网站上的表情包 实现步骤&#xff1a; 1、分析网站的结构&#xff1a; 斗图啦这个网站是服务器渲染的&#xff0c;直接打开网站就可以获取到完整的html信息。 我们可以看到下面两张图就是我们需要获取的信息 2、使用的插…

良心安利卧室su模型素材网站

前方干货满满&#xff0c;建议先收藏再看哦&#xff01;为大家整理卧室su模型素材&#xff0c;总有满足你需求的一款&#xff0c;除此之外&#xff0c;免费&#xff0c;资源质量好&#xff0c;一键打包下载&#xff0c;你还不心动吗&#xff1f; 因为小编的工作原因&#xff0…

必备 免费人物虚幻模型素材网站

前方干货满满&#xff0c;建议先收藏再看哦&#xff01;为大家整理人物虚幻模型素材&#xff0c;总有满足你需求的一款&#xff0c;除此之外&#xff0c;免费&#xff0c;资源质量好&#xff0c;一键打包下载&#xff0c;你还不心动吗&#xff1f; 本人曾经也是废大把时间寻找…

超全机械设备 机器3dm犀牛资源素材网站整理

想必大家都在为找机械设备 机器3dm犀牛资源而头疼吧&#xff0c;今天小编都为大家整理好咯&#xff0c;上资源的机械设备 机器3dm犀牛资源&#xff0c;大家喜欢的可以先行收藏哈&#xff0c;之后会持续更新哒~ 接下来就给大家介绍一下我珍藏已久的网站&#xff1a;爱给网&…

良心安利办公室样机模板素材网站

因为工作的原因&#xff0c;我会经常使用到素材网站&#xff0c;各个平台的模式不太一样&#xff0c;内容也各有特点。刚开始接触素材网站都是一头雾水&#xff0c;走了很多弯路&#xff0c;一些很简单的操作都花去很长的操作时间.....今天给大家安利办公室样机模板素材网站&am…

超全公园sketchup模型素材网站整理

想必大家都在为找公园sketchup模型而头疼吧&#xff0c;今天小编都为大家整理好咯&#xff0c;超多的公园sketchup模型资源&#xff0c;大家喜欢的可以先行收藏哈&#xff0c;之后会持续更新哒~ 接下来就给大家介绍一下我珍藏已久的网站&#xff1a; 爱给网&#xff0c;我的工…

宝藏又小众的飞机cc0高清摄影图片素材网站分享

天天各大网站找飞机cc0高清摄影图片素材&#xff1f;最后空手而归&#xff1f;今天为大家推荐飞机cc0高清摄影图片素材网站&#xff0c;质量上乘适合资源慌缺的你&#xff0c;话不多说准备开始收藏吧&#xff01; 因为小编的工作原因&#xff0c;经常会使用到飞机cc0高清摄影图…

超全伏特加免抠摄影素材网站整理

因为工作的原因&#xff0c;我会经常使用到素材网站&#xff0c;各个平台的模式不太一样&#xff0c;内容也各有特点。刚开始接触素材网站都是一头雾水&#xff0c;走了很多弯路&#xff0c;一些很简单的操作都花去很长的操作时间.....今天给大家安利伏特加免抠摄影素材网站&am…

实验·搭建nginx网站

实验搭建nginx网站 实验环境 CentOS 7.6 nginx源码包 nginx-1.12.2.tar 实验步骤>开启nginx统计模块并可以正常访问 #创建用户nginx [rootlocalhost opt]# useradd -M -s /sbin/nologin nginx#安装环境 [rootlocalhost opt]# yum -y install gcc gcc-c pcre pcre-dev…

世界各国语言学习网站

世界各国语言学习网站 来自 佳人 卿本佳人发表 收录于昨天 59 分享 转自&#xff1a; 鲜果网 世界各国语言学习资源&#xff0c;没有找不到的&#xff0c;只有想不到的&#xff0c;保证你一辈子也学不完…… 篇幅比较长&#xff0c;是按地域分的&#xff0c;这里先列个地域清…

美国科技博客网站gadgetcrave.com近日评出世界现代史上10大最为重要的技术和产品

美国科技博客网站gadgetcrave.com近日评出世界现代史上10大最为重要的技术和产品&#xff0c;其中电灯、电话、电视、电脑和互联网等技术和产品上榜。gadgetcrave.com网站称&#xff0c;这次评选去掉了那些对于公众而言直观性较低(如晶体管、电力和内燃机等)的技术和产品&#…

JavaScript系列—性能优化之《网站性能优化实战——从12.67s到1.06s的故事》

本篇博文来源于网络 226 人赞同了该文章 原文作者&#xff1a;IMWeb jerryOnlyZRJ 原文链接&#xff1a; 网站性能优化实战--从12.67s到1.06s的故事 - 腾讯Web前端 IMWeb 团队社区 史上最全面、最完整的网站性能监测与优化策略 0.引言 作为互联网项目&#xff0c;最重要的便…

编译ASP.NET网站项目,以及部署网站到本地localhost服务器上实现独立运行

1.准备步骤 操作系统&#xff1a;windows 10 IDE&#xff1a;visual studio 2017 我们创建了一个网站项目后&#xff0c;“解决方案资源管理器”中能看到我们编写好的项目文件 准备好源文件后就可以开始编译工作。 2.发布Web应用&#xff0c;进行编译 右键项目名称&#xff0c;…

Apache+mono实现ASP.NET网站在ubuntu服务器上运行

要求&#xff1a;提前安装好Apache2 安装mono mono是一个用来在linux环境下运行.NET的应用 mono官网安装方法 安装库到ubuntu 16.04上&#xff08;其余版本参考上方官方说明&#xff09;&#xff1a; sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-…

如何让外网访问自己写的网站

由内网映射到外网 准备材料实现步骤 准备材料 写好的工程应用 &#xff1b;natapp&#xff0c;获取注册点这里&#xff1a;Here&#xff1b; 实现步骤 注册并实名认证&#xff1b;购买隧道&#xff0c;免费隧道&#xff1b;见图&#xff1a; 复制authtoken&#xff1b;让本…