Salesforce Lightning 开发(2)

学习目标

完成本单元后,您将能够:

  • 列出至少五个在Lightning Experience中保持不变的Visualforce功能。
  • 在您的Visualforce代码中描述至少两个您需要查看的Visualforce功能。
  • 列出至少两个在Lightning Experience中不起作用的Visualforce功能。
  • 描述Lightning Experience如何影响现有Visualforce页面的视觉设计。

Visualforce和闪电体验

闪电体验是一个全新的世界,我们希望你认为这是令人兴奋的。 Lightning Experience用户界面背后是一种交付Salesforce应用程序的新方法,它会对Visualforce应用程序的运行方式进行重大更改。在大多数情况下,您的Visualforce应用程序应该“只是工作”,但在跳转到Lightning Experience之前,您应该知道一些事情。
Lightning Experience如何建立以及如何运行Visualforce应用程序的技术细节非常酷,对于实际开发工作非常重要。当您准备好了解这些细节时,Visualforce&Lightning Experience模块将为您提供方法。但是在这里我们要保持高水平,把事情分成有效和无效,你想要更新什么,以及其他问题,这些问题将帮助你规划你的Lightning Experience迁移开发工作。

什么工作

Visualforce在Lightning Experience中工作的部分列表相当长。这几乎与整个Visualforce功能列表一样长。所以,在我们找到不在名单上的东西之前,让我们积极地思考一下,并且检查一下你能指望的许多事情。
首先,Visualforce工作的基本机制是一样的。无论您的网页是使用标准控制器,自定义控制器,JavaScript远程处理还是远程对象,与Salesforce的连接工作原理都是一样的。

注意

如果您广泛使用JavaScript,或者如果您使用其他API来访问Salesforce,则可能需要执行一些工作。我们会做到这一点。

其次,Visualforce标记保持不变。 Lightning Experience中有一些标签和属性的表现方式不同,我们建议不要使用这些标签和属性,否则这些属性不起作用。但是,除此之外,您为Visualforce页面和组件编写代码的方式不变。

第三,您可以使用Visualforce自定义您的组织的大多数方式在Lightning Experience中都可以正常工作 – 尽管您无疑可以想象,使用全新的用户界面,这些自定义已移至不同的位置。

让我们稍微介绍一下这些定制的细节。在Lightning Experience中,以下所有工作都很好,只需移动到用户界面的新位置即可。

  • 使用Visualforce页面创建自定义选项卡和应用程序。
  • 创建导向Visualforce页面的自定义按钮和链接。
  • 创建使用Visualforce页面打开的自定义操作。
  • 使用Visualforce页面覆盖标准操作(有一个例外,我们稍后会介绍)。
  • 创建使用Visualforce页面的流程。
  • 打包Visualforce页面和组件。

用户界面的变化从小到大有所不同。使用Visualforce自定义的功能会在用户在Lightning Experience和Salesforce Classic之间切换时自动移动。你可能需要给你的用户一个初始的方向,但在那之后,他们会像蛤蜊一样快乐。
还有其他一些功能,如Visualforce电子邮件模板,在幕后使用Visualforce代码。这些不直接在用户界面中出现,因此它们保持不变。

有关各种功能已移至其中的屏幕截图的详细视图,请参阅Visualforce&Lightning Experience模块中的使用Lightning Experience中的Visualforce单元。

什么工作,但需要更新和测试

Lightning Experience启用时Visualforce页面运行的环境与标准Visualforce请求不同。技术细节变得相当复杂,但简单的版本是在Lightning Experience中,Visualforce页面嵌入在Lightning Experience应用程序内部显示的HTML iframe中。
这种改变有很多后果,主要是JavaScript和访问外部应用程序。在验证您的Visualforce页面以用于Lightning Experience之前,您需要查看您的代码并验证一些内容。我们正在保存Visualforce&Lightning Experience模块的细节。现在,我们只需要进行高级检查,以便开始审查范围。

对于初学者来说,如果您有使用JavaScript的页面或应用程序,则需要查看代码的行为。特别是,你的代码不能直接访问窗口的全局对象。如果您确实需要更改代码,您仍然可以稍微更改代码,但是使用Lightning Experience应用程序API可能有更好的方法来完成这些任务。特别是直接设置window.location的代码,一定要修改才能与Lightning Experience导航栈集成。

同样,假设它能够访问整个环境的代码是一个粗暴的惊喜。它仍然可以访问文档的Visualforce部分,但不能访问完整的Lightning Experience应用程序。对于许多应用程序来说,这样做会很好,但是对于那些想要完全负责的人来说,还是会有一些工作要做。

如果您的页面自己使用iframe,或者使用<apex:iframe>或静态HTML,则嵌入到另一个iframe中可能会导致一些问题。在很多情况下,“海龟一路下来”都很好。只要确保你在这里做额外的测试。

如果您的页面嵌入了Force.com Canvas应用程序,特别是如果您使用Canvas API将应用程序集成到Salesforce中,则还需要分配时间进行彻底测试。画布应用程序使用iframe,而正确的行为代码应该正常工作,我们都知道如何在现实世界中普遍的完美代码。

使用远程对象和JavaScript远程处理的页面不需要更新认证码。但是,如果您的网页使用其他Salesforce API,则可能需要调整您的身份验证代码以提出正确的跨域请求,或者调整到新的环境。

以上所有内容听起来都很模糊而且难以实现,但实际上,您可能需要更改的代码量很小。再次,Visualforce&Lightning Experience模块提供开发人员的详细信息。

什么不行

所以我们来谈谈我们的谈话中不那么愉快的部分。幸运的是,Visualforce for Lightning Experience不起作用的列表很短,我们可以快速完成。
对于可能难以解决的事情,Visualforce覆盖标准操作的最显着的变化可能与Lightning Experience相比略有不同。 Lightning Experience中将无法访问对象列表操作的任何覆盖。
具体而言,您可以在Salesforce Classic中为对象覆盖六个标准操作:

  • Object tab
  • Object list
  • Record view
  • Record edit
  • Record create
  • Record delete

在闪电体验中,前两个动作合并为一个页面,将对象归入主页。对象首页与对象列表类似,添加了对象选项卡的一些元素,例如最近的项目。其他的,如报告或工具,已经转移到用户界面的其他部分。
无论组织中的用户界面设置如何,“对象”选项卡和对象列表都可在“设置”中被覆盖。按照预期,覆盖对象选项卡操作将覆盖Lightning Experience中的对象主页。

但是,在Lightning Experience中,对象列表操作在用户界面中无法访问,因此无法将其解除。如果您的组织已经重写了任何对象的对象列表操作,那么当用户使用Lightning Experience时,该功能将不可用。如果在重写中有必要的功能,则需要找到其他方法使其可用。

在比较小的比例中,当显示在Lightning Experience中时,<apex:page>的showHeader和sidebar属性对Visualforce页面没有影响。标准的Salesforce Classic标题和侧边栏始终处于禁用状态,并且无法取消Lightning Experience标题和侧边栏。

Salesforce Classic中的许多相关列表在Lightning Experience中不受支持。 <apex:relatedList>组件不是解决此限制的方法。不错,尽管!

而且,真正的小问题是,将Visualforce页面呈现为PDF,其工作原理与Salesforce Classic完全一样,没有任何Lightning Experience视觉设计。这可能是你想要的,但是如果你想把页面渲染成包含Lightning Experience设计的PDF文件,那今天是不可能的。

那个外观和感觉的东西

你注意到的关于Lightning Experience的第一件事就是全新的视觉设计。如果您一直在开发Visualforce页面,您的下一个想法可能是,我的Visualforce页面将如何在Lightning Experience中查看。简短的回答是…好吧,让我们坐下来,好吗?
简短的回答是,除了抑制Salesforce Classic标题和边栏以及被Lightning Experience用户界面框住外,Visualforce页面在Lightning Experience中显示不变。

具体而言,当页面显示在Lightning Experience中时,由内置的Visualforce组件呈现的HTML不会更改,并且这些组件使用的Salesforce Classic样式表默认情况下由页面加载。其效果是,使用<apex:inputField>,<apex:outputField>,<apex:pageBlock>组件以及与Salesforce Classic可视化设计相匹配的其他粗糙和精细组件的页面仍然与该可视化设计相匹配。您在Lightning Experience中获得一小部分Salesforce Classic。

但是,如果您使用的是相对没有风格的Visualforce组件,或者使用了自己的组件和标记,并且开发了自己的样式表,而不是使用默认的Salesforce样式,那么页面也显示为不变,保留了您很难开发的样式。

换句话说,在Visualforce for Lightning Experience中,我们倾向于在现有页面的视觉设计中保持稳定性,而不是试图将其动态调整为Lightning Experience。

也就是说,如果你对于新的视觉设计和我们一样兴奋,那么根据你想要投入多少工作,你可以采用这种方式来减小或者减小这个设计。我们不会介绍它在这里,但是有一个完整的单元,理解重要的视觉设计考虑事项,它显示了可能性的范围和用来实现它们的技术。