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

原文链接: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

猜你喜欢

转载自blog.csdn.net/sinat_23185975/article/details/52927741