- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们开发了使用以下技术的企业应用程序:
一开始我们对所有这些插件和东西感到非常满意,但是随着应用程序的不断增长,所有代码变得非常困惑(每个页面上都有很多 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 是我们成功的重要组成部分。早期我们使用 vanilla JS,并依靠模块和 Require.js 等可靠实践来保持事物的可维护性。然而,随着团队规模的扩大,我们开始互相踩踏。
转向 TypeScript 为我们提供了必要时所需的预处理器类型检查。由于 TypeScript 是 JavaScript 的 super 集,因此我们仍然能够在必要时编写普通 JS,但添加的类型信息和环境工具极大地提高了生产力。
另一个好处是 TypeScript 基于 ES6,因此它可以帮助我们使代码向前兼容。
由于大多数企业应用程序都有许多不同的领域,因此我们尝试将其全部插入 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/
我们开发了使用以下技术的企业应用程序: ASP.NET Web 表单 AJAX jQueryValidationEngine - 用于验证 jqGrid - 用于数据网格 jqTemplate - 用
我是一名优秀的程序员,十分优秀!