您的位置:首页 > 其它

TreeFrog折腾记(3)——Tutorial翻译(上)

2016-10-25 21:58 316 查看

原文链接:Tutorial

Tutorial

为了演示创建一个TreeFrog应用,以创建一个博客系统为例。该博客系统将实现列出,显示和实现增删改查文本的功能。

Generate the Application Skeleton(生成应用骨架)

首先需要创建一个骨架(包含各种设置和目录树)。应用名称使用“blogapp”。运行如下命令(在windows平台下,请从TreeFrog命令提示符中运行)。

$ tspawn new blogapp
created blogapp
created blogapp/controllers
created blogapp/models
created blogapp/models/queries
created blogapp/models/sqlobjects
created blogapp/views
:

Create a table(创建表)

接下来需要在数据库中创建表。创建字段title和content(body)。以下是在MySql和SQLite中的实例。

MySql中的例子:

数据库设置为UTF-8字符集,可以在生成数据库时指定(确保其设置正确,详见FAQ)。如下所述,可以在设置文件中指明数据库类型等。使用命令行工具进入MySql中数据库。

$ mysql -u root -p
Enter password:

mysql> CREATE DATABASE blogdb DEFAULTCHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> USE blogdb;
Database changed

mysql> CREATE TABLE blog (id INTEGERAUTO_INCREMENT PRIMARY KEY, title VARCHAR(20), body VARCHAR(200), created_atTIMESTAMP DEFAULT 0, updated_at TIMESTAMP DEFAULT 0, lock_revision INTEGER)DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.02 sec)

mysql> DESC blog;
+---------------+--------------+------+-----+---------------------+------
| Field | Type | Null | Key | Default | Extra
+---------------+--------------+------+-----+---------------------+------
| id | int(11) | NO | PRI | NULL | auto_
| title | varchar(20) | YES | | NULL |
| body | varchar(200) | YES | |NULL |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 |
| updated_at |timestamp | NO | | 0000-00-00 00:00:00 |
| lock_revision | int(11) | YES | | NULL |
+---------------+--------------+------+-----+---------------------+------
6 rows in set (0.01 sec)

mysql> quit
Bye

SQLite中的例子:

将数据库文件放在db目录下。

$ cd blogapp
$ sqlite3 db/blogdb
SQLite version 3.6.12
sqlite> CREATE TABLE blog (id INTEGER PRIMARY KEYAUTOINCREMENT, title VARCHAR(20), body VARCHAR(200), created_at TIMESTAMP,updated_at TIMESTAMP, lock_revision INTEGER);
sqlite> .quit

 

一个blog表已经生成,并拥有如下字段:id, title, body, created_at, updated_at, and lock_revision。

使用字段updated_at和created_at,TreeFrog将自动插入生成时间和每次更新时间。为了使用乐观锁(optimistic locking),lock_revision字段需要设置成整型。

Optimistic Locking(乐观锁)

使用乐观锁将确保当另一用户修改信息时该信息不会被锁住。因为没有实际的写保护锁,整个处理过程将更快。

详见O/R映射。

Set the Database Information(设置数据库信息)

使用config/database.ini文件设置关于数据库的信息。

在编辑器中打开改文件,在[dev]段落中输入指定环境下各条项目的正确值,完成后保存文件。

MySql中的列子:

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

 

SQLite中的例子:

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

 

这些细节设置完成之后,将可以连接数据库并显示表。如果一切正常,会显示如下信息:

$ cd blogapp
$tspawn --show-tables
DriverType: QSQLITE
DatabaseName: db\blogdb
HostName:
Database opened successfully
-----
Available tables:
Blog

如果Qt SDK中没有包含指定的SQL驱动,将显示以下错误信息:"QSqlDatabase: QMYSQL driver not loaded"。

如果显示上述信息,可以从下载页面中获取并安装SQL数据库驱动。

使用如下命令可以查看安装了何种SQL驱动:

$ tspawn --show-drivers
Available database drivers for Qt:
QSQLITE
QMYSQL3
QMYSQL
QODBC3
QODBC

预先构建的SQL驱动可以用于SQLite,也可以使用SQLite驱动。

Specifying a Template System(指定模板机制)

在TreeFrog中我们可以将模板机制指定为Otama或者ERB。在development.ini文件中可以指定TemplateSystem参数。

TemplateSystem=ERB
or
TemplateSystem=Otama


Automatic Generation of Code Created from the Table(根据表自动生成代码)

在命令行中,运行生成命令(tspawn)将生成代码。下列展示了生成controller,model。和view。将表名指定为命令参数。

$ cd blogapp
$tspawn scaffold blog
created controllers/blogcontroller.h
created controllers/blogcontroller.cpp
created controllers/controllers.pro
created models/sqlobjects/blogobject.h
created models/blog.h
created models/blog.cpp
created models/models.pro
created views/blog/index.html
:

使用tspawn指令选线,可以只生成或更新controller和model中的一个。

比如当修改一个表后,可以使用如下指令仅用于更新sqlobject类。

$ tspawn sqlobject blog
DriverType: QSQLITE
DatabaseName: db/dbfile
HostName:
Database opened successfully
overwrite models/sqlobjects/blogobject.h? [ynaqdh] y
updated models/sqlobjects/blogobject.h
unchanged models/models.pro


 
tspawn指令帮助:

usage: tspawn <subcommand> [args]

Type 'tspawn --show-drivers' to show allthe available database drivers for Qt.
Type 'tspawn --show-driver-path' to showthe path of database drivers for Qt.
Type 'tspawn --show-tables' to show alltables to user in the setting of 'dev'.
Type 'tspawn --show-collections' to showall collections in the MongoDB.

Available subcommands:
new(n) <application-name>
scaffold (s) <table-name>[model-name]
controller (c) <controller-name> action [action ...]
model (m) <table-name>[model-name]
usermodel (u) <table-name>[username password [model-name]]
sqlobject (o) <table-name>[model-name]
mongoscaffold (ms) <model-name>
mongomodel (mm) <model-name>
validator (v) <name>
mailer (l) <mailer-name>action [action ...]
delete (d) <table-name orvalidator-name>

Build the Source Code(构建源码)

在构建之前,运行以下指令用于生成MakeFile文件。

$ qmake -r "CONFIG+=debug"

这会产生一个警告信息,但这并没有问题。接下来运行make指令用于编译controller,model,view和helper。

$ make (On MinGW run 'mingw32-make', on MSVC run 'nmake' command instead)

构建成功后将在lib目录下生成四个共享库(controller,model,view,helper)。默认情况下库文件是debug模式。但是使用以下指令可以重新产生Makefile文件以创建release模式下的库文件。

创建release模式下的Makefile文件:

$ qmake -r "CONFIG+=release"


To Start the Application Server(运行应用服务)

在运行应用服务(AP Server)前切换到应用的更目录下。该服务将运行命令的目录作为应用的根目录。使用Ctrl+c停止服务。

$ treefrog -e dev

在windows下,使用treefrogd.exe.程序运行。

> treefrogd.exe -e dev

windows系统下,在debug模式下构建的web应用使用treefrogd.exe,而release模式则使用treefrog.exe。这两种模式不可以混合使用否则应用不会正常工作。

如果想在后台运行web服务,在使用其他选项时加上'-d'选项。

$ treefrog -d -e dev

‘-e’选项已经在出现在上述例子中。该选项后面紧跟的字段可以改变数据库的设置。如果没有指定任何字段,将使用product选项(当应用构建后,将定义以下三个选项)。



‘-e’源于“environment”的首字母。

停止指令:

$ treefrog -k stop

退出指令(强制停止):
 $ treefrog -k abort
重新启动指令:
$ treefrog -k restart

如果有防火墙,确保打开相应端口(默认端口是8800)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: