我需要使用ExtJs编写我的下一个项目.这是一个很好的Javascript lib,但我并不完全理解它背后的想法.以文档页面为例.
我应该用这样的extjs编写我的Web应用程序吗?一页永远不应该刷新,一切都由AJAX完成?
如果到正确的地方可能需要大量"点击"并使用它,如何调试此类应用程序.您无法修复该错误并在浏览器中点击刷新以查看结果.
有什么建议?
我应该用这样的ExtJS编写我的Web应用程序吗?一页永远不应该刷新,一切都由AJAX完成?
您不必像ExtJS文档那样编写应用程序.如果你查看ExtJS的示例页面,你会看到很多HTML与各个页面上的Ext小部件混合在一起.在我的工作中,我有两个不同的应用程序,我正在使用ExtJS,一个是遗留站点,我使用小部件来整理页面,另一个是完整的Web应用程序,只使用ExtJS作为前端.一旦我掌握了它,我肯定更喜欢后者,但学习曲线非常陡峭.
如果到正确的地方可能需要大量"点击"并使用它,如何调试此类应用程序.
这里的关键是模块化您的应用程序.单独构建每个组件并在真空中进行测试.不要陷入困境,认为这必须是包含整个应用程序的巨大JavaScript文件.在大多数Web应用程序中,源有几十个或更多JavaScript文件,这些文件仅用于部署目的.
一个必须进行测试和调试的是firebug.它允许您检查Ajax请求,调试JavaScript实时等等.
这里有一系列关于使用ExtJS编写大型应用程序的文章,这是一个相当不错的阅读,有很多好的信息.
在ExtJS 4 Part1 Part2 Part3中构建示例应用程序
对于ExtJS 3.3及以下 Part1 Part2 Part3
我认为以任何一种方式使用ExtJS都是可以的,如果你刚刚开始使用它可能更有意义的做你最熟悉的东西并在途中添加一些ExtJS'香料'.也就是说,一旦你开始使用它来创建单页应用程序,并且你的后端只输出JSON,你可能永远不会回顾你做网络应用程序的旧方式.
你可以做现代基于AJAX的应用程序所做的事情,并使用URL哈希来深度链接你的应用程序.
Gmail就是一个很好的例子.要进入我的收件箱,我导航到:
https://mail.google.com/mail/?shva=1#inbox
要转到我的联系人管理器,我浏览到:
https://mail.google.com/mail/?shva=1#contacts
这两个"页面"都在同一页面上,导航实际上会在我使用应用程序时将我重定向到不同的页面.哈希是所有改变的.
页面加载时,您需要做的是检查window.location.hash
并使用它来更新应用程序的状态.
我参与了一个建立在以下基础上的复杂项目:
Asp.net 3.5
WCF Web服务
ExtJS 2.1
DAL + DAO的.netTiers(带CodeSmith)
SQL 2005 + OLAP多维数据集(有些不提醒我这个噩梦的变通办法必须在应用程序内完成,因为我们使用了一些第三方控件,部分支持UpdatePanels,这个东西打破了这个基本的处理我们的申请)
现有ExtJS的自定义外观 - 这是ExtJS costumization中最难的部分,所以我建议您坚持使用其中一个提供的主题
我们没有进行实际的单页应用,但确实大大减少了页数.应用程序中的每个工作区域通常都是一个单独的页面.所有接口处理都是使用ExtJS在客户端上完成的,或者是在向ExtJS客户端接口提供数据的WCF服务中的服务器端完成的.
它运作得很好.
我今天可能会改变一件事:我将从Asp.net + WCF迁移到Asp.net MVC.它更适合这种情况.
关于调试,我们广泛使用Firebug(Firefox插件),就像任何其他开发人员一样.
但使用ExtJS库取得了巨大成功.它使得创建类似桌面数据的重型Web应用程序变得容易.对于任何专业的Intranet Web应用程序开发来说,它都是一个很棒的统一库.使用jQuery和它的插件,你总是会被社区提供的那些插件的不同怪癖所遗忘.ExtJS在这方面非常统一,提供了非常好的外观和开箱即用的感觉.