English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

Telegram小程序 指南 | 获取应用程序链接

开源社区 开源社区 12071 人阅读 | 0 人回复 | 2025-02-19

本帖最后由 riyad 于 2025-2-21 19:28 编辑 % o0 w7 Z- I% J$ ?: L+ G6 @/ l

- Y0 R+ v/ D8 g1 Y
简而言之,所有迷你应用程序都是典型的网络应用,每个应用程序都需要独立的 URL 来获取和展示内容。Telegram 不为开发者的应用提供存储空间,因此开发者需要为自己的应用创建存储空间并获取 URL。
9 s1 j6 N# U8 y/ N. T
Telegram 只接受具有有效 SSL 证书并使用 HTTPS 协议的链接。与生产环境不同,测试环境允许直接使用 IP 地址。

6 r) B* p( Y% t* S
尽管我们可以使用测试环境来开发应用程序,但环境 往往无法显示出良好的性能。 如果在 测试环境中遇到低性能问题,请考虑切换到生产环境。

4 g: k, q7 u, y& K# g
导言
3 W' `2 U- O7 p/ M7 J: B+ [在深入了解本指南之前,首先需要了解为什么我们需要一些链接。通常情况下,我们需要应用链接来实现以下目的之一:
用于开发:这些链接是临时的,仅用于通过开发服务器展示应用程序。它们还可以用来与其他用户分享,展示当前的进度。1 Y: g3 t! t" R
用于生产:这些链接用于在生产环境中访问应用程序,通常是供普通用户使用的。
本指南将涵盖这两种情况。在 React.js 的模板中,您可以找到实际的链接生成和使用方法。
接下来的章节将使用 Vite作为应用程序的基本打包工具。
- W8 s9 z6 L- a- @/ T: ~! a9 w# E
关于开发
! Y0 ?7 y) L) T4 }$ c& Y5 x! o3 e
应用程序的开发过程被认为是一个持续不断的过程。长期运行的应用程序总是需要维护,为此,应该通过降低准入门槛和减少由此产生的认知负荷来优化这一过程。
开发链接用于查看应用程序当前的开发状态。这些链接可以分为两类:本地链接和远程链接。让我们来仔细看看。

, c8 ^9 W! P: G

WARNING

开发链接不应在生产中使用。 生产链接不应是动态的 ,必须引用提供迷你应用程序内容的服务器。

在本地环境* t6 k! ^& p) }3 S6 a- B, J7 p2 G
用于开发的本地链接是指仅对当前设备可用的链接。
流行的打包工具(如 Vite)提供了运行本地服务器的功能,用于开发。因此,您将获得一个可以在 BotFather 中使用或直接在浏览器中打开的 IP 地址。
  I5 W) z0 W7 z6 l
以下是运行开发服务器并返回开发链接的基本 Vite 配置。
$ V8 w9 m: o* A. c4 D( y
  1. import { defineConfig } from 'vite';
    ) C+ u9 [3 b5 a: S' ]
  2. 3 K  T0 p" N+ i6 e) b
  3. export default defineConfig();</font>
复制代码

3 {6 p5 j/ |7 @) z3 w7 |

你会在控制台中看到一条信息:

  1. VITE ready in 112 ms8 K: ^2 @1 r; x+ ^7 Q, q6 g8 \

  2. ( T: R; H/ G8 X/ s7 C  d
  3. ➜  Local:   http://localhost:51730 o3 h0 `% X5 L. r# f
  4. ➜  press h + enter to show help</font>
复制代码
现在,您可以在浏览器中打开本地链接 (http://localhost:5173) 来查看应用程序。
您可能已经注意到,该链接不符合 BotFather 的要求,因为它必须使用 HTTPS 协议。接下来,我们来获取 HTTPS 链接。

) v: L3 Q* n- ]% O- v! ]' B$ X
Vite 插件[color=var(--vp-c-brand-1)]

Vite 的生态系统提供了 @vitejs/plugin-basic-ssl 插件。 允许在指定域上使用自签名 SSL 证书启动应用程序。

下面是一个基本例子:

  1. import { defineConfig } from 'vite';
    % y* t4 [2 M; O8 O
  2. import basicSsl from '@vitejs/plugin-basic-ssl';/ K+ C3 _+ e* M4 E: o, U8 m) M8 |
  3. - i# B" m; E9 x- y/ Z7 g  @
  4. export default defineConfig({; `- D7 Q9 {. C( \) k  b
  5.     plugins: [
      {+ E# V0 I0 w- K4 T7 u
  6.     basicSsl(),
    ; n% l" _* _5 [) D3 c
  7.   ],
    0 [/ _/ G$ f) T' l/ U
  8. });</font>
复制代码

您可能会发现还有一些其他有用的选项。 要了解更多相关信息,请访问 插件的 文档

启动开发服务器后,您会看到类似的信息:

  1. VITE ready in 275 ms
    * L) Y" t9 W+ w2 W9 q

  2. ) S/ p7 A( v+ f9 _9 a9 ^6 U
  3. ➜  Local:   https://localhost:51732 r  I, i0 M' `1 g' Q8 D( z3 k
  4. ➜  press h + enter to show help</font>
复制代码

本地链接 (https://localhost:5173) 指向本地开发服务器。在浏览器、Telegram for macOS、Telegram Desktop 或 Telegram Web A/K 中打开此链接时,会出现一条与不信任证书相关的警告消息。

只需将此作为例外,然后继续申请。

mkcert
* [. ?. Y# u# x! J4 y' l5 X
mkcert 是一个允许开发人员生成 SSL 证书及相关私钥的工具。它还会创建一个证书颁发机构,使本地设备信任生成的证书。以下是安装指南

比方说,您想创建一个只有您的设备知道的自定义域,仅用于开发目的。 让它类似于 tma.internal。 为了让当前设备 知道哪个 IP 与该域相关联,我们应该修改 hosts文件,并将 tma.internal 映射到 127.0.0.1。

然后,运行指定该域的 mkcert 工具,就会收到两个文件:SSL 证书和私钥。 这两个文件都应在 Vite 配置中指定。

下面是使用 mkcert 生成的实体配置 Vite 开发服务器的示例:

  1. import { defineConfig } from 'vite';- L0 f0 t$ Y8 K
  2. import { resolve } from 'node:path';
    ' }5 f7 ~. s& `6 \6 Q
  3. import { readFileSync } from 'node:fs';+ v% g2 r" Z* I, [
  4. ( }& B  D; R2 \( ^
  5. export default defineConfig({% Q% j( X% {3 W/ @% i, F- l+ g" q2 c
  6.    server: {. Z3 T: O+ @2 I4 U9 I
  7.     host: 'tma.internal',
    # o* ~: O2 o3 b% B6 R! b! I
  8.     https: {
    ' N1 D+ l* x- M$ A. y
  9.     cert: readFileSync(resolve('tma.internal.pem')),  o5 ~' r- s+ r  g
  10.     key: readFileSync(resolve('tma.internal-key.pem')),- w0 {( K' b- h/ ?  l& H6 m) F4 l
  11.    },
      U5 X2 K$ ?9 A5 Q/ F& ^  g
  12.   },3 G7 q  c0 M# `+ j  t& g
  13. });</font>
复制代码

网络

有时,开发人员需要在不同设备上打开应用程序。我们可以通过在 Vite 中使用 host 选项来实现这一功能。

  1. import { defineConfig } from 'vite';
    * S& K, ~% d1 C/ A5 z% E
  2. 6 e9 a( E! z1 z  T: @9 F
  3. export default defineConfig({3 _7 x2 H0 u9 f
  4.   server: {- i, V; s( Y9 q" j, `
  5.    host: true,
    ! F% R: s7 Q7 ]: O( R; P
  6.   }," ~! u- ]6 d3 e5 ?7 i
  7. });</font>
复制代码

或者,我们可以使用以下命令:vite --host.

启动开发服务器后,您会在控制台中看到类似的信息:

  1. VITE v5.2.12  ready in 15 ms
    % ~' z" h6 f, m. t7 r6 q

  2. * [: p" a# S4 W* q$ U
  3.   ➜  Local:   http://localhost:5173
    ! q# K1 f) |2 f& }
  4.   ➜  Network: http://172.20.10.8:5173% H# _7 f) Y, e9 P
  5.   ➜  press h + enter to show help</font>
复制代码

现在,你可以在同一网络的设备上访问 "网络 "链接 (http://172.20.10.8:5173)。

要获取 HTTPS 链接,请参阅本指南的前几节。

3 D8 C. z! L1 w7 o$ c

9 ?0 F9 {% U4 o6 A' p! m用于生产

获得生产链接也并非难事。 为此,您可以使用流行的免费 静态服务:


$ J. M8 o% t( c2 i( ]
, _+ L% i" I3 s" j2 g; X$ ?) M: ^- G9 p
3 O; U9 U; u( a( U9 R
8 C+ f4 e( J4 ~' }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则