C++网站开发MVC框架TreeFrog Framework教程——4.生成器
2017-06-12 18:27
621 查看
C++网站开发MVC框架TreeFrog Framework教程——4.生成器
下面将说明TreeFrog框架的重要组件——生成器tspawn。生成程序骨架
在我们开始编程之前,必须要做的事就是生成程序的骨架。下面的命令就是在当前工作目录下生成一个名为blogapp的文件夹,并以此作为项目根目录生成程序的基本骨架。$ tspawn new blogapp
所谓的基本框架,包括以下的这些目录:
controllers:存放控制器类的代码
models:存放模型对象类的代码
views:存放视图类的代码
helpers:存放帮助器类的代码
config:存放.ini配置文件
db:存放数据库文件(主要针对SQLite)
lib:存放将源代码编译后得到的库文件
log:存放日志文件
plugin:存放插件类的代码
public:存放静态资源文件(比如图片,css,html文件)
script:存放Javascript脚本文件
test:存放测试专用的文件
tmp:存放临时文件(比如上传的临时文件,完成后即可转移删除)
当然还有根目录下的.pro项目文件,它里面有着关于本程序最基本的配置信息。
生成手脚架scaffold
“手脚架”这个词十分形象生动,因为我们可以利用它很方便地完成对数据库的CRUD(增删查改)操作,主要包括对应的控制器、模型、ORM框架。首先我们要先在数据库创建好数据表,比如在Mysql执行下面的命令:> CREATE TABLE blog (id INTEGER PRIMARY KEY, title VARCHAR(20), body VARCHAR(200));
我们可以在database.ini中配置我们的数据库,比如:
[dev] driverType=QMYSQL databaseName=blogdb hostName= port= userName=root password=root connectOptions=
配置项 | 含义 | 备注 |
---|---|---|
driverType | 数据库驱动名称 | 有以下备选项: QDB2、QIBASE(Borland InterBase)、QMYSQL、QOCI(Oracle Call Interface)、QODBC、QPSQL(PostgreSQL)、QSQLITE |
databaseName | 数据库名称 | 如果是SQLite,则为存储文件的路径(如db/blogdb) |
hostName | 主机名 | 缺省为localhost |
port | 端口号 | 缺省为默认端口号 |
userName | 用户名 | |
password | 密码 | |
connectOptions | 数据库连接选项 | 详情可查阅QSqlDatabase::setConnectOptions() |
$ tspawn scaffold blog
数据表名和模型/控制器名称之间的关系
生成器生成的各种类名(脚手架)都是由对应的数据表名决定,规则如下:数据表名 | 模型对象名 | 控制器名 | SqlObject(ORM对象)名 |
---|---|---|---|
blog_entry → | BlogEntry | BlogEntryController | BlogEntryObject |
tspawn命令的子命令
我们可以通过$ tspawn -h命令来查看tspawn支持哪些子命令:
$ tspawn -h usage: tspawn <subcommand> [args] Available subcommands: new (n) <application-name> scaffold (s) <model-name> controller (c) <controller-name> model (m) <table-name> sqlobject (o) <table-name>
如果我们只想生成控制器、模型或者ORM中的一种,可以把子命令scaffold替换为controller、model或者sqlobject。
CRUD
CRUD是web程序的4个主要功能,分别对应着Create(增)、Read(查)、Update(改)、Delete(删),利用生成器生成的脚手架中各个函数有以下的对应关系:控制器 | 模型 | ORM | SQL |
---|---|---|---|
C | create | create() | create() |
R | index,show | get(),getAll() | find() |
U | save | save(),update() | update() |
D | remove | remove() | remove() |
关于T_CONTROLLER_EXPORT宏定义
由生成器生成的控制器代码中一般会在类定义的开头加上一个奇怪的宏定义——T_CONTROLLER_EXPORT,这到底是什么?对于Windows系统,所有控制器在编译时会集合成一个DLL文件,如果其他程序要调用到它的函数或者类,则需要在源代码加上__declspec(dllexport)来声明导出函数,此时T_CONTROLLER_EXPORT宏展开的内容就是__declspec(dllexport)。
而对于Mac OS或者Linux的用户,调用动态库文件并没有此限制,所以T_CONTROLLER_EXPORT宏展开并没有任何内容。即
#define T_CONTROLLER_EXPORT
这样,通过这个宏定义就可以使同一份代码可以在不同的平台编译运行。
相关文章推荐
- C++网站开发MVC框架TreeFrog Framework教程——1.简介
- C++网站开发MVC框架TreeFrog Framework教程——8.Otama模板
- C++网站开发MVC框架TreeFrog Framework教程——2.简单示例
- C++网站开发MVC框架TreeFrog Framework教程——6.模型层
- C++网站开发MVC框架TreeFrog Framework教程——7.ERB模板
- C++网站开发MVC框架TreeFrog Framework教程——9.WebSocket
- C++网站开发MVC框架TreeFrog Framework教程——5.控制器
- TreeFrog Framework(C++ web framework, based on Qt)开发环境搭建
- TreeFrog Framework开发环境搭建 (C++ web framework, based on Qt)
- 一个极好的C++教程网站,适合想开始做些开发的CG艺术家。
- TreeFrog Framework 开发入门之HelloWorld
- c/c++资源(源码,开发工具,国内外知名技术网站)(网上收集整理)
- JSP网站开发入门基础与实例高清视频教程
- 艾伟_转载:Windows Mobile开发,Native C++ PK .NET Compact Framework
- 【原创·视频·教程】大话优酷、酷六类视频网站Android端软件开发
- 如何做好网站开发项目需求分析_心得技巧教程
- Lessons on development of 64-bit C/C++ applications(64位C/C++开发教程)
- ASP动态网站开发实例高清视频教程
- SharePoint 2007图文开发教程(2)---使用SharePoint创建网站
- GBin1教程:使用jQuery Mobile快速开发一个手机阅读网站