Skip to content

spire(天擎)

整体架构

项目架构图

快速启动指南

本指南旨在帮助开发者快速完成仓颉语言环境配置及 Spire 项目的启动流程。所有操作基于 Windows 操作系统进行说明,Mac 与 Linux 平台支持正在开发中。

开发环境配置

1. 安装仓颉语言工具链

请严格遵循以下步骤进行环境准备:

  1. 安装仓颉 SDK
    访问官方安装指南完成基础环境部署(必装组件)。

  2. 配置 VS Code 开发环境

    在 Visual Studio Code 插件市场搜索并安装 Cangjie 插件
    VSCode插件安装示意图

    下载Cangjie SDK 1.0.3 正式版至本地存储

    (框架会同步最新版本SDK,下载当前最新版本即可) SDK下载页面

    参考解压路径:D:\cangjie\cangjie

    通过插件设置界面完成 SDK 路径配置(操作界面示意图参考下图) SDK路径配置
    SDK路径配置

    验证配置有效性后,IDE 解释器即部署完成。

  3. 安装 STDX 依赖

    仓颉官方仓库下载标准库 标准库下载页面

    解压路径参考:D:\cangjiestdx

    配置系统环境变量:

    • 新建变量 CANGJIE_STDX_PATH 指向解压目录
      环境变量配置

    • 更新 PATH 变量包含 ${CANGJIE_STDX_PATH}

      CANGJIE_STDX环境变量

    同时再次检查,确保其他三个核心变量已正确配置

  4. 补充:安装OpenSSL套接字密码库

    1.下载和安装

    由于Spire的JWT认证使用到OpenSSL,若您的计算机上尚未安装,可以参考以下安装教程:

    通过访问OpenSSL官网下载页面,下载安装的方式比较繁琐复杂,因此我们推荐您直接下载国外技术工作者制作的便捷版安装包

    OpenSSL下载界面

    选择对应您操作系统的版本进行安装,我们推荐您下载含有Light名称的轻量版安装包,下载后跟循安装步骤不断进行下一步直至完成即可

    参考安装路径C:\Program Files\OpenSSL-Win64

    OpenSSL安装程序

    2.配置环境变量:

    进入您的控制面板新增系统环境变量

    OpenSSL环境变量1

    OpenSSL环境变量2

    至此,您进入下一步的所有环境准备工作就绪!

在您的项目中使用Spire

获取源码并构建项目

  1. 克隆项目仓库

    bash
    git clone https://gitcode.com/soulsoft/spire
  2. 配置Spire系统环境变量

    变量值指定为您克隆Spire的目标地址

    SPIRE_PATH环境变量配置

  3. 创建示例模块

    新建 demo 子模块,文件结构参考:

    bash
    demo/
      ├── cjpm.toml          # 配置文件
      └── src/               # 源代码目录
          └── main.cj        # 入口文件
  4. 配置构建参数

    切换到demo路径下,使用code .编辑 cjpm.toml 文件,配置示例如下:

    toml
    [package]
      cjc-version = "1.0.3"
      name = "demo"
      description = "nothing here"
      version = "1.0.0"
      target-dir = ""
      src-dir = ""
      output-type = "executable"
      compile-option = ""
      override-compile-option = ""
      link-option = ""
      package-configuration = {}
    
    [dependencies]
      spire_web_mvc = { path = "${SPIRE_PATH}\\spire_web_mvc"}
      spire_web_http = { path = "${SPIRE_PATH}\\spire_web_http"}
      spire_web_openapi = { path = "${SPIRE_PATH}\\spire_web_openapi"}
      spire_web_routing = { path = "${SPIRE_PATH}\\spire_web_routing"}
      spire_web_hosting = { path = "${SPIRE_PATH}\\spire_web_hosting"}
      spire_serialization = { path = "${SPIRE_PATH}\\spire_serialization"}
      spire_web_staticfiles = { path = "${SPIRE_PATH}\\spire_web_staticfiles"}
      spire_extensions_hosting = { path = "${SPIRE_PATH}\\spire_extensions_hosting"}
      spire_extensions_logging = { path = "${SPIRE_PATH}\\spire_extensions_logging"}
      spire_extensions_options = { path = "${SPIRE_PATH}\\spire_extensions_options"}
      spire_extensions_injection = { path = "${SPIRE_PATH}\\spire_extensions_injection"}
      spire_extensions_configuration = { path = "${SPIRE_PATH}\\spire_extensions_configuration"}
      
      [target]
      [target.x86_64-w64-mingw32]
        compile-option = "-Woff unused --diagnostic-format=noColor -Woff deprecated -lcrypt32"
        [target.x86_64-w64-mingw32.bin-dependencies]
          path-option = [ "${CANGJIE_STDX_PATH}" ]
      [target.x86_64-unknown-linux-gnu]
        compile-option = "-Woff unused --diagnostic-format=noColor -Woff deprecated -ldl"
        [target.x86_64-unknown-linux-gnu.bin-dependencies]
          path-option = [ "${CANGJIE_STDX_PATH}" ]
      [target.aarch64-unknown-linux-gnu]
        compile-option = "-Woff unused --diagnostic-format=noColor -Woff deprecated -ldl"
        [target.aarch64-unknown-linux-gnu.bin-dependencies]
          path-option = [ "${CANGJIE_STDX_PATH}" ]
  5. 编写代码 修改 main.cj,启动Web主机

    cangjie
    package demo
    
    internal import spire_web_mvc.*
    internal import spire_web_http.*
    internal import spire_web_routing.*
    internal import spire_web_hosting.*
    internal import spire_extensions_injection.*
    
    main(args: Array<String>): Int64 {
    	// 创建构建器
        let builder = WebHost.createBuilder(args)
        // 注册基本服务
        builder.services.addControllers()
        // 构建主机
        let host = builder.build()
        // 配置请求管道
        host.useRouting()
        // 配置端点
        host.useEndpoints {
            endpoints =>
                endpoints.mapGet("/hello") {
                    context => context.response.write("Hello World! I Am Spire!")
                }
        }
        // 运行服务
        host.run()
        return 0
    }
  6. 执行构建命令

    bash
    cjpm update  # 更新依赖
    cjpm build   # 构建项目
    cjpm run     # 启动应用
  7. 浏览器 http://127.0.0.1:5000/hello 查看效果

说明

由于 Cangjie 官方尚未建立中央仓库,当前依赖管理采用本地相对路径方式实现。待中央仓库建立后,文档将会同步更新。

quickstart 项目运行说明

1. 启动 Web 服务模块

进入 spire_web_quickstart 模块目录执行:

bash
cjpm run

控制台输出示例:

bash
info: spire.hosting.lifetime
      Now listening on: http://127.0.0.1:5000
info: spire.hosting.lifetime
      Hosting environment: Production
info: spire.hosting.lifetime
      Content root path: E:\gitcode\spire\spire_web_quickstart
info: spire.hosting.lifetime
      Application started. Press Ctrl+C to shut down.

2. 访问示例站点

在浏览器输入 http://127.0.0.1:5000 即可查看 Spire 博客主页(页面截图参考):
示例站点截图

欢迎使用 Spire,我们诚挚期待您的反馈

温馨提示

如在配置过程中遇到技术问题,建议查阅官方技术文档 或前往开发者社区提交 Issue。我们持续优化文档质量,期待您的宝贵建议。