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

Ume*_*utt 2 architecture asp.net jquery webforms angularjs

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

  1. ASP.NET Web窗体
  2. AJAX
  3. jQueryValidationEngine - 用于验证
  4. jqGrid - 用于数据网格
  5. jqTemplate - 用于HTML模板
  6. i18Next - 用于本地化
  7. jEditable - 用于内联编辑
  8. 几个jQuery插件(用于Widgets/jQuery UI Autocomplete的dateTime选择器控件/ inettuts).

一开始我们对所有这些插件和东西都非常满意,但是随着应用程序的不断增长,所有代码变得非常混乱(每页上都有很多jQuery选择器/代码)并且没有正确的模式被跟踪 - 结束发展.
现在,我们决定投入一些时间来改进应用程序并清理一些东西.我们已经完成了初始RnD并计划继续使用AngularJS,但我们不打算将它变成SPA(因为它是一个具有一些大数据和安全问题的企业应用程序).我们只想排除所有上面提到的依赖库,并为所有这些使用单个AngularJS并分离我们的HTML/CSS/Javascript(这将使其更易于维护).

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

谢谢.

Jos*_*osh 13

我在一家咨询公司工作,目前正在使用Angular.js构建一个大型企业应用程序,我可以毫不含糊地说Angular非常适合企业.

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

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

客户:
Angular.js
剑道UI
Underscore.js

Angular Stats:
控制器:213
服务:59
指令:130

试图涵盖我们使用的每一项技术都需要很长时间,但我会给你几个我认为是我们成功关键的重要领域.

打字稿

TypeScript是我们成功的重要组成部分.早期我们使用的是vanilla JS,并依赖于模块和Require.js等可靠的实践来保持可维护性.然而,随着团队规模的扩大,我们开始踩到彼此的脚趾.

移动到TypeScript为我们提供了必要时我们需要的预处理器类型检查.由于TypeScript是一套超级JavaScript,我们仍然可以在必要时编写vanilla JS,但添加的类型信息和环境工具可以大大提高生产力.

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

混合SPA

由于大多数企业应用程序有许多不同的领域,因此我们尝试将其全部推送到SPA中是不现实的.但是,我们也不想为每个屏幕执行整页重新加载.

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

资源管理

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

ASP.Net捆绑包对我们很有用,我们还添加了一些智能来自动为我们构建我们的个人页面捆绑包.

安全

在许多企业应用程序中,安全性和用户管理往往非常微妙.我们有一些非常复杂的安全要求,最初将它们用于SPA是一个值得关注的问题.

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

Angular的优点是它可以非常容易地使用特殊行为进行扩充.最后,在加载视图之前,我们最终利用了resolve属性$routeProvider来加载用户的privelages.路由看起来像这样:

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

resolve实际上是动态添加,而是一个值得整个博客文章.最终结果是,如果用户没有相应的权限来查看应用程序的该区域,我们可能会失败路由并采取操作.

同样,这纯粹是装饰性的,因为所有安全检查都是在服务器上完成的,但如果用户没有权限,它确保应用程序保持良好且一致,以便能够显示"无法访问"视图.

结论

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