Shopify App 开发:快速搭建一个 App 应用

1,128 阅读4分钟

背景

最近在做 Shopify 相关的项目,在找相关资料的时候,发现中文社区的资料比较少,所以将自己遇到的一些问题和经验总结出来,希望能跟志同道合的朋友们一起学习。

技术背景

  • 本文使用 Shopify 官方推荐的 Remix.js 框架作为基础框架。
  • 本文使用 Shopify 官方脚手架 Shopify CLI。

tips:

  • 本文不会详细讲解 Shopify CLI 和 Remix.js 的细节,建议感兴趣的同学直接阅读文末的官网链接。
  • 本文不涉及项目发布和实际开发,仅起到一个入门的效果,可以视为是官方教程的一个实战演示。

目录

  • 准备工作
  • 项目创建
  • 项目运行
  • 常见问题

准备工作

  • 登录 Shopify Partners

  • 设置语言为中文(可选项)

    • 点开右上角头像,选择 "Your profile"

      图1-1.png

    • 设置 “Preferred language”,选择中文,右上角点击 “Save” 即可。

      图1-2.png

  • 创建一个用于测试的开发商店

图1-3.png

  • 根据你的需要选择对应选项,并填入相关商店名称

图1-4.png

  • 至此,你已经创建了一个可以在线访问的 Shopify 商店,尝试通过下面的步骤进行商店产品的预览。

    • 可以在“产品”中,任意点开一个预览商店,查看实际效果

      图1-5.png

    • 点开预览后的效果展示

      图1-6.png

项目创建

  • 安装 Shopify CLInpm install -g @shopify/cli@latest
  • 校验是否安装成功:shopify --version ,如果有版本输出,则安装成功
  • 创建项目:shopify app init
  • 输入项目名称
  • 选择 Start with Remix (recommended)
  • 选择开发语言
  • 安装完成,效果如下:

图2-1.png

项目运行

  • 按照项目创建完之后给我们的提示,进入项目目录:cd your-project-folder
  • 运行项目:shopify app dev
  • 选择公司/组织
  • 选择创建一个新项目
  • 填入 App 名称,默认为项目名称
  • 选择一个商店,可以选择我们之前创建好的商店
  • 选择自动更新
  • 如果中途遇到需要登录,则正常跳转到浏览器登录即可
  • 按 P 字母或直接输入预览地址,预览项目
  • 完整运行示例如下:

图3-1.png

图3-2.png

  • 打开预览页面,并安装项目

图3-3.png

  • 安装成功后,会自动跳转到 App 页面,如果加载比较慢,可以刷新页面

图3-4.png

  • 至此,我们完成了一个 App 应用的创建、安装和运行操作,但仅限于本地开发和测试使用,最终上线一款 App 还有很多其他工作要做,本文暂不深入。

常见问题

  • 网络问题
    • 问题描述:包括无法正常访问 Shopify 相关的网站,以及创建项目、启动项目失败等现象
    • 解决方案:极大原因是网络问题,因为 Shopify 对国内的支持程度并不友好,所以建议在开发 Shopify 相关项目时,全程保持可访问谷歌的状态,最好选择新加坡、美国等网络。
  • 本地服务关闭后,App 页面无法打开
    • 问题描述:本地项目关闭后,开发商店的页面无法正常显示

      图4-1.png

    • 解决方案:这是因为 shopify app dev 运行的原理是,通过将本地的服务,利用 cloudflared (shopify 免费支持)的随机域名 + 内网透传的方式,让互联网其他用户可以在你创建的 Shopify Store 的 admin 后台访问到你本地启动的这个 App。当然也可以通过一些配置方式,来实现透传到你自定义的域名下,以此替换到 Shopify 随机产生的 cloudflared 域名。如果想让本地服务关闭后,App 依然可以访问,则需要将服务部署到线上服务器。

  • 在创建项目时,有一个名词叫“不可转让的商店”
    • 问题描述:如果选择了不可转让,则意味着未来上线时,这个商店不能直接转让给其他客户,只能当前账号使用。
    • 解决方案:当我们在开发阶段,一定不要用未来准备直接上线的商店来开发,因为在本地开发时,必然需要用到 preview 预览功能,而一旦使用这个功能,则该开发商店变会成为不可转让的商店。

参考文档

浏览知识共享许可协议

知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。