Примеры мини-приложений (TMA)
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Ознакомьтесь с примерами ниже, чтобы узнать, как создать свое собственное мини-приложение Telegram.
Пример базового TMA
Это базовое и простое мини-приложение Telegram (TMA), реализованное с использованием простых JavaScript, HTML и CSS. Цель этого проекта - показать простой пример того, как создать простое TMA и запустить его в Telegram, не прибегая к сложным инструментам сборки или передовым библиотекам.
- Приложение доступно по прямой ссылке: t.me/simple_telegram_mini_app_bot/app
- Или вы можете запустить приложение с помощью кнопки меню бота: t.me/simple_telegram_mini_app_bot
- URL-адрес развертывания: https://telegram-mini-apps-dev.github.io/vanilla-js-boilerplate/
Открыть демо
GitHub
Особенности
- Минималистичный пользовательский интерфейс.
- Никакие внешние библиотеки или фреймворки не используется.
- Легко понять и модифицировать.
Начало работы
Необходимые компоненты
Чтобы запустить этот пример, Вам понадобится обновленный веб-браузер с включенным JavaScript.
Установка
- Скопируйте этот репозиторий на свой локальный компьютер:
git clone https://github.com/Telegram-Mini-Apps-Dev/vanilla-js-boilerplate.git
- Перейдите в каталог проекта:
cd vanilla-js-boilerplate
Откройте index.html в выбранном вами редакторе кода или IDE.
Использование
- Откройте index.html в выбранном вами редакторе кода или IDE.
- Внесите свои изменения.
- Создайте свой собственный репозиторий GitHub, фиксируйте и выкладывайте свои обновления.
- Перейдите на страницу вашего репозитория GitHub и откройте Settings. Проверьте вкладку Pages и раздел Build and deployment. Если была выбрана опция GitHub Actions, активы должны быть развернуты на Pages, и там будет URL, похожий на
https://<username>.github.io/vanilla-js-boilerplate/
. Вы можете скопировать этот URL и использовать его с ботом BotFather, чтобы создать свой собственный TWA.
Актуальный пример TMA
Введение
Vite (что в переводе с французского означает "быстрый") - это инструмент для фронтенд сборки и сервер разработки, цель которого - обеспечить более быструю и компактную разработку новых веб-проектов. Мы будем использовать Vite для создания этого примера мини-приложения Telegram.
Вы можете ознакомиться с примерами проекта здесь https://github.com/Telegram-Mini-Apps-Dev/vite-boilerplate или воспользоваться следующими инструкциями.
Необходимые компоненты
Мы начнем со скаффолдинга (шаблона) для Вашего проекта Vite.
С NPM:
$ npm create vite@latest
С Yarn:
$ yarn create vite
Затем следуйте подсказкам!
Или вы можете просто запустить эту команду, чтобы создать проект React с поддержкой TypeScript:
# npm 7+, extra double-dash is needed:
npm create vite my-react-telegram-web-app -- --template react-ts
# or yarn
yarn create vite my-react-telegram-web-app --template react-ts
# this will change the directory to recently created project
cd my-react-telegram-web-app
Разработка мини-приложения
Теперь нам нужно запустить режим разработки проекта, выполнив следующие команды в терминале:
# npm
npm install
npm run dev --host
# or yarn
yarn
yarn dev --host
Параметр --host
позволяет получить URL с IP-адресом, который вы можете использовать для тестирования в процессе разработки. Важное примечание - в режиме разработки мы будем использовать самозаверенный SSL-сертификат, что даст нам возможность протестировать наше приложение с горячей перезагрузкой только в веб-версии Telegram https://web.telegram.org/ из-за политики других платформ (iOS, Android, MacOS).
Нам нужно добавить плагин @vitejs/plugin-basic-ssl
:
- npm
- Yarn
- pnpm
npm install @vitejs/plugin-basic-ssl
yarn add @vitejs/plugin-basic-ssl
pnpm add @vitejs/plugin-basic-ssl
Теперь нам нужно изменить vite.config.ts
. Добавьте импорт:
import basicSsl from '@vitejs/plugin-basic-ssl';
И добавьте плагин
export default defineConfig({
plugins: [react(), basicSsl()]
});
Вы можете использовать ngrok
, для подключения вашего локального сервер а к Интернету с помощью SSL-сертификата. Вы сможете выполнять разработку с заменой горячего модуля на всех платформах Telegram. Откройте новое окно терминала и запустите:
# where 5173 is the port number from npm/yarn dev --host
ngrok http 5173
Также мы должны подготовить наш проект к размещению на GitHub Pages:
export default defineConfig({
plugins: [react(), basicSsl()],
build: {
outDir: './docs'
},
base: './'
});
Мы будем использовать сценарий развертывания для GitHub Actions, который будет запускаться при нажатии на главную ветку. Из корня Вашего проекта:
# we are going to create GitHub Actions config for deployment
mkdir .github
cd .github
mkdir workflows
cd workflows
touch static.yml
Теперь добавьте эту конфигурацию в static.yml
:
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ['master']
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: 'pages'
cancel-in-progress: true
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
cache-dependency-path: './'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
# Upload dist repository
path: './docs'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
Не забудьте выбрать параметр GitHub Actions для Build and Deployment в Settings→Pages вашего репозитория GitHub. Теперь после каждого обновления ваш код будет разворачиваться на Pages.
Теперь нужно добавить @twa-dev/sdk
. Telegram распределяет SDK по ссылке. Это своего рода устаревший способ работы с библиотекой. Пакет @twa-dev/sdk
позволяет работать с SDK как с пакетом npm, так и с поддержкой TypeScript.
- npm
- Yarn
- pnpm
npm install @twa-dev/sdk
yarn add @twa-dev/sdk