学习目标
- 命名并描述开发Web应用程序的两种模型之间的区别。
- 描述使用Visualforce处理构建Web应用程序的两种不同方式。
- 使用Visualforce或Lightning组件描述构建Web应用程序的优势和折衷。
- 列出至少三种不同的使用Lightning组件或Visualforce的方案。
提高Web应用程序用户界面的性能
在过去十年或更长的时间里,我们都看到了不断提高Web应用程序的用户体验。用户希望能够在触手可及的情况下获得响应式,功能齐全,高度互动的身临其境的体验。
我们首先在单一用途的应用程序中看到这一点Google地图等服务引入了用户界面元素的直接操作。分析应用程序带来了动态的交互式图表下钻。当用户输入无效的数据,动画,转换等时,即使是不起眼的注册或登录形式也会带有动态的错误反馈。交互性不再是新鲜事物,这是常态。
规模已经扩大。单个组件的期望已经迅速扩展到核心应用程序体验。今天,Web应用程序具有滑动菜单,动画页面转换和动态主控细节等功能。还有应用程序样式的元素,如覆盖和模式窗口。原生应用程序和Web应用程序之间的差异从来没有变小。
那么这对Salesforce意味着什么呢?
传统的Salesforce体验被称为Salesforce Classic,是以页面为中心的Web应用程序模型的一个示例。对于基本功能来说,这非常棒,但是提供用户所期望的新的,更加动态的体验是一项挑战。从根本上说,这是因为它每次与应用程序交互时都依赖于服务器生成一个新页面。
为了提供更多的互动体验,您需要客户端的JavaScript帮助。在这个以应用程序为中心的新模型中,JavaScript被用来创建,修改,转换和动画用户界面,而不是一次完全替换一个页面。这个模型是令人兴奋的,互动的,流畅的。这是新的闪电体验。
以页面为中心的模型和以应用为中心的模型都在这里。快速浏览Web足以证明大多数Web应用程序都利用了这两种方法。结合这些模型,应用程序可以为正确的用例提供正确的体验类型。
让我们花一些时间来探索Salesforce Platform为这些模型提供的不同选项。
Classic Visualforce
Visualforce是构建以页面为中心的应用程序的强大成熟平台。 Visualforce框架提供了一组强大的标签,这些标签在服务器上解析,并与标准或自定义控制器一起使用,以使数据库和其他操作易于实现。
- UI 生成
- 服务器端
- 数据和业务逻辑
- Apex标准或自定义控制器
- 工作流程
-
- 用户请求一个页面
- 服务器执行页面的底层代码,并将生成的HTML发送到浏览器
- 浏览器显示HTML
- 当用户与页面交互时,返回到第一步
- 优点
-
- 尝试和真正的模型
- 易于实现更高的生产力
- 将大型应用程序自然地分割成小的,可管理的页面
- 具有内置的元数据集成
- 注意事项
-
- 有限的交互性(除了增加的JavaScript功能)
- 更高的延迟,降低移动性能
Visualforce在概念上类似于其他以页面为中心的技术,如PHP,ASP,JSP和Ruby on Rails。 Salesforce丰富的元数据基础架构使Visualforce成为高效的解决方案。标准的控制器可以很容易地直接访问对象,并通过关系而不需要执行一个查询。其他元数据感知组件类似的即插即用:添加标记到一个页面,你就完成了。这些功能在平台上依然存在,并且仍然适用于许多用例。
Visualforce作为JavaScript应用程序容器
当您考虑它时,Visualforce页面只是HTML页面,服务器解析了额外的标签。因此,您可以使用一个空的Visualforce页面作为JavaScript应用程序的容器。在这种情况下,您不使用Visualforce标记来构建您的用户界面。相反,您将您的JavaScript应用程序加载到空白页面中。然后用户界面由JavaScript应用程序在客户端生成。这些应用程序通常被称为单页面应用程序或SPA,通常使用第三方框架(如AngularJS或React)构建。
- UI 生成
- 客户端(主要是JavaScript)
- 数据和业务逻辑
- 远程对象或JavaScript Remoting,Apex控制器
- 工作流程
-
- 用户请求包含页面框架和JavaScript包含的“空白”Visualforce页面
- 该页面被返回到浏览器
- 浏览器加载JavaScript应用程序
- JavaScript应用程序生成UI
- 当用户与应用程序交互时,JavaScript会根据需要修改用户界面(返回上一步)
- 优点
-
- 实现高度互动和身临其境的用户体验
- 注意事项
-
- 复杂
- 没有内置的元数据集成
- 缺乏集成的开发人员经验。 Force.com开发者控制台不明确支持这些JavaScript应用程序。通常情况下,你必须将它们作为静态资源加载,这是一个繁琐的经验。
我们想清楚。如果你能忍受我们所描述的警告,那么今天就构建交互式应用程序是一个非常好的方法。这就是我们最初构建远程对象和JavaScript远程处理等工具包的原因。如果您是一个有信心的AngularJS或React或其他JavaScript框架开发人员,那么您的专业知识将为您带来所需的工具,为Salesforce开发应用程序。
但是,如果你愿意接受新的东西,我们认为我们对于基于网络的应用程序开发的下一个层次有一些很好的想法。
Lightning 组件
Lightning组件是用于为桌面设备和移动设备开发动态Web应用程序的新的Salesforce用户界面框架的一部分。他们在客户端使用JavaScript,在服务器端使用Apex来提供数据和业务逻辑。
- UI 生成
- 客户端(JavaScript)
- 数据和业务逻辑
- Lightning Data Services,Apex控制器
- 工作流程
-
- 用户请求应用程序或组件
- 应用程序或组件包被返回给客户端
- 浏览器加载该包
- JavaScript应用程序生成UI
- 当用户与页面交互时,JavaScript应用程序根据需要修改用户界面(返回上一步)
- 优点
-
- 实现高度互动和身临其境的用户体验
- 与Salesforce用户界面策略保持一致
- 建立在元数据的基础上,加快发展
- Force.com IDE和开发者控制台都支持Lightning组件,提供了集成的开发者体验
- 注意事项
-
- 与Visualforce相比,更陡峭,学习曲线更长
- 比Visualforce更高的复杂性 – 你正在构建一个应用程序,而不是一个页面
- 由于Lightning组件是新的,所以仍然有一些功能不被支持
- 有一些开箱即用的组件
我们需要与你直接相处。这些警告是不小的考虑。我们将会谈谈他们如何适用于您的组织。但!我们正在努力 – 真的很努力 – 减少这些考虑的大小。我们非常激动,尽快为您带来改进。
为工作选择合适的工具
Visualforce已经有一段时间了,它是一个成熟的,很好理解的构建应用程序的平台。它不会消失。闪电组件是块上的新生儿。它有很多事情要做,但是,你知道的。你现在对你来说是陌生人。
这是事情:你不必选择一个或另一个。
将以页面为中心和以应用程序为中心的模型看作是开发工具中的工具 – 一个并不总是比另一个好,如果你了解自己的优势和权衡,你就能从中获得最大收益。使用正确的工具来完成手头的工作。
这里有一些指导方针可以帮助你决定 – 但是请记住,你是决定者。最后,使用感觉正确的工具。另外,请记住,工具的发展。这些指导方针也将发展。
工作 | 建议 |
---|---|
我正在开发闪电体验 | 我们强烈推荐Lightning组件。 Lightning组件搭建了闪电体验,两人手和手套配合在一起。 如果您有现有的代码或正在进行的项目,您当然可以使用Visualforce。完全支持Visualforce for Lightning Experience,但有一些限制。 但是,对于Lightning Experience,您找不到比使用母语Lightning Components更好的工具。 |
我正在开发Salesforce Mobile应用程序 | 我们推荐Lightning组件。 Visualforce特性,特别是以页面为中心的方向,对于有限的高延迟网络连接和有限的计算资源的移动应用来说可能是一个糟糕的结果。相比之下,Lightning组件专为处理这种情况而设计。 Visualforce和Lightning组件都使用类似的基于标记的标记。例如,输入字段的Visualforce标记是<apex:inputText>,而Lightning组件是<lightning:input>。 那有什么区别?那么,Visualforce会在Salesforce服务器上处理标记代码。 Lightning Components在客户端处理标记。客户端处理的优点是整个页面的HTML块不会在客户端和服务器之间来回传递。 除少数例外,Lightning组件更适合Salesforce移动开发。有些情况下需要Visualforce作为JavaScript应用程序。有关更多信息,请参阅“Lightning组件开发者指南”。 |
我正在用有限的客户端逻辑构建一个以页面为中心的体验 | 使用Visualforce页面来确保开发速度和可管理性。 |
我正在使用JavaScript构建交互式体验以满足用户体验要求 | 使用Lightning组件,但首先参考限制文件。 |
我致力于JavaScript框架,如AngularJS或React | 将Visualforce页面用作第三方框架(如AngularJS或React)和您的应用程序的容器。 |
我正在启用非开发人员通过组装标准组件或自定义组件来构建应用 | 程序使用Lightning组件来创建可在Lightning App Builder中使用的自定义组件。 |
我使用JavaScript构建交互式体验,我需要第三方框架 | 将Visualforce页面用作第三方框架(如AngularJS或React)和您的应用程序的容器。 |
我添加用户界面元素 | 例如,假设你想添加一个标签到一个记录家里。这个任务是一个简单的拖放在Lightning应用程序生成器。使用Lightning组件创建自定义用户界面元素。 |
我正在为客户建立一个社区 | 使用社区生成器,利用Lightning组件创建一个基于Lightning的社区。 |
我正在为合作伙伴建立一个社区 | 使用社区生成器,利用Lightning组件创建一个基于Lightning的社区。 |
我正在揭露面向公众的未经认证的网站 | 使用社区生成器,利用Lightning组件创建基于Lightning的网站。 |
我在我的应用程序中将页面呈现为PDF | 使用Visualforce。 Lightning组件不支持渲染为PDF输出。 |
我使用大量Visualforce页面添加到现有项目继续使用Visualforce。 | 考虑使用Lightforce组件为Visualforce机会性地移动元素到Lightning组件。 |
我致力于投资最新的技术 | 你跟我们在一起! 潜入闪电组件。 从Lightning Components Basics Trailhead模块开始。 |
我正在开始一个全新的项目 | 使用闪电组件。 如果你不熟悉他们,现在没有比现在更好的时间学习了! |
为您的组织选择正确的工具
角色 | 建议 |
---|---|
ISV合作伙伴 | 开始在新应用程序中使用Lightning组件或在现有应用程序中使用新功能。在Salesforce Classic和Lightning Experience中将这些单位打包供订户使用。 |
SI | 开始使用Lightning组件进行新的实现。对于正在进行的实施,请继续使用Visualforce。 |
专业开发人员谁是JavaScript的大师和Visualforce的经验 | 继续使用您的首选JavaScript框架使用Visualforce。探索闪电组件,并考虑切换线路。 |
公民使用标准的Visualforce组件的开发人员页面 | 继续使用Visualforce,但考虑检查Lightning App Builder。 |
指向并点击管理员 | 使用Lightning App Builder创建应用程序和自定义。与开发人员和合作伙伴联手构建自定义的Lightning组件。 |
迁移到闪电组件
这是个好消息。尽管转向Lightning Experience并加大了对Lightning组件的关注,但您的Visualforce页面仍然适用于Salesforce。无论您使用的是新界面,还是您的老朋友Salesforce Classic-Visualforce都可以使用这两个界面。您不必将任何现有的Visualforce页面转换为长时间使用它们。
但是,由于Web应用程序正在更多地利用以应用程序为中心的模式,因此我们鼓励所有Salesforce开发人员至少了解Lightning组件的基本知识。您将要在将来的开发工作中使用这些组件。
现在是您迈出第一步的最佳时机。用于Visualforce的Lightning App Builder和Lightning Components等功能可让您“将脚趾浸入水中”,并尝试在新页面或现有页面中使用Lightning组件。您可以在Lightning Experience和Salesforce Classic中使用这些嵌入式组件。这很容易,你会坚持不要试一试。
我们知道,迁移到新的开发框架是令人生畏的。但我们在这里为你。这条线索加载了您需要成功采用Lightning Experience开发的所有技巧,技巧和陷阱。