1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/twofloor-uniapp-admin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

uniapp-admin

Многоплатформенная система управления для UniApp, H5, Android, iOS и мини-программ.

Основана на шаблоне системы управления для UniApp, поддерживающей H5, Android, iOS и мини-программы.

Документация Gitee UniApp зависимости GitHub звезды GitHub активность коммитов GitHub основной язык GitHub лицензия

UniApp Admin 2.0.0 официально выпущен!* Усовершенствованное руководство по разработке

  • Тематическая кастомизация: поддержка цветовых тем и темного режима, страницы выглядят более элегантно
  • Интернационализация/многоязычие: интернационализация содержимого приложения и pages.json, поддержка N языков
  • Введение iconfont: поддержка огромного количества шрифтов и значков
  • Введение платформы управления API rap2: поддержка онлайн-симуляции данных Mock
  • Запросы к API: возможность отдельной конфигурации baseURL для разных API
  • Изменение схемы обновления приложений: бесшовное обновление становится проще
  • Отправка уведомлений, просмотр документов в интернете, различные решения для кросс-доменного доступа и других задач### Онлайн документация

Подсказка: QR-код для Android используйте мобильный браузер для сканирования
Логин: admin Пароль: admin

h5 android### Адрес кода

Github

Gitee

ua-gif

1. Введение

uniapp-admin — это шаблон системы управления, созданный с использованием uni-app. Этот шаблон включает следующие возможности:

2. Решение проблемы кросс-доменного запроса для среды разработки и продакшена

Одним из способов решения проблемы кросс-доменного запроса является использование прокси сервера

2.1 Среда разработки

  • В представлении исходного кода файла manifest.json, измените часть h5, добавив порт port и прокси proxy. ```json { "h5": { "devServer": { "порт": 9090, "отключитьПроверкуХоста": true, "прокси": { "/ua/ua-service": { "цель": "http://localhost:8080", "изменитьИсточник": true, "безопасность": false, "перезаписатьПуть": { "^/ua": "" } }, "/ua-service": { "цель": "http://localhost:8080", "изменитьИсточник": true, "безопасность": false } } }, "название": "uniapp-admin", "маршрутизация": { "режим": "хэш", "основнойПуть": "/ua" } } }
* В зависимости от платформы, настраивайте глобальные конфигурационные параметры `baseUrl`, [пример кода](https://github.com/silianpan/uniapp-admin/blob/master/config/index.js).

> Принцип: для веб-платформы (H5) настройте префикс API, а затем используйте прокси-сервер (в файле `manifest.json`); для мобильной платформы (APP) нет проблем с доменом, поэтому можно использовать полный домен или IP-адрес.```js
/**
 * IP адрес или домен
 */
const ipAddress = 'http://localhost:8080';
// Адрес доступа к файлам
const fileAddr = 'http://localhost:8082/fileUpload/';
/**
 * Префикс API
 */
const apiPrefix = '/ua-service';
/**
 * Базовый URL для разных платформ
 */
const getBaseUrl = () => {
    // #ifdef H5
    return apiPrefix;
    // #endif
    // #ifndef H5
    return ipAddress + apiPrefix;
    // #endif
};
export default {
    /**
     * Базовый URL для разных платформ
     */
    baseUrl: getBaseUrl(),
    fileAddr,
};
```* Настройте baseUrl в параметрах ui.request, [пример кода](https://github.com/silianpan/uniapp-admin/blob/master/api/api.js)

```js
// Установите базовые настройки
minRequest.setConfig((config) => {
    config.baseURL = globalConfig.baseUrl;
    return config;
});

2.2 Производственная среда

Для решения проблемы с доменной зоной в производственной среде обычно используется Nginx-прокси

Настройка:

# Прокси-сервер для доступа к фронтенду
location /ua {
    alias /root/ua;
    index index.html index.htm;
    try_files $uri $uri/ /index.html?/$request_uri;
}
# Прокси-сервер для серверной части, соответствует настройкам прокси в разработочной среде
location ~/ua/ua-service/* {
    rewrite ^/ua/(.*)$ /$1 break;
    proxy_pass http://service;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_connect_timeout 360000s;
    proxy_read_timeout 360000s;
    proxy_send_timeout 360000s;
}
# Прокси-сервер для серверной части, соответствует настройкам прокси в разработочной среде
location ~/ua-service/* {
    proxy_pass http://service;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_connect_timeout 360000s;
    proxy_read_timeout 360000s;
    proxy_send_timeout 360000s;
}

Где proxy_pass http://service — это сервис, настроенный в секции http {} Nginx.

upstream service {
    server 127.0.0.1:8080 max_fails=1 fail_timeout=10s;
}

rewrite ^/ua/(.*)$ /\$1 break; — это замена пути, где первый параметр является регулярным выражением, а $1 представляет содержание первого скобочного выражения.### 3. Полная версия приложения для мобильных устройств (APP): Обновление и обновление пакета
Ссылка на документацию, uni-app полная замена пакета обновления/обновление схемы, а также uni-app онлайн обновление ресурсов/горячее обновление.В этом проекте используется схема полной замены пакета обновления, как показано ниже:

/**
  * проверка обновления приложения
  */
appUpgrade() {
  //#ifndef APP-PLUS
  uni.showToast({
    title: 'Поддерживается только обновление Android версий программного обеспечения',
    icon: 'none'
  })
  //#endif
  //#ifdef APP-PLUS
  uni.getSystemInfo({
    success: sysInfo => {
      let platform = sysInfo.platform;
      plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
        // строка версии приложения, например: 1.1.0
        // this.appInfo.version = wgtinfo.version;
        // имя приложения
        // this.appInfo.name = wgtinfo.name;
        let params = {
          appid: plus.runtime.appid,
          // целое число версии приложения, например 110, обязательно использовать versionCode для сравнения
          version: wgtinfo.versionCode,
          platform: platform
        };
        this.$minApi.findUpgradeApp(params).then(appRes => {
          if (appRes.appid) {
            uni.showModal({
              title: "Загрузка обновления",
              content: appRes.note,
              showCancel: false,
              confirmText: 'Ок',
              success: sucRes => {
                if (sucRes.confirm) {
                  plus.runtime.openURL(appRes.url);
                  // uni.downloadFile({
                  //     url: appRes.url,
                  //     success: res => {}
                  // });
                }
              }
            });
          } else {
            uni.showToast({
              title: 'Вы уже используете последнюю версию.',
              icon: 'none'
            });
          }
        });
      });
    }
  });
  //#endif
}

Внимание: обязательно использовать plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) =>()), объект wgtinfo возвращённый обратным вызовом имеет свойство versionCode для сравнения, wgtinfo.version — это строка версии, wgtinfo.name — это имя приложения.### Четвертый раздел. Схема вызова API

Основой является вызов uni.request, пример кода```js request(options = {}) { options.baseURL = options.baseURL || this[config].baseURL; options.dataType = options.dataType || this[config].dataType; options.url = MinRequestisCompleteURL ? options.url : (options.baseURL + options.url); options.data = options.data; options.header = { ...options.header, ...this[config].header }; options.method = options.method || this[config].method; }


См. статью ["uni-app схема отправки уведомлений"](https://github.com/silianpan/uniapp-admin/blob/master/PUSH_MESSAGE.md)

### 6. Решение проблем

#### 6.1 Как получить реальное имя приложения и информацию о версии?

Должно использоваться `plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {})`, объект `wgtinfo` возвращаемый обратной вызовом функцией используется для проверки `wgtinfo.versionCode`. `wgtinfo.version` — это строка с номером версии, а `wgtinfo.name` — это название приложения.

#### 6.2 В мобильной части шаблона v-for не может вызывать методы, например: `v-for="xxx in func(xxx)"`. В этом случае метод func не будет вызван. Конкретные причины пока неясны, но если кто-то сможет объяснить, было бы здорово!

Решение: подготовьте данные заранее, затем используйте шаблон.

### 7. Будущие планы

- [x] Отправка уведомлений

Вы также можете предложить свои шаблоны или функции

### 8. Результат

#### Открытие проекта не простое дело, берегите его

#### Поддержка автора![Поддержка через WeChat Pay](http://silianpan.cn/wp-content/uploads/2019/10/b9c369443b192642f975be9020b3234e.png "Поддержка через WeChat Pay")
![Поддержка через Alipay](http://silianpan.cn/wp-content/themes/yusi1.0/img/weixin.gif "Поддержка через Alipay")

При цитировании указывайте источник: [Лип Бап » Основанный на uni-app многофункциональный менеджер систем uniapp-admin](http://silianpan.cn/index.php/2019/10/26/uniapp_admin/)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе шаблона мультиплатформенной системы управления uni-app для H5, Android, iOS, Mini Program. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/twofloor-uniapp-admin.git
git@api.gitlife.ru:oschina-mirror/twofloor-uniapp-admin.git
oschina-mirror
twofloor-uniapp-admin
twofloor-uniapp-admin
master