Facebook Twitter LinkedIn E-mail
magnify
Home Posts tagged "Play Framework"

Scala中文社区论坛开放

相信Scala 语言会逐渐普及开来,Play Framework 也会得到广泛的应用,Scala中国社区论坛为专门介绍Scala和Play Framework的中文技术论坛。

论坛网址 http://www.scala-china.net  http://www.scala-playframework.org 和 http://www.scala-playframework.com

20130922001

 

Play Framework Web开发教程(4): 选用你喜欢的开发IDE

开发Play Web应用非常方便,你可以不使用任何IDE,这是因为Play可以自动编译更新修改过的源码。因此你可以使用简单的文本编辑器来来开发Play应用。
然而使用Java或Scala 集成开发环境(IDE)可以提供支持代码自动完成,及时编译,语法检查及调试等功能可以极大的提高开发效率,下面就介绍两种常见的Play 开发IDE。
一是免费的Eclipse IDE,另外一个为IntelliJ IDEA (个人版$199,倒也物有所值)

Eclipse

首先使用play 生成Eclipse项目文件,这可以通过在Play项目目录下运行:
play eclipse
或 eclipse with-source=true (如果你需要库文件的源码,这个需要的时间可能长些)
通常情况下使用eclipse 就可以满足要求,如果你有兴趣查看部分库的代码实现,可以添加with-source=true 选项。
然后使用Eclipse Import功能将该Play下面添加到Eclipse中。
20130915001

如果项目引入成功,你就可以使用Eclipse来编辑/开发Play Web应用
20130915002

使用Eclipse调试Play项目的方法如下:
首先在命令行进入Play项目目录,执行 play debug run
20130915003

然后使用Eclipse创建一个远程调试的配置,缺省的调试端口为9999

20130915004

然后就可以设置断点,和调试一般的Java应用没有什么不同:

20130915005

这里可以看出,使用Eclipse开发Play Web应用,通常还需要Play Console的配合,但Eclipse 还是一个非常优秀的IDE,完全可以胜任Scala,Play Framework应用的开发。

如果你希望一个完全不需要使用Play Console的开发IDE, IntelliJ IDEA 是一个很好的选择。

IDEA

同样,在Play项目目录下使用 idea
或 idea with-sources=yes(如果你需要库文件的源码)
这个命令创建idea项目文件,此后可以引入到IntelliJ IDEA中,基本上就无需使用Play Console, IntelliJ IDEA 的scala, play 插件可以帮你完成由Play Console完成的工作。

20130915006

实际开发中你可以根据个人喜好选择合适的IDE,甚至不使用任何IDE来开发Play应用。

 

Play Framework Web开发教程(3): 使用Play Console

即使你使用IntelliJ IDEA或是Eclipse IDE来开发Play应用,了解Play Console的使用还是非常有用的,Play Console 为一基于sbt的命令行工具,可以用来管理Play应用的开发生命周期。

启动Play Console

使用Play Console前,注意把Play所在目录添加到系统目录中,这样,启动Play Console 非常简单,只需在Play应用所在目录在命令行输入 “play”

play

20130914001

获得Play 命令帮助

你可以输入help play 获得关于Play命令使用的基本方法和命令:
常见的命令如下:

 play                         Enter the play console
 help                         Displays this help message or prints detailed help on requested commands (run 'help <command').
 about                        Displays basic information about sbt and the build.
 tasks                        Lists the tasks defined for the current project.
 settings                     Lists the settings defined for the current project.
 reload                       (Re)loads the project in the current directory
 projects                     Lists the names of available projects or temporarily adds/removes extra builds to the sessio.
 project                      Displays the current project or changes to the provided `project`.
 set                          Evaluates a Setting and applies it to the current project.
 session                      Manipulates session settings.  For details, run 'help session'.
 inspect                      Prints the value for 'key', the defining scope, delegates, related definitions, and dependenies.
 ; <command> (; <command>)*   Runs the provided semicolon-separated commands.
 ~ <command>                  Executes the specified command whenever source files change.
 last                         Displays output from a previous command or the output from a specific task.
 last-grep                    Shows lines from the last output for 'key' that match 'pattern'.
 exit                         Terminates the build.
 show <key>                   Displays the result of evaluating the setting or task associated with 'key'.
 

在开发模式下启动Play应用

使用run 命令,可以开发模式下启动Play应用,此时一些调整信息可以在屏幕上显示出来,缺省情况下,Play Web应用使用端口9000,如果你修改代码,Play Console会检测到代码变化,在下个请求时会自动重新编译代码或资源,如要必要,还可以重新启动Play应用。如果出现编译错误,那么在浏览器中会显示错误信息:
20130914002

如果要停止Web服务,可以按Ctrl+D ,此外还可以通过任务管理器,杀死对应的Java进程来停止Web服务。

编译

Compile 命令可以编译Play 源码或是资源(如CoffeeScript代码,LESS代码,Scala代码等),如果出现编译错误,屏幕上显示对应的错误提示:

20130914003

调试命令

如果你使用Eclipse IDE,你可以使用Eclipse来调试代码,此时需要使用 play debug 启动一个JPDA调试端口,缺省调试端口为 9999,此后可以通过配置Eclipse远程调试指向这个端口,就可以使用Eclipse和其它Java 调试器来调试代码,如果使用IntelliJ IDEA IDE可以自动完成这些配置。

强制清理编译结果

如果你觉得编译的结果出现意想不到的机会,那么你的sbt的缓存可能出现问题,此时可以通过 clean-all 命令强制清除之前的编译结果,然后使用compile 重新编译生成新的编译内容。

此外play Console 基于 sbt 工具,因此你也可以使用sbt 的一些功能 ,比如 ~compile ,~run, ~test等

 

Play Framework Web开发教程(2): Play 应用目录解析

上篇博客Play Framework Web开发教程(1):概述及环境安装 创建了一个新的应用,它的目录结构如下:

Play应用标准的目录结构

app                      → 应用的源码
 └ assets                → 可以编译的Asset源码
    └ stylesheets        → 通常为Less代码
    └ javascripts        → 通常为CoffeeScipts代码
 └ controllers           → 应用的controllers类定义
 └ models                → 应用的Model类定义
 └ views                 → UI模板
conf                     → 配置文件
 └ application.conf      → 主应用配置文件
 └ routes                → 路由定义
public                   → 公开的Asset定义
 └ stylesheets           → CSS文件
 └ javascripts           → Javascript文件
 └ images                → Image文件
project                  → sbt配置文件(用来编译项目)
 └ build.properties      → sbt 项目属性定义
 └ Build.scala           → 应用编译脚本定义
 └ plugins.sbt           → sbt插件定义
lib                      → 应用使用的库文件(不由sbt管理的其它库)
logs                     → 日志目录
 └ application.log       → 缺省的应用日志文件
target                   → 编译生成的文件目录
 └ scala-2.10.0            
    └ cache              
    └ classes            → 编译过的class文件
    └ classes_managed    → Managed class 文件 (模板等, ...)
    └ resource_managed   → Managed 资源(less, ...)
    └ src_managed        → 生成的源码(模板, ...)
test                     → 单元测试或功能测试代码目录

app目录

app目录包含了所有可运行代码或资源:Scala代码,UI模板和Less代码,CoffeeScript代码, app通常包含下面三个子目录:对于与MVC的三个部分:

  • app/controllers
  • app/models
  • app/views

当然你可以添加你自己的目录,比如app/utils。此外还有一个可选的标准目录名assets
app/assets ,用来存放可供编译的LESS或CoffeeScript代码

public目录

public目录存放了可以供网页直接访问的资源,比如CSS,图像,JavaScript文件。

conf目录

该目录存放应用的配置文件,主要有下面两种配置:

  • application.conf 应用主配置文件,定义了应用的一些配置参数
  • routes ,路由配置文件

lib目录

主要用来添加一些第三方库文件,这些库主要指一些没有通过sbt或编译脚本定义的库文件。直接把jar文件添加到这个目录下,编译时会直接添加到应用的classpath.

project目录

定义sbt编译项目的定义,包含下面三个文件:

  • plugins.sbt 定义项目使用的插件定义
  • Build.scala 定义项目编译脚本.
  • build.properties 指定编译sbt的版本等.

target目录

包含了编译后生成的一下文件。

如果你使用GIT做为版本管理工具,下面为典型的 .gitingore 文件:

logs
project/project
project/target
target
tmp
dist
.cache
 

Play Framework Web开发教程(1):概述及环境安装

在博客前面已经介绍过两个用于开发Web应用的框架,采用PHP开发的Yii 开发教程 和基于纯Java的Vaadin Web开发教程 ,此外还有基于Ruby的Ruby on Rail  和基于.Net 的 ASP.NET MVC4 ,其中Ruby on Rail 和 ASP.NET MVC 教程已经非常多,也不准备再重复这些教程。

本篇开始介绍Play Framework ,它也是一个用来开发Web应用的开发框架,可以使用Java和Scala,但本教程将使用Scala作为开发语言,Scala语言比较新,但它已经成为我最喜欢的语言之一,如果你喜欢使用Java,PHP,Perl,C#或者JavaScript那么你一定也会喜欢上Scala, 它集中了这些语言的优点,同时除了支持面对象的编程外,它还是一种函数式编程语言(Functional programming),支持扩展,你可以根据需要扩展Scala语言,这是一般的开发语言所不支持的。

Play Framework 基于Akka (并行应用开发包,这个开发包的一个显著特定是基于Actor模型,并行运算是这个某些的基本特点,可以避免由于一般多线程开发不正确使用同步或互锁造成的程序死锁等问题)。采用MVC模型(非常类似于ASP.NET MVC4),缺省支持REST和JSON,支持编译CoffeeScript和LESS代码。 支持数据库编程,并且可以和Slick(类似于LINQ的数据库接口)。开发可以使用Eclipse ,Intellij IDEA或是Sbt(Typesafe 自带的编译工具)。

本教程采用Eclipse 开发环境配合sbt 工具开发。

下面简单介绍一下Play Framework开发环境的搭建,(Windows开发环境)。

  1. 首先需要安装Java SDK ,建议安装最新版Java SDK ,64位系统安装64位Java SDK。
  2. 安装Scala编译工具sbt.
  3. 安装Scala开发环境
  4. 安装Scala IDE for Eclipse
  5. 下载解压Play Framework ,目前版本为2.1.3

安装好之后,注意把这些命令行所在的目录添加的系统环境变量PATH中,然后到到命令行中执行

play new myFirstPlayApp

在提示选择语言(Java或Scala)选择 Scala

20130909001

然后进入 新创建myFirstPlayApp ,运行 play run ,如果编译成功,将显示下面类似的消息,表示新创建的Web应用运行在端口 9000

20130909002

打开浏览器 输入地址http://localhost:9000,如果显示如下页面,将表示开发环境已经就绪,后面文章将介绍这个例子。

20130909003

 

相信Scala 语言会逐渐普及开来,Play Framework 也会得到广泛的应用,目前使用Play Framework的一些著名网站有 Linked In 

20130909004

 

注:本博客的一个新的别名 http://www.scala-playframework.com ,之后可能会作为专门介绍Scala和Play Framework的中文技术论坛。