Shopify Functions 用于在 Shopify 基础设施上以极低延迟运行后端逻辑,是 Shopify Scripts(Plus)的后继方案,与传统后端应用不同:逻辑会编译为 WASM。本资料为创建此类函数的指南,覆盖折扣、运费、支付等场景,以及 Rust/JavaScript(Javy)实现和输入查询。
关键概念:函数必须确定性,即相同输入始终得到相同输出,不能使用随机数、不能发起网络调用;执行时间有严格限制(资料举例逻辑为 5ms)。实现语言为 Rust(一等支持)或 JavaScript(经 Javy)。
一个函数的组成:shopify.extension.toml 配置文件、input.graphql 定义传给函数的数据、src/run.rs 或 .js 返回输出的逻辑。
工作流:用 shopify app generate extension --template product_discounts --name my-discount 生成扩展;修改 input.graphql 请求所需数据(如 Cart、Customer);运行 shopify app function typegen 依据 GraphQL 查询生成类型;实现 run 函数;用 npm run build 编译为 .wasm;用 shopify app deploy 部署。资料给出了一个 JavaScript 产品折扣示例:按购物车行商品标签筛选目标行,返回 discounts 及 discountApplicationStrategy 为 "FIRST",未命中时返回空折扣列表。
调试方式:WASM 中无法使用 console.log,可借助 Shopify App Bridge 辅助工具,或本地提供的 GraphiQL 浏览器查看输入输出;运行 npm run dev 后打开终端中高亮的 GraphiQL URL。
限制与未提供信息:除 5ms 执行限制和确定性与禁网要求外,资料未给出可用模板全集、各语言完整 API、收费或价格、平台支持范围等细节;这些内容暂未提供。