jquery - 在企业应用程序中使用 angularJS 而不是(jquery + jqTemplate+jqValidationEngine+jqGrid)

标签 jquery asp.net angularjs architecture webforms

我们开发了使用以下技术的企业应用程序:

  1. ASP.NET Web 表单
  2. AJAX
  3. jQueryValidationEngine - 用于验证
  4. jqGrid - 用于数据网格
  5. jqTemplate - 用于 HTML 模板
  6. i18Next - 用于本地化
  7. jEditable - 用于内联编辑
  8. 几个 jQuery 插件(日期时间选择器控件/小部件的 inettuts/jQuery UI 自动完成)。

一开始我们对所有这些插件和东西感到非常满意,但是随着应用程序的不断增长,所有代码变得非常困惑(每个页面上都有很多 jQuery 选择器/代码)并且没有遵循正确的模式用于前端开发。
现在,我们决定投入一些时间来改进应用程序并清理一些东西。 我们已经完成了初步的 RnD,并计划转向 AngularJS,但我们不会将其做成 SPA(因为它是一个企业应用程序,也存在一些大数据和安全问题)。我们只想排除所有上述依赖库,并使用单个 AngularJS 来实现所有这些,并分离我们的 HTML/CSS/Javascript(这将使其更易于维护)。

我们做出的决定正确吗?迁移到 AngularJS 是一个好的选择吗?我们应该限制开发人员遵循一些特定的模式(例如模块模式)进行前端开发?
如果您有相关经验,请建议更好的选择。

谢谢。

最佳答案

我在一家咨询公司工作,该公司目前正在构建一个庞大的 enterprise application using Angular.js ,我可以明确地说 Angular 非常适合企业。

我们的堆栈概要以及 Angular 应用程序的大小:

服务器:
ASP.Net MVC
ASP.Net WebAPI

客户:
Angular.js
剑道用户界面
下划线.js

Angular 统计:
Controller :213
服务:59
指令:130

试图涵盖我们使用的每一项技术会花费太长时间,但我会向您介绍几个我认为是我们成功的关键的重要领域。

typescript

TypeScript 是我们成功的重要组成部分。早期我们使用 vanilla JS,并依靠模块和 Require.js 等可靠实践来保持事物的可维护性。然而,随着团队规模的扩大,我们开始互相踩踏。

转向 TypeScript 为我们提供了必要时所需的预处理器类型检查。由于 TypeScript 是 JavaScript 的 super 集,因此我们仍然能够在必要时编写普通 JS,但添加的类型信息和环境工具极大地提高了生产力。

另一个好处是 TypeScript 基于 ES6,因此它可以帮助我们使代码向前兼容。

混合 SPA

由于大多数企业应用程序都有许多不同的领域,因此我们尝试将其全部插入 SPA 中是不现实的。但是,我们也不希望对每个屏幕进行整页重新加载。

我们的最终解决方案是对管理员、用户等主要区域进行全页面刷新...并且每个区域都有自己的 Angular 模块并充当 SPA。我们将其称为混合 SPA,因为它就像一堆小 SPA 形成一个有凝聚力的整体。

资源管理

最初我们使用 Require.js,但我们选择使用 ASP.Net Bundler。这并不是对 Require 的打击,而是我们不想与我们正在使用的堆栈作斗争。

ASP.Net bundler 非常适合我们,我们还添加了一些智能功能来自动为我们构建单独的页面 bundle 。

安全

在许多企业应用程序中,安全性和用户管理往往非常微妙。我们有一些相当复杂的安全要求,最初将它们纳入 SPA 中有点令人担忧。

显然我们的后端服务都被锁定了,但是前端呢?

Angular 的好处在于它可以非常轻松地通过特殊行为进行增强。最后,我们最终利用 $routeProvider 上的 resolve 属性在加载 View 之前加载用户的权限。路由如下所示:

.when('/foo/bar', {
   templateUrl: '/users/view',
   controller: 'UsersCtrl',
   permissions: ['usersView','usersEdit'],
   resolve: checkUserPermissions
});

resolve 实际上是动态添加的,但这值得写一整篇博客文章。最终结果是,如果用户没有查看应用程序该区域的适当权限,我们可以使路由失败并采取操作。

同样,这纯粹是装饰性的,因为所有安全检查都是在服务器上完成的,但它确实使应用程序保持良好和一致,以便在用户没有权限时能够显示“无访问” View 。

结论

Angular.js 非常适合企业应用程序,事实上,与使用更传统的 Web 堆栈相比,它可以帮助您提供更好的体验。

关于jquery - 在企业应用程序中使用 angularJS 而不是(jquery + jqTemplate+jqValidationEngine+jqGrid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23081325/

相关文章:

javascript - 每次调用 subview 时都会实例化父 Controller

javascript - 在 ng-repeat angularJS 中仅隐藏和显示每个对象的输入字段

javascript - 如何将值从客户端发送到服务器端以进行服务器端处理

JQuery - 自动推进 radio 输入 "checked"

javascript - 如何删除未保存的事件?

ASP.NET MVC 2 - 如何使用 IgnoreRoute 忽略整个目录?

c# - 来自字符串帮助的日期。我可以转换成我想要的字符串,但我无法转换回来

c# - selenium ie webdriver 没有我的用户配置文件

angularjs - setTimeout NodeJS性能

javascript - 使用 Express 从本地主机获取数据/将数据写入本地主机