由于网站访问者访问者访问的页面在要求时不会动态生成,但预先生成并用作静态HTML文件,因此推出新功能和内容的过程看起来与“传统” Web应用程序中有点不同。
本地开发:可以在本地完成新功能的发展。
NUXT.JS配备了非常有效的工具,可以支持具有热模块更换和实时重新加载的Dev Server之类的出色开发人员体验。
产品的内容与源代码一起存储在GIT存储库中,因此开发人员可以在实施和测试过程中使用实际产品数据。
API端点应使用一些模拟服务器(例如WireMock或Mockserver)固定,以便独立于实际外部系统工作。对于OpenID连接身份验证,请考虑在本地设置KeyCloak。
注意:此示例项目不包括任何模拟服务器。
预取决于内容:每次都必须在网站上发布新的或更新的产品数据,必须在GIT存储库中更新预取的内容JSON文件,然后才能生成新版本的static HTML文件。
特殊Node.js内容脚本将连接到Salesforce,并通过Salesforce REST API获取最新数据。内容JSON文件将相应地更新,并且可以将其投入到GIT存储库中。
这完全取决于您在执行此脚本的何时何地。例如,它可以作为github动作或在Travis CI上的CI过程中运行。
注意:Salesforce只是从中获取内容的潜在数据源的一个示例。内容文件也可以从任何其他数据源创建。
发布静态HTML文件: GIT存储库中的每个提交代表网站的某个实现和内容状态,可能会发布。
构建过程将源代码转换为优化的块,并通过计算实现的页面组件和预取的内容文件的所有可访问路由来生成静态HTML文件。
最后,所有生成的网站文件都可以发布到任何Web服务器或内容交付网络,例如NetLify。
注意:构建过程还可以利用API请求来加载git存储库中内容文件中未存储的内容。
通过API的动态增强:将网站加载到浏览器中时,访问者是静态HTML文件。这是非常快的,因为服务器上没有什么需要动态生成的。
一旦网页加载了动态JavaScript启动并使用动态功能增强页面。这可以是购物车或显示个性化用户内容之类的功能。
可以通过从浏览器发送API请求来获取动态数据。访问者可以使用OAUTH 2.0和OpenID Connect(OpenID Connect)等标准协议进行身份验证,以允许网站介绍个人内容。
为什么?它可以在闪电社区中使用真正的客户用户登录。
如果您打算使用内容更新脚本,并且如果您想在用户在网站上注销时,则需要此步骤。
为什么?它将自定义对象的“产品类别”添加到您的Salesforce org,并在product2对象上安装自定义字段,以使您定义产品所属的类别。它还安装了闪电网络组件,该组件将在特殊的注销社区页面上使用,该页面将自动登录用户。
下载并安装Salesforce CLI。
在目录salesforce
中打开终端。
将Salesforce CLI连接到您的Salesforce组织。
sfdx force:auth:web:login -a MyOrg -s
将SFDX项目部署到您的Salesforce组织。
sfdx force:source:deploy -p force-app
为什么?它允许API服务器和内容脚本与特定的技术用户连接到Salesforce,该技术允许个人访问控制。
为什么?需要在OpenID连接身份验证流期间显示登录页面。
如果您想在网站上注销时为社区用户设置自动注销,请执行以下其他步骤:
为什么?这是针对网站访问者的OpenID Connect Authentication所必需的,并允许API服务器和内容脚本以安全的方式连接到Salesforce。
此步骤是可选的,因为GIT存储库已经包含一些示例产品和类别进行演示。
您应该在Salesforce org中有一些product2对象的记录,这些记录是活动的,并且在某些用于内容更新的价格簿中具有价格簿条目。
您还可以创建一些产品类别并将其分配给您的产品。
注意:脚本要求Salesforce元数据部署在您的组织中。
在目录content-scripts
中打开终端。
设置以下环境变量。
姓名 | 描述 |
---|---|
salesforce_instance_url | Salesforce实例的基本URL(模式https://xx##.salesforce.com ) |
salesforce_api_version | 使用Salesforce API版本 |
salesforce_token_endpoint | OAuth 2.0 Salesforce实例的令牌端点 |
salesforce_client_id | 连接应用程序的消费者钥匙(从应用程序视图之前复制) |
salesforce_client_secret | 连接应用程序的消费者秘密(从应用程序视图中复制) |
salesforce_username | 集成用户的用户名 |
salesforce_password | 集成用户 +安全令牌的密码(只需加入两个) |
salesforce_price_book_name | 选修的。价格簿要使用。默认值:“标准价格簿” |
例子:
SALESFORCE_INSTANCE_URL=https://eu25.salesforce.com
SALESFORCE_API_VERSION=49.0
SALESFORCE_TOKEN_ENDPOINT=https://login.salesforce.com/services/oauth2/token
SALESFORCE_CLIENT_ID=3MVG9...ru7XA
SALESFORCE_CLIENT_SECRET=17DAD...0110F
[email protected]
SALESFORCE_PASSWORD=abcde...KiQ9n
提示:您可以将这些变量分配放在名为.env
的文件中content-scripts
以进行开发和测试。
安装node.js依赖项。
yarn install
运行脚本以更新目录content
中的类别和产品JSON文件。
yarn start
在目录api
中打开终端。
设置以下环境变量。
姓名 | 描述 |
---|---|
港口 | 本地服务器端口要聆听。默认值:3000 |
salesforce_instance_url | Salesforce实例的基本URL(模式https://xx##.salesforce.com ) |
salesforce_api_version | 使用Salesforce API版本 |
salesforce_token_endpoint | OAuth 2.0 Salesforce实例的令牌端点(不是社区) |
salesforce_jwks_endpoint | OpenID Connect JSON Web密钥设置Salesforce Lightning社区的终点 |
salesforce_issuer_url | Salesforce发行的ID令牌中包含的发行人URL |
salesforce_client_id | 连接应用程序的消费者钥匙(从应用程序视图之前复制) |
salesforce_client_secret | 连接应用程序的消费者秘密(从应用程序视图中复制) |
salesforce_username | 集成用户的用户名 |
salesforce_password | 集成用户 +安全令牌的密码(只需con绕两个) |
salesforce_price_book_name | 选修的。价格簿要使用。默认值:“标准价格簿” |
Security_cors_origin | Web应用程序的基本URL允许访问服务器。 |
例子:
PORT=4000
SALESFORCE_INSTANCE_URL=https://eu25.salesforce.com
SALESFORCE_API_VERSION=49.0
SALESFORCE_TOKEN_ENDPOINT=https://login.salesforce.com/services/oauth2/token
SALESFORCE_JWKS_ENDPOINT=https://georgwittberger-developer-edition.eu25.force.com/id/keys
SALESFORCE_ISSUER_URL=https://georgwittberger-developer-edition.eu25.force.com
SALESFORCE_CLIENT_ID=3MVG9...ru7XA
SALESFORCE_CLIENT_SECRET=17DAD...0110F
[email protected]
SALESFORCE_PASSWORD=abcde...KiQ9n
SECURITY_CORS_ORIGIN=http://localhost:3000
提示:您可以将这些变量分配放在名为.env
的文件中api
以进行开发和测试。
安装node.js依赖项。
yarn install
运行服务器。
yarn start
在项目根目录中打开终端。
设置以下环境变量。
姓名 | 描述 |
---|---|
api_url | API服务器的基本URL |
logout_url | 选修的。登录页面URL Salesforce Lightning社区 |
oauth2_authorize_endpoint | OAuth 2.0 Salesforce Lightning社区的授权终点 |
oauth2_userinfo_endpoint | API服务器的用户信息端点 |
oauth2_client_id | 连接应用程序的消费者钥匙(从应用程序视图之前复制) |
oauth2_scopes | 在身份验证期间请求的OAuth 2.0范围,逗号分隔 |
例子:
API_URL=http://localhost:4000
LOGOUT_URL=https://georgwittberger-developer-edition.eu25.force.com/s/logout
OAUTH2_AUTHORIZE_ENDPOINT=https://georgwittberger-developer-edition.eu25.force.com/services/oauth2/authorize
OAUTH2_USERINFO_ENDPOINT=http://localhost:4000/userinfo
OAUTH2_CLIENT_ID=3MVG9...ru7XA
OAUTH2_SCOPES=openid,id
提示:您可以将这些变量分配放在项目根.env
中的文件中,以进行开发和测试。
注意:如果未提供变量LOGOUT_URL
则可以将用户立即重定向到网站的注销页面,而无需外部往返。
安装node.js依赖项。
yarn install
要么启动提供实时重新加载的开发服务器...
yarn dev
...或首先生成静态HTML文件,然后从dist
目录中提供这些文件。
yarn generate
yarn start
在http:// localhost上打开浏览器:3000
麻省理工学院许可证