VergiL Wang的专栏

Scala语言与Play框架入门教程 (初稿)

关于教程

更新日期:2012-11-28, 作者:tanshuai,电邮:i@tanshuai.com

为了更好的服务于开发者,本教程将会持续更新,勘误并完善内容。若发现本文的错误,建议或意见均可联系本文作者。

Scala语言简介

Scala语言编译后的代码直接运行在Java虚拟机之上,可调用所有的Java代码库,Scala设计目标是成为比Java更好的语言。Scala同时具备和整合了面向对象及函数式的编程特性。

Play框架简介

Play Framework是一个开源的Web应用框架,使用Scala和Java语言混合编写。Play遵循传统的MVC(Model-View-Controller: 模型、视图和控制器)模式,这一点Lift与其有所不同。

本文主要对Play Framework最新第二版(Play 2.0)进行讲解。

目前本文所刊载网站cn.tanshuai.com就是基于Scala和Play Framework。

安装和配置Scala和Play Framework开发环境

安装 JDK

Scala作为Java虚拟机语言(JVM Language),与Java一样需要Java虚拟机才能编译和运行,因此开发者须首先安装Java开发工具包(JDK),无论为个人学习还是商业开发,目前均推荐使用JDK 6 (Java SE 6)而非7,亦可使用同版本的OpenJDK。

安装完JDK后,一定要检查环境变量是否设置正确,检验方法:

在命令行程序中任意路径位置,分别输入java -version和javac -version 若输出正确的java和javac版本信息,即表示安装和环境变量设置正确; 若输出的是"command not found"或"不是内部或外部命令,也不是可运行的程序"等错误提示,即表示没有安装成功或环境变量设置有误。

下载地址:

$ sudo apt-get install openjdk-6-jre下载Scala、Play工程项目

下载地址:

Play 2.0开始使用Scala开发生态中的SBT(Simple Build Tool)作为编译、运行、测试、部署和配置管理系统,类似Java的Maven。

SBT通常以一个sbt-launch.jar文件通过Java指令启动,根据项目的SBT配置文件,自动下载该项目所需的全部工具和类库。SBT可由开发者自行安装在计算机中,作为各种项目的统一工具,也可放入工程项目中以便快速部署。

本文所提供的用于快速入门的工程项目内置了SBT,开发者下载解包后,根据不同的操作系统运行下列命令即可初始化和启动开发环境:

Window:> cd web_app> sbt

Unix (Linux / Mac OS X …)

$ cd web_app $ ./sbt

Windows XP 的开发者请注意,由于Play Framework 发布版本的问题(Bug),目前无法在该操作系统上正常开发和运行,Windows 7不受影响。

使用Scala和Play开发环境

初始化Scala、Play开发环境

首次使用SBT,启动和执行run命令时,SBT会自动下载所需的工具和类库,如:Scala编译器、Scala基础库、Play框架等相应开发和运行所必需的类库,这个过程根据网速快慢可能需要数十分钟至数个小时,开发者此时可以继续阅读本文下面的内容。

运行Scala Play Web应用

Scala和Play的开发和测试均在SBT命令行状态下进行。进入项目所在路径启动SBT。

当出现[web_app] $时,表示开发环境准备就绪,可以进行开发和测试工作。

输入指令 run :

[web_app] $ run

即可运行本文提供的工程项目Web应用,指令执行后输出以下信息时证明启动成功:

— (Running the application from SBT, auto-reloading is enabled) —[info] play – Listening for HTTP on port 9000…(Server started, use Ctrl+D to stop and go back to the console…)

"Server started" 表示Web应用已经运行成功,"HTTP on port 9000" 指的是Web应用使用了本机9000端口作为Web服务器监听端口。

此时在浏览器中输入::9000,即可浏览该Web应用的效果。

首次运行需要等待数秒,用于SBT编译项目中的Scala/Java代码,此时会看到以下信息:

[info] Compiling 6 Scala sources and 1 Java source to /../web_app/target/scala-2.9.1/classes…

Play是由Scala和Java混合编写的框架,因此在用Scala开发Play应用的过程中虽并不需z编写Java代码,但Play会自动生成一个Java代码文件,因此在编译的时候会提示一个Java source,稍后会讲解为何生成该Java代码。

此时SBT命令行处于锁定状态,若想输入新的SBT命令,必须按下Ctrl+D,重新回到命令行待命状态:[web_app] $

文件保存、浏览器刷新与自动编译

在输入run指令后,修改任何文件只需要进行保存,然后通过浏览器刷新(F5)网页,SBT将会自动编译修改后的文件,并将结果(或错误信息)输出至浏览器。

清理编译后的文件

有时需要清空所有编译后的文件如各种.class文件以恢复全新的状态,在待命状态下输入:

[web_app] $ clean

可以尝试执行该清理命令再重新编译来解决开发过程中遇到一些难以理解的问题。

只编译(不运行)

有时在进行程序编码为了校验语法等目的,不需要运行程序,以提高开发效率只需要执行编译指令compile:

[web_app] $ compile退出 SBT

在待命状态下输入:

[web_app] $ exit

Play Framework下的Web开发

Play 工程目录结构web_app根目录| sbtSBT Unix 批处理脚本用于启动sbt-launch.jar | sbt.batSBT Windows 批处理脚本用于启动sbt-launch.jar | sbt-launch.jarSBT 启动的Java可执行类库|+—appPlay Web 应用全部代码所在目录| || +—models模型代码所在目录| |Message.scala留言板例程模型代码| || +—controllers控制器代码所在目录| |Application.scala 默认控制器代码| || \—views视图(Play Scala HTML模板) 代码所在目录|main.scala.html主模板文件|index.scala.html 首页模板文件|msgboard.scala.html 留言板例程模板文件|+—confPlay 配置文件所在目录|application.conf应用配置文件|routes应用入口路由文件,所有的HTTP请求将通过该文件转发到指定的Scala对象处理|+—logs日志目录|application.log应用运行日志|+—projectSBT工程文件|build.properties保存所需的SBT版本信息,通常无需更改|Build.scala主要的工程配置文件|plugins.sbt告知SBT本工程所需要的插件以及下载位置|+—public存储一切直接发送给浏览器的资源文件| || +—images图像文件,如JPEG、PNG、GIF等| || +—javascriptsJavaScript脚本文件| || \—stylesheetsCSS样式表文件|\—target存放编译后的可执行代码和编译时的中间代码一切从 routes 开始如果困难是堵砖墙,拍拍它说你还不够高。

VergiL Wang的专栏

相关文章:

你感兴趣的文章:

标签云: