CCD102

Lesson 3: Knowledge Check

课程介绍

同学们,今天我们来聊聊Salesforce中的app_storefront_base和模块的搜索机制。想象一下,你在一个图书馆里找一本书,图书馆有很多书架,每个书架上都有不同的书。在Salesforce中,app_storefront_base就像是一个大书架,里面有很多小模块,这些小模块就像是书架上的书。 当你想要找某个特定的功能或者控制器时,Salesforce会从左到右,一个模块一个模块地搜索,就像你在书架上一本一本地找书一样。它会一直找,直到找到第一个符合你要求的控制器或管道。这个机制的好处是,如果在路径的前面部分找到了你需要的功能,它就不会再继续往后找了,这样可以节省时间,提高效率。 所以,记住,Salesforce在搜索模块时,是从左到右,找到第一个匹配的就停止。这样设计是为了让路径前面的模块可以覆盖后面模块的功能,给了开发者更多的灵活性和控制权。希望这个比喻能帮助大家更好地理解这个概念。

课程章节

本课程共有 24 个章节

  • 1

    Lesson 3: Knowledge Check

    第 43 页

    同学们,今天我们来聊聊Salesforce中的app_storefront_base和模块的搜索机制。想象一下,你在一个图书馆里找一本书,图书馆有很多书架,每个书架上都有不同的书。在Salesforce中,app_storefront_base就像是一个大书架,里面有很多小模块,这些小模块就像是书架上的书。 当你想要找某个特定的功能或者控制器时,Salesforce会从左到右,一个模块一个模块地搜索,就像你在书架上一本一本地找书一样。它会一直找,直到找到第一个符合你要求的控制器或管道。这个机制的好处是,如果在路径的前面部分找到了你需要的功能,它就不会再继续往后找了,这样可以节省时间,提高效率。 所以,记住,Salesforce在搜索模块时,是从左到右,找到第一个匹配的就停止。这样设计是为了让路径前面的模块可以覆盖后面模块的功能,给了开发者更多的灵活性和控制权。希望这个比喻能帮助大家更好地理解这个概念。

    查看详情
  • 2

    Course Roadmap

    第 44 页

    同学们,今天我们来聊聊如何使用Storefront参考架构开发B2C商务云。这个课程路线图会帮助我们一步步掌握关键技能。 首先,我们会从第6课开始,学习ISML、内容插槽和页面设计师。这些工具和概念是构建和定制你的B2C商务云网站的基础。ISML是一种模板语言,用来创建动态的网页内容;内容插槽则允许你在页面的特定位置插入内容;页面设计师则是一个直观的工具,帮助你设计和布局页面。 接下来,我们会过渡到第4课。这一部分会深入探讨如何利用Storefront参考架构来优化你的商务云体验。Storefront参考架构提供了一套最佳实践和设计模式,帮助你快速搭建高效、可扩展的B2C商务平台。 通过这个课程路线图,你将逐步掌握从基础到高级的开发技能,最终能够独立设计和实现一个功能强大的B2C商务云解决方案。让我们一起开始这段学习旅程吧!

    查看详情
  • 3

    Controller

    第 46 页

    让我们来聊聊Salesforce中的控制器。想象一下,控制器就像是店面的“大脑”。每当你在店面中点击一个菜单项或者输入搜索内容时,控制器就开始工作了。它的任务是处理这些请求,管理数据流,并决定接下来应该展示什么内容给用户。 控制器是用JavaScript和B2C商务脚本编写的,这意味着它们非常灵活,可以处理各种复杂的逻辑。为了确保一切运行顺畅,控制器必须遵循CommonJS模块标准,这是一种让代码模块化和易于管理的方式。 控制器的文件通常以“.js”结尾,并且它们必须放在一个特定的文件夹里,这个文件夹通常位于项目的顶层,名为“控制器”。这样做的目的是让系统能够轻松找到并调用这些控制器。 最后,控制器中的输出方法需要被明确地公开出来,这样才能处理来自店面的请求。这就像是告诉系统:“嘿,我准备好了,可以开始处理请求了!” 简单来说,控制器就是确保你的店面能够响应用户操作,并展示正确信息的关键部分。希望这个解释能帮助你更好地理解控制器的作用和重要性!

    查看详情
  • 4

    B2C Commerce Script

    第 47 页

    今天我们来聊聊B2C商务脚本。这个脚本其实是一种用于编写店面网站的服务器端语言。它基于我们熟悉的JavaScript,并且遵循了ECMAScript的标准。具体来说,它实现了ECMA-262和ECMA-357这两个标准,有时候我们也叫它ECMA for English或者E4X。 B2C商务脚本不仅支持所有由Firefox开发的JavaScript语言扩展,也就是JavaScript 1.7,还支持一些可选的类型规范,这些规范来自JavaScript 2.0和ECMA第4版的提案。 那么,B2C商务脚本能做什么呢?它可以帮助我们访问店面网站的数据,比如产品信息、目录和价格等。你可以在控制器、独立脚本以及ISML模板中编写B2C商务脚本,使用标签来嵌入这些脚本。 简单来说,B2C商务脚本就是一个强大的工具,能让我们更灵活地管理和展示网站的数据。希望这个解释能帮助你更好地理解B2C商务脚本的作用和用法。

    查看详情
  • 5

    Controller Code Example

    第 48 页

    让我们来聊聊这段关于控制器代码的说明。首先,想象一下,你有一个数字服务器,它的任务是找到并执行一个特定的控制器。这个控制器就像是一个指挥家,告诉服务器在不同的情况下应该做什么。 当服务器启动时,它会按照一个特定的路径去寻找这个控制器。如果它找到了,就会开始执行控制器开头的所有“Required”语句。这些语句就像是服务器的“购物清单”,告诉服务器需要哪些模块来完成它的工作。这些模块通常存放在一个叫做“MODULES”的文件夹里,这个文件夹和服务器的主程序是平级的。 一旦服务器拿到了这些模块,它就会执行一行代码,这行代码在所有控制器中都会出现,那就是`mode.exports = server.exports()`。这行代码的作用是让服务器知道,它需要注册所有在控制器中使用`server.get`、`server.post`或`server.use`函数定义的路由。简单来说,就是告诉服务器:“嘿,这些是我可以处理的不同请求类型。” 最后,当服务器收到一个请求时,它会查看请求的URI(也就是网址的一部分),然后找到与之匹配的路由,并执行相应的函数。这就像是有人按了门铃,服务器会根据门铃的声音(URI)来决定谁来开门(执行哪个函数)。 所以,总结一下,这段代码说明了一个控制器如何被服务器找到、加载,并且如何根据不同的请求来执行不同的操作。希望这个解释能帮助你更好地理解这个过程!

    查看详情
  • 6

    Server Module

    第 49 页

    同学们,今天我们来聊聊Salesforce的服务器模块。这个模块在Salesforce的架构中扮演着非常重要的角色,特别是在处理网络请求和响应时。 首先,我们来看一个简单的例子,这个例子是用JavaScript写的,位于一个叫做`server.js`的文件中。这个文件通常放在一个叫做“模块盒”的地方,你可以把它想象成一个存放各种工具和功能的工具箱。 在这个`server.js`文件中,我们首先引入了一个叫做`server`的模块。这个模块是Salesforce提供的一个工具,它帮助我们处理网络请求。我们通过`require`函数来引入这个模块。 接下来,我们使用`server.get`方法来定义一个路由。路由是什么呢?简单来说,路由就是当用户访问某个特定的网址时,服务器应该执行什么操作。在这个例子中,我们定义了一个叫做`Show`的路由。当用户访问这个路由时,服务器会执行一个函数,这个函数会返回一个JSON对象,内容是`{ Value: 'Hello World' }`。然后,我们调用`next()`函数,告诉服务器继续执行下一个操作。 最后,我们通过`module.exports`将这个服务器模块导出,这样其他文件就可以使用这个模块了。 这里有几个关键点需要注意: 1. 第一个参数是路由的名称,也就是用户访问的URL端点。 2. 最后一个参数通常是处理这个端点的主函数。 3. 你可以在第一个和最后一个参数之间添加任意数量的参数,每个参数都是一个函数,这些函数会按顺序执行。你可以使用`next()`来继续执行下一个函数,或者使用`next(new Error())`来处理错误。 这个服务器模块位于Salesforce的全局模块文件夹中,它为控制器提供了路由功能。每个控制器都需要这个模块来处理网络请求。 总结一下,服务器模块是一个非常强大的工具,它帮助我们处理HTTP请求和响应,注册路由,并且使用现代JavaScript方法来执行这些操作。希望这个解释能帮助你更好地理解Salesforce的服务器模块。如果有任何问题,随时问我!

    查看详情
  • 7

    Types of Routes

    第 50 页

    让我们来聊聊Salesforce的SFRA控制器中的路由类型。想象一下,你在规划一条路线,决定哪些车辆可以通过,哪些不能。在SFRA控制器中,我们也是这样做的,只不过我们规划的是网络请求的路线。 首先,我们有GET请求。这就像是你去图书馆借书,你只是去拿信息,不会改变任何东西。在SFRA中,你可以设置一个路由,专门响应这种“借书”的请求。 然后,我们有POST请求。这就像是你去图书馆还书,你是在提交一些东西,可能会改变图书馆的库存。同样地,在SFRA中,你也可以设置一个路由,专门处理这种“还书”的请求。 但是,有时候你可能希望一条路线既能借书也能还书,也就是说,既能处理GET请求,也能处理POST请求。这时候,你就可以使用`server.use()`。这就像是在图书馆门口设置了一个多功能通道,无论是借书还是还书,都可以通过这个通道。 总结一下,SFRA控制器中的路由类型就像是图书馆的通道,你可以根据需要设置只借书的通道,只还书的通道,或者一个多功能的通道。希望这个比喻能帮助你更好地理解SFRA中的路由设置。

    查看详情
  • 8

    Add Middleware Functions

    第 51 页

    同学们,今天我们来聊聊如何在Salesforce中处理响应(response)的一些常用方法。这些方法可以帮助我们在开发过程中更好地控制数据的输出和展示。 首先,我们来看一下`res.json`。这个方法的作用是将一个JSON对象打印回屏幕。这在创建AJAX服务端点时非常有用,特别是当你需要从客户端脚本执行某些操作时。简单来说,`res.json`就是把数据以JSON格式返回给前端,前端可以通过JavaScript来处理这些数据。 接下来是`res.setViewData`。这个方法用于更新用于呈现模板的`viewData`对象。你可以把它想象成一个容器,用来存放你希望在模板中使用的数据。如果你需要将多个对象添加到模板的`pdict`(也就是模板的数据字典)中,这个方法就派上用场了。通过`res.setViewData`,你可以轻松地将多个数据对象传递给模板。 然后是`res.render(templateName, data)`。这个方法的作用是将ISML模板输出回客户端,并将数据分配给`pdict`。ISML是Salesforce中的一种模板语言,类似于HTML,但更加强大。通过`res.render`,你可以指定使用哪个模板来展示数据,并将数据传递给模板。这样,模板就可以根据这些数据动态生成HTML内容了。 最后,我们来看一下`res.getViewData`。这个方法用于从响应对象中获取当前的`viewData`对象。如果你在某个地方设置了`viewData`,但需要在其他地方使用它,就可以通过`res.getViewData`来获取这个对象。 总结一下,`res.json`用于返回JSON数据,`res.setViewData`用于设置模板数据,`res.render`用于渲染模板并传递数据,而`res.getViewData`则用于获取当前的模板数据。这些方法在Salesforce开发中非常常用,掌握它们可以帮助你更好地控制数据的展示和交互。 希望这些解释对你们有帮助!如果有任何问题,随时问我哦。

    查看详情
  • 9

    Get Ready to Code

    第 52 页

    同学们,今天我们来聊聊如何在Salesforce中高效地完成我们的任务。首先,我们需要准备好我们的代码,这就像是我们去旅行前要打包行李一样重要。我们要在`app_custom_executive`这个文件夹中找到入门文件,并仔细阅读里面的评论。这些评论就像是地图上的标记,会指引我们如何前进。 接下来,我们会在`app_custom_solutionses`文件夹中寻找解决方案文件。如果遇到难题,不要害怕,我们可以寻求帮助。记住,团队合作是解决问题的关键。 现在,让我们按照步骤来:第一步,第二步,第三步。编写解决方案时,我们可以参考文档或者使用快速卡来获取支持。这些资源就像是我们的工具箱,里面有我们需要的所有工具。 最后,我们可以查看基础或插件中的功能,这些功能就像是我们的瑞士军刀,多功能且实用。 教师在这里提醒我们,这页幻灯片为我们设定了课堂练习的期望。快速卡可以在培训文件夹中找到,它们是我们快速学习和复习的好帮手。 记住,学习Salesforce就像是一场冒险,我们需要准备好我们的工具,跟随地图,一步步前进。不要害怕遇到困难,因为每一次挑战都是成长的机会。让我们一起开始这段旅程吧!

    查看详情
  • 10

    Demo: Testing Controllers

    第 53 页

    同学们,今天我们来学习如何在Salesforce中测试控制器。这个过程其实很简单,跟着我一步步来就可以了。 首先,我们需要进入业务经理界面。在这里,你会看到一个叫做“网站”的选项,点击它。接着,你会看到一个标签叫做“Storefront”,点击这个标签,它就会打开一个网站。 现在,注意看浏览器的地址栏,你会看到一串网址。我们需要做的是,把这串网址中的控制器路由部分替换成你想要测试的控制器路由。这样,你就可以直接测试这个控制器的功能了。 简单吧?记住,测试控制器是确保你的应用按预期工作的重要步骤。如果你有任何疑问,随时提问哦!

    查看详情
  • 11

    Anatomy of a Controller URL

    第 54 页

    让我们来聊聊这个URL的结构和它背后的含义。想象一下,你正在网上购物,想要找一台电视。你输入了一个网址,这个网址不仅仅是一个简单的地址,它实际上包含了很多信息,告诉网站你想要什么。 首先,我们来看这个URL的开头部分:`https://zztr-035.sandbox.us02.dx.commercecloud.salesforce.com/`。这部分是网站的基础地址,就像是你家的门牌号,告诉浏览器你要去哪个网站。 接下来是`/demandware.store/Sites-RefArch-Site/en_US/Search-Show?`。这部分是网站的路径,它告诉网站你要访问的是哪个部分。在这里,`Sites-RefArch-Site`可能是一个特定的商店或品牌,`en_US`表示这个页面的语言是美式英语,`Search-Show`则意味着你要进行搜索。 然后我们看到`q=电视⟨=en_us`。这部分是查询参数,`q=电视`表示你搜索的关键词是“电视”,`lang=en_us`再次确认了语言设置。 所以,整个URL就像是一个详细的指令,告诉网站:“嘿,我要在美式英语的RefArch商店里搜索电视。” 讲师在这里特别提到,当使用Legacy SEO URL进行开发时,这种URL结构可以帮助开发者轻松地从URL中提取信息。但是,为了使用这种URL,必须禁用基于规则的店面URL。这意味着网站不能使用更现代的、基于规则的URL结构,而是需要使用这种更传统的、包含更多信息的URL结构。 希望这个解释能帮助你理解URL的结构和它在网站开发中的作用。如果你有任何问题,随时问我!

    查看详情
  • 12

    General Troubleshooting

    第 58 页

    同学们,今天我们来聊聊一般故障排除的清单。这个清单就像是我们解决电脑问题的小助手,帮助我们一步步找到问题所在。 首先,我们要确保所有的卡带都放在卡带文件夹里。这就像是我们把所有的工具都放在工具箱里,用的时候就不会找不到。 接下来,我们要检查一下dw.json文件,它应该位于根文件夹中,并且里面的信息要准确无误。这就像是我们检查地图,确保我们走的路是对的。 然后,我们要确认卡片正在上传到服务器。这就像是我们把信件投进邮筒,确保它能被送到目的地。 我们还要检查目标和活动版本目录是否匹配。这就像是我们确认我们的目的地和我们的行程表是一致的。 磁带路径名称也要正确,这就像是我们确保我们的地址是正确的,这样快递员才能找到我们。 生存时间为0并且启用页面缓存已禁用,这就像是我们确保我们的食物是新鲜的,没有过期。 网站已被编入索引,这就像是我们确保我们的店铺在地图上被标记出来,顾客才能找到我们。 最后,执行前保存并正确输入URL,这就像是我们出发前检查一下我们的行李和车票,确保一切准备就绪。 记住,这个清单是我们解决故障的好帮手,按照它一步步来,问题就能迎刃而解。好了,今天的课就到这里,希望大家都能成为故障排除的小能手!

    查看详情
  • 13

    Join Me 4-3: Troubleshoot with the Request Log Tool

    第 59 页

    同学们,今天我们来聊聊如何使用Salesforce的请求日志工具。这个工具非常有用,特别是当你遇到店面上的一些错误消息时,它可以帮助你快速找到问题的根源。 首先,你需要进入业务管理器,然后点击店面链接,这样就能打开你的沙箱店面。在店面的左上角,你会看到一个叫做“Storefront Tools”的下拉菜单。点击它,然后选择“请求日志”。 这时候,一个名为“请求日志”的窗口就会弹出来。这个窗口会显示你当前会话期间最后一个请求的日志,以及之前的一些请求日志。你可以在这里查看调试信息和错误信息,这对于排查问题非常有帮助。 如果窗口显示的是登录屏幕而不是请求日志,别担心,这很正常。你只需要输入你的Business Manager登录凭据,然后关闭窗口,再试一次就可以了。 记住,这个请求日志工具是Storefront工具包的一部分,适用于所有的实例,除了生产环境。所以,在你调试和测试的时候,这个工具会非常有用。 希望这个简单的介绍能帮助你们更好地理解和使用请求日志工具。如果有任何问题,随时提问哦!

    查看详情
  • 14

    Debug Scripts and Controllers

    第 60 页

    同学们,今天我们来聊聊Salesforce中的收件箱和控制器,以及如何使用Visual Studio Code的Prophet调试器来调试我们的代码。 首先,收件箱在Salesforce中通常指的是一个用来接收和处理电子邮件的地方。你可以把它想象成你的电子邮件客户端,比如Outlook或者Gmail,但它是集成在Salesforce平台内部的。这样,你就可以直接在Salesforce中处理与客户或潜在客户的邮件往来,非常方便。 接下来是控制器。在Salesforce中,控制器是Apex代码的一部分,它负责处理页面的逻辑。你可以把控制器想象成一个指挥家,它告诉页面上的各个元素该如何行动和响应。比如,当用户点击一个按钮时,控制器就会决定接下来该做什么。 现在,我们来谈谈如何使用Visual Studio Code的Prophet调试器。Prophet是一个强大的工具,它可以帮助你调试Salesforce的Apex代码。你可以在Visual Studio Code中安装Prophet插件,然后通过它来设置断点、查看变量值、单步执行代码等等。这样,你就可以更轻松地找到代码中的问题,并进行修复。 安装Prophet插件非常简单,你只需要打开Visual Studio Code,然后在扩展市场中搜索“Prophet”,找到后点击安装即可。安装完成后,你就可以开始使用它来调试你的Salesforce代码了。 最后,如果你需要更多的说明或者帮助,可以访问这个链接:https://marketplace.visualstudio.com/items?itemName=SqurTT.prophet。这里有很多关于Prophet的详细信息和教程,可以帮助你更好地使用这个工具。 好了,今天的课程就到这里。希望你们对Salesforce的收件箱、控制器以及如何使用Prophet调试器有了更深入的了解。如果有任何问题,随时提问哦!

    查看详情
  • 15

    superModule

    第 62 页

    让我们来聊聊这段代码和它的功能。首先,这段代码是在JavaScript环境中运行的,特别是它使用了Node.js的一些特性。 1. ,使用严格模式,:代码开头有`"use strict";`,这是JavaScript的严格模式。它帮助开发者避免一些常见的错误,比如未声明的变量。简单来说,它让代码更安全、更规范。 2. ,引入服务器模块,:`var server = require('server');` 这行代码的意思是引入一个名为`server`的模块。这个模块可能是用来处理HTTP请求的,比如创建一个web服务器。 3. ,使用超级模块,:`var page = mode.superMode;` 这里,`mode.superMode`可能是一个特殊的模块或对象,它提供了一些扩展功能。`superMode`可能是一个包含额外路由或功能的模块。 4. ,扩展服务器对象,:`server.extend(page);` 这行代码的作用是使用`page`对象中的内容来扩展`server`对象。这意味着`server`现在拥有了`page`中定义的所有路由或功能。 5. ,继承功能,:接下来的部分提到了从与磁带路径右侧同名的下一个控制器继承功能。这听起来有点复杂,但简单来说,它可能是指从某个路径下的控制器中继承功能。这个控制器可能与当前处理的请求路径有关。 6. ,使用超级模块中的控制器,:代码还提到了使用`module.superModule`找到的同名控制器的新路由列表来扩展现有的服务器对象。这意味着,如果`superModule`中有一个与当前路径匹配的控制器,它的路由会被添加到`server`中。 7. ,API导入功能,:最后,定义部分提到了API从第一个控制器导入功能,这个控制器与当前磁带路径上的某个位置同名。这可能意味着,如果路径匹配,API会自动导入并应用该控制器的功能。 总结一下,这段代码的主要目的是通过`superMode`和`superModule`来动态地扩展和增强`server`对象的功能。它允许开发者从不同的模块或控制器中继承和添加路由,使得服务器能够处理更多的请求类型。这种方法在构建大型应用时非常有用,因为它可以帮助组织代码,使其更加模块化和可维护。

    查看详情
  • 16

    Ways to Extend a Route

    第 63 页

    让我们来聊聊B2C Commerce中扩展路线的方法。想象一下,你正在一条磁带路径上行走,这条路径上有很多磁带,每个磁带都代表一个模块。当你走到某个磁带时,B2C Commerce会开始在这个磁带之后搜索其他磁带。它只会搜索那些与当前模块同名并且位于相同位置的模块。 这里有个关键点:B2C Commerce会跳过当前磁带之前的磁带,也会跳过当前磁带本身,只会在当前磁带之后继续搜索。它会一直搜索,直到找到匹配的模块。如果找不到匹配的模块,那么`mode.superMode`就会返回空值。 现在,说到添加现有路线时,你需要特别小心。如果你在现有路线中添加了一个步骤,那么无论这个新步骤做什么,现有的中间件链都会被执行。这意味着,这条路线可能会被执行两次。想象一下,如果这条路线调用了网络服务或者更新了第三方系统,比如库存管理系统,那么同样的操作可能会被重复执行两次,这显然不是我们想要的。 所以,当你扩展路线时,一定要仔细考虑这些影响,确保不会因为重复执行而带来不必要的麻烦。希望这个解释能帮助你更好地理解B2C Commerce中的路线扩展方法。

    查看详情
  • 17

    Prepend and Append

    第 64 页

    今天我们来聊聊在Salesforce开发中,如何使用`server.prepend`和`server.append`这两个方法来修改路由。这两个方法可以帮助我们在处理请求时,添加一些额外的逻辑,比如在用户登录前后执行一些操作。 首先,我们来看一下`server.prepend`。这个方法允许我们在执行原始路由之前,插入一些自定义的逻辑。比如说,你可以在用户登录之前,检查一下他们的账户状态,或者记录一些日志信息。使用`server.prepend`时,你定义的函数会在原始路由逻辑之前执行。这样,你就可以确保在用户登录之前,所有的前置条件都已经满足了。 接下来是`server.append`。这个方法则是在原始路由逻辑执行完之后,再执行你定义的函数。比如说,你可以在用户登录成功之后,发送一封欢迎邮件,或者更新一些用户数据。使用`server.append`时,你定义的函数会在原始路由逻辑之后执行,这样你就可以在用户登录成功后,进行一些后续的操作。 不过,需要注意的是,如果你正在与Web服务或第三方系统交互,最好不要使用`server.append`。因为`server.append`会导致路由同时执行原始中间件链和任何附加步骤,这可能会引起一些不必要的复杂性或错误。 总结一下,`server.prepend`和`server.append`是两个非常有用的工具,可以帮助我们在处理请求时,添加一些额外的逻辑。`server.prepend`用于在原始路由之前执行,而`server.append`用于在原始路由之后执行。希望这些信息对你们有所帮助,如果有什么问题,随时问我哦!

    查看详情
  • 18

    Query String

    第 66 页

    让我们来聊聊这个关于查询字符串参数的话题。首先,查询字符串是URL中一个非常重要的部分,它通常跟在问号(?)后面,用来传递数据给Web应用程序或者后台数据库。比如,你可能会看到这样的URL:`http://example.com/page?name=John&age=30`,这里的`name=John&age=30`就是查询字符串。 在Salesforce的Storefront参考架构中,查询字符串是通过`req`参数来解析的。`req`是一个对象,它包含了请求的所有信息,包括查询字符串。具体来说,`req.querystring`就是用来存储这些查询字符串参数的对象。 举个例子,如果你有一个查询字符串`?productId=12345&color=red`,那么在`req.querystring`对象中,你可以通过`req.querystring.productId`来获取`12345`,通过`req.querystring.color`来获取`red`。 如果你想看具体的实现代码,你可以导航到`app_storefront_base/cartridge/controllers/Checkout.js`这个文件。在这个文件中,你会看到如何处理这些查询字符串参数的逻辑。 另外,这些功能实际上是来自于`modules/server/request.js`和`modules/server/queryString.js`这两个模块。如果你想深入了解这些功能是如何实现的,可以去查看这两个文件中的代码。 希望这个解释能帮助你更好地理解查询字符串参数是如何在Salesforce中解析和使用的。如果你有任何问题,随时问我哦!

    查看详情
  • 19

    Creating a Custom Home Page

    第 67 页

    同学们,今天我们来聊聊如何在Salesforce中创建一个自定义主页,特别是针对教师的一些注意事项。这个主页会根据查询字符串参数的不同,以两种方式显示数据。听起来有点复杂?别担心,我会一步步带你们理解。 首先,我们需要明确目标:我们想要的主页能够显示下一次练习的结束状态。为了实现这个功能,我们需要对现有的Home.js控制器进行一些扩展。 ### 第一步:继承并扩展Home.js控制器 原始的Home.js控制器已经有一些基本功能,我们需要继承它,并在此基础上添加新的功能。具体来说,我们需要添加两组viewData。这两组数据将根据查询字符串参数的不同来决定显示哪一组。 ### 第二步:更新ISML模板 接下来,我们需要重写原始的ISML模板。ISML模板是用来定义页面显示的HTML结构的。我们需要在这个模板中加入逻辑,让它能够根据我们新添加的viewData来动态显示内容。 ### 具体操作步骤 1. ,继承Home.js控制器,:在Salesforce中,我们可以通过创建一个新的控制器来继承原始的Home.js控制器。在这个新的控制器中,我们可以添加新的方法来处理额外的viewData。 2. ,添加viewData,:在新的控制器中,我们需要添加两组viewData。这两组数据将根据查询字符串参数的不同来决定显示哪一组。比如,如果查询字符串中有某个特定的参数,我们就显示第一组数据;如果没有,就显示第二组数据。 3. ,重写ISML模板,:最后,我们需要更新ISML模板,让它能够根据viewData的不同来动态显示内容。这通常涉及到在模板中加入一些条件判断语句,比如`if-else`语句。 ### 总结 通过以上步骤,我们就可以创建一个自定义主页,这个主页能够根据查询字符串参数的不同,以两种方式显示数据。这对于教师来说非常有用,因为他们可以根据不同的需求来查看不同的数据。 希望这个解释对你们有帮助!如果有任何问题,随时问我。

    查看详情
  • 20

    Middleware Scripts & Chaining

    第 69 页

    让我们来聊聊这个Salesforce的中间件收件箱和链接的例子。这个例子是从Salesforce的app_storefront_base项目中的Account.js控制器里拿出来的。它主要用到了中间件技术,这是一种在请求和响应之间处理数据的方式。 首先,我们来看一下代码的结构。这里使用了`require`函数来加载一些必要的脚本。`require`是Node.js中的一个函数,用来引入模块或者文件。在这个例子中,我们引入了两个东西:一个是`server`模块,另一个是`userLoggedIn`脚本。 ```javascript var server = require('server'); var userLoggedIn = require('*/cartridge/scripts/middle/userLoggedIn'); ``` 接下来,我们使用`server.get`方法来定义一个路由。这个方法接受三个参数:路由的路径、中间件函数和回调函数。在这个例子中,路径是“表演”,中间件函数是`userLoggedIn.validateLoggedIn`,回调函数则是在路由被访问时执行的代码。 ```javascript server.get( "表演", userLoggedIn.validateLoggedIn, function(req, res, next) { // 在这里执行的代码 } ); ``` 这里的`userLoggedIn.validateLoggedIn`是一个中间件函数,它的作用是检查用户是否已经登录。如果用户没有登录,它可能会重定向用户到登录页面,或者返回一个错误信息。这个功能非常有用,因为它可以帮助我们保护一些只有登录用户才能访问的页面。 最后,回调函数中的代码会在用户访问“表演”这个路径时执行。你可以在这里添加任何你需要的逻辑,比如获取数据、渲染页面等。 总结一下,这个例子展示了如何在Salesforce的SFRA(Storefront Reference Architecture)中使用中间件来控制用户对特定路由的访问。通过这种方式,我们可以确保只有登录的用户才能访问某些页面,从而增加网站的安全性。希望这个解释对你有帮助!

    查看详情
  • 21

    B2C Commerce Script API

    第 71 页

    今天我们来聊聊B2C商务脚本API的一些基础知识。首先,每次B2C商务更新时,都会附带一个详细的API文档。这个文档非常重要,因为它包含了所有你需要知道的关于新API的信息。你可以在B2C商务的官方文档中找到这个脚本。 另外,如果你需要了解ISML(一种用于B2C商务的模板语言),也可以在同一个文档中找到相关的信息。 Salesforce非常注重保持系统的更新。他们会不断地将客户升级到最新的版本。你可以在Business Manager屏幕的底部看到当前的版本号。这个版本号通常以“年.部署”的形式显示。比如,20.2版本就表示这是2020年的第二次部署。 为了确保更新不会影响到你的生产环境,Salesforce会先在沙箱环境中进行更新。这样,你的团队就有机会在更新应用到生产环境之前,测试新API和其他自定义功能。如果你想要了解更多关于这个流程的信息,可以访问Salesforce的全球发布流程常见问题解答页面。 总之,通过这些步骤,Salesforce确保了B2C商务的稳定性和可靠性,同时也给了你足够的时间来适应和测试新功能。希望这些信息对你有所帮助!

    查看详情
  • 22

    B2C Commerce API Packages

    第 72 页

    今天我们来聊聊B2C商务API包。这个API包是专门为B2C Commerce设计的,它提供了一系列的应用程序接口,也就是我们常说的API。通过这些API,你可以构建和定制你的在线店面的用户体验,从产品展示到购物车,再到结账流程,几乎所有的部分都可以通过这个API来实现。 这个API包使用的是Rhino JavaScript,这是一种基于Java的JavaScript引擎。它支持ECMAScript 5标准,这是JavaScript的一个版本,还包括了JavaScript 1.8的一些特性,以及E4X(ECMAScript for XML)的Firefox扩展。E4X允许你直接在JavaScript中处理XML数据,这在处理一些复杂的电子商务数据时非常有用。 此外,这个API还支持来自JavaScript 2.0/ECMA第4版提案的一些可选类型规范,这些规范可以帮助你更精确地定义数据类型,使得代码更加健壮和易于维护。 最后,这个API还对全局的parseInt函数进行了ECMAScript 5的兼容性修复。parseInt函数用于将字符串转换为整数,这个修复确保了在不同的JavaScript环境中,parseInt函数的行为是一致的,避免了潜在的兼容性问题。 总的来说,B2C商务API包是一个非常强大的工具,它可以帮助你构建一个功能丰富、用户体验优秀的在线商店。通过掌握这些API,你可以让你的店面更加符合你的业务需求,提供更好的购物体验给你的顾客。

    查看详情
  • 23

    Product Factories

    第 73 页

    同学们,今天我们来聊聊Salesforce B2C Commerce中的产品工厂脚本。想象一下,产品工厂就像是一个制作产品的车间,而脚本就是车间里的工具和机器。在脚本文件夹里,你会发现一些已经准备好的模型,这些模型就像是车间里的标准工具,它们可以帮助你快速、高效地完成工作。 这些模型使用了B2C Commerce API,这意味着它们已经具备了处理产品数据的能力。在你开始制作自己的工具之前,我建议你先使用这些现成的工具。这样,你不仅可以节省时间,还能确保你的工具是可靠和高效的。 接下来,我们将一起探索一个具体的脚本——product.js。这个脚本位于工厂目录中,它就像是一个专门用来处理产品信息的工具。通过研究这个脚本,你将学习到如何有效地管理和操作产品数据。 所以,准备好你的工具,我们即将进入产品工厂,开始我们的探索之旅。记住,使用这些现成的模型是提高效率的关键,所以在你动手制作自己的工具之前,先好好利用它们吧!

    查看详情
  • 24

    Tasks: Study the Script View ISML Templates Create a Controller

    第 74 页

    同学们,今天我们要来学习如何在Salesforce B2C Commerce中创建一个控制器,这个控制器的主要任务是访问店面的数据,并显示产品信息或者错误消息。听起来是不是很有趣呢?我们一步步来。 首先,我们需要钻研一下剧本。这里的“剧本”其实是指我们的业务逻辑和流程。我们需要清楚地知道,控制器需要做什么,它需要访问哪些数据,以及如何展示这些数据。 接下来,我们要查看ISML模板。ISML是B2C Commerce中用来创建动态网页的模板语言。通过查看模板,我们可以了解页面的结构和数据展示的方式。 现在,我们进入正题,创建控制器场景。控制器在这里的作用就像是导演,它指挥着整个流程。我们需要创建一个控制器,这个控制器会访问店面的数据,并调用一个叫做“产品工厂”的脚本。这个脚本会使用B2C Commerce API来获取产品信息。 在练习4-8中,我们的目标是通过调用脚本来使用B2C商务脚本API。这意味着我们需要在控制器中编写代码,调用这个脚本,并处理返回的数据。如果一切顺利,我们会得到产品信息并展示给用户;如果出现问题,比如网络错误或者数据错误,我们需要显示一个友好的错误消息。 作为讲师,我会根据你们的理解程度来选择教学方式。如果你们觉得需要更多的指导,可以选择“观看我”,我会一步步演示给你们看。如果你们已经有一定的理解,可以选择“加入我”,我们一起编写代码。如果你们觉得自己已经掌握了,可以选择“轮到您了”,自己动手实践。 记住,练习指南中会有详细的步骤和提示,所以不用担心,跟着指南走,你们一定能够完成这个任务的。加油!

    查看详情