使用Play框架和Sencha的Web应用程序

6

好的,我一直在考虑使用Play框架作为后端服务和Sencha作为前端开发来开发Web应用程序。

现在我也在研究Sencha Touch和PhoneGap,这可以帮助我制作原生的Android应用程序。所以问题在于如何将数据呈现给两个不同的设备。一个是触摸设备,另一个在适当的桌面浏览器中打开。

我应该检测请求是从哪个设备发出的,然后加载适当的控制器,还是怎么做呢?我现在真的很困惑!我对Web和移动应用程序场景非常陌生,所以如果有人能解释一下如何继续,那将是一个巨大的帮助!谢谢。

2个回答

4
我也使用Sencha,不过是Ext Js而非Touch。我所做的是如下所述:
Play!服务器包含我的逻辑并为我提供Restful URL:
POST   /user/create          AccountController.createUser
GET    /user/userid          AccountController.getUser

使用Sencha,我定义了一个“Store”,它从特定的URL检索“JSON”数据,该URL指向我的Play! urls。

在我的Play方法中,我从数据库中检索一个模型并返回Sencha将解析/读取的JSON:

Query userQry = JPA.em().createQuery("select * from Account");
List<Article> accounts= userQry .getResultList();
renderJSON(accounts);

干杯


你好,好的,这很好。但是如果我也有一个移动应用程序怎么办?那么我也从该应用程序进行相同的函数调用吗? 我使用php和codeigniter制作网站,在其中,我只需在处理后加载视图,使用$this->load->view('view')。那么如何为Web应用程序设计这种东西。或者我可以从视图中拉取数据而不是将数据推送到视图中吗? - aradhya
1
你不应该使用Play的视图,因为EXT JS是你的客户端框架。Play的作用是提供数据,我会使用相同的URL来处理Ext Js和Touch,但显然Sencha Touch将使用相同的数据集生成不同的视图。在大多数情况下,这应该是JSON格式的。因此,你应该制作一个通用的index.html文件,检测设备类型,并根据设备类型加载适当的.js类。但服务器(Play!)将保持不变。 - adis

0

Sencha Touch不适合桌面应用程序。您应该使用Ext.JS构建不同的桌面应用程序。但是,如果您仍然想使用Sencha Touch,则可以按照以下指南为不同设备创建不同的视图。http://docs.sencha.com/touch/2-0/#!/guide/profiles


是的,我知道。我的问题是,如果我要为两个应用程序提供服务,那么我的服务器端逻辑应该怎么样?当我的应用程序加载时,我应该简单地将数据返回到Json格式中,并让前端处理表示 - 在这种情况下,桌面使用ExtJs,移动端使用sencha touch?如果是这样,任何人都可以进行URL调用并获取数据,对吗? 您能指导我如何继续吗? - aradhya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接