HERO_APP_SECRET_CODE=abcdef npm start
.hero-cli.json
Переменные окружения могут различаться в зависимости от среды, такой как development
, test
или production
. Можно указать информацию о сопоставлении в файле .hero-cli.json
, чтобы hero-cli загружал соответствующие переменные в переменные окружения.
Например:
Вот содержимое файла .hero-cli.json
:
{
"environments": {
"dev": "src/environments/environment-dev.js",
"prod": "src/environments/environment-prod.js"
}
}
А вот содержимое файла src/environments/environment-prod.js
:
var environment = {
backendURL: 'http://www.my-website.com/api'
};
module.exports = environment;
Когда вы запускаете команду hero start -e dev
или hero build -e dev
, все переменные из src/environments/environment-dev.js
можно получить через process.env
.
Часто люди обслуживают интерфейсное React-приложение с того же хоста и порта, что и их бэкенд-реализация. Например, после развёртывания приложения производственная настройка может выглядеть следующим образом:
/ - статический сервер возвращает index.html с React-приложением
/todos - статический сервер возвращает index.html с React-приложением
/api/todos - сервер обрабатывает любые запросы /api/* с помощью бэкенд-реализации
Такая настройка не требуется. Однако если у вас есть такая настройка, удобно писать запросы типа fetch('/api/v2/todos')
без необходимости перенаправлять их на другой хост или порт во время разработки.
Чтобы сообщить серверу разработки проксировать любые неизвестные запросы к вашему серверу API в процессе разработки, добавьте поле proxy
в ваш файл .hero-cli.json
, например:
{
"proxy": {
"/api/v2": "https://localhost:4000",
"/feapi": "https://localhost:4001",
},
"environments": {
"dev": "src/environments/environment-dev.js",
"prod": "src/environments/environment-prod.js"
}
}
Таким образом, когда вы выполняете fetch('/api/v2/todos')
, запрос будет проксироваться на http://localhost:4000/api/v2/todos
, а когда вы fetch('/feapi/todos')
, запрос будет проксироваться на https://localhost:4001
.
hero start
Запускает приложение в режиме разработки. Вы можете запустить hero start -h
для получения справки.
Эта команда имеет один обязательный параметр -e
.
Использование: hero start -e <env>
Доступные значения <env>
берутся из ключей, настроенных в атрибуте environments
в файле .hero-cli.json
.
hero-cli будет загружать соответствующие конфигурации в соответствии со значением <env>
по правилам, упомянутым выше.
Вы можете использовать -p
, чтобы указать порт прослушивания при запуске приложения.
hero start -e dev -p 3000
После успешного запуска страница перезагрузится, если вы внесёте изменения в папку src
.
В консоли вы увидите ошибки сборки и предупреждения линтера.
-e
-s
-i
-b
-m
-f
-n
hero build
)
Собирает приложение для продакшена в папку build
. Опции аналогичны упомянутым выше в разделе hero start
, или вы можете запустить hero build -h
для получения справки.
Сборка минимизирована, а имена файлов включают хэши. Она корректно связывает приложение Hero в рабочем режиме и оптимизирует сборку для лучшей производительности.
Эта команда имеет один обязательный параметр -e
.
Использование: hero build -e <env>
.
Доступные значения <env>
и правила загрузки конфигураций такие же, как у hero start
(см. раздел hero start
).
Сборка для относительных путей
По умолчанию hero-cli создаёт сборку, предполагая, что ваше приложение размещено в корне сервера. Чтобы переопределить это, укажите значение атрибута homepage в файле конфигурации .hero-cli.json
. Возможные значения см. в Webpack#publicpath.
Например:
Содержание файла .hero-cli.json
:
{
"environments": {
"dev": "src/environments/environment-dev.js",
"prod": "src/environments/environment-prod.js"
},
"homepage": "/mkt/"
}
Затем вы сможете получить доступ к start.html
по URL /mkt/pages/start.html
. Это позволит приложению Hero правильно определить корневой путь, который будет использоваться в сгенерированном HTML-файле.
hero init
Вы можете запустить hero build -h
для получения помощи. Он создаст начальную структуру проекта приложения Hero. См. раздел «Создание приложения».
Управление процессом разработки
Новые требования к фреймворку можно отправить в каталог hero-js/test/test/unit_test/, конкретное содержимое представляет собой файл JSON, например:
{
class:"MyLabel", //имя нового элемента функции
p1:"xxxxx", //какие параметры принимает новый элемент и каков результат
text:"Hello hero !",
size:22,
frame:{"w":"1x",h:"80"},
alignment:"center"
},
Система тестирования автоматически генерирует тестовые примеры для этого элемента, и если результаты всех платформ верны, это означает, что реализация этого элемента завершена. Пример модульного теста показан на рисунке ниже:
Анализ поведения пользователей
В рамках Hero существует концепция, согласно которой на странице не должно быть никакой логики, страница (view controller\activity\page) отвечает только за отображение элементов, элементы сами по себе принимают только данные JSON, а то, как выглядит интерфейс, полностью определяется полученными данными JSON. Кроме того, сама страница имеет только функции in и out, которые соответствуют обратной связи данных от элементов и передаче данных элементам. Мы перегружаем эти две функции в JavaScript и отправляем данные на сервер журналов. Таким образом, мы можем узнать обо всех действиях пользователя и полностью воспроизвести их.
Hero — это больше, чем просто фронтенд-фреймворк
Основная идея Hero заключается в том, что каждый функциональный элемент имеет и имеет только один интерфейс для обмена данными с внешним миром. Я однажды написал инструмент для обнаружения отношений между классами в обычном проекте, метод заключается в поиске списка классов текущего проекта, если класс содержит классы из другого списка, то он увеличивается на 1, результаты таковы: для 50 классов среднее значение составляет около 200, для 100 классов среднее значение составляет около 800, и это число растёт пропорционально квадрату. Можно представить, насколько сложно новичку разобраться в большом проекте, это как огромная сеть. Традиционное объектно-ориентированное программирование, возможно, само по себе не является проблемой, но оно сталкивается с огромными трудностями в реальной практике, функциональное программирование — это один способ, а Hero — другой. На стороне сервера Hero также имеет первоначальную, но полную практику, каталог находится в hero-js/server. Здесь я не буду вдаваться в подробности.
name | 技术领域 |
---|---|
Andrew | 提供技术资源 |
shaohua.yang | review代码,负责技术规范 |
刘国平 | 架构 |
朱靥超 | Hero-iOS |
朱成尧 | Hero-js |
蔡欣 | Hero-android |
胡本绿 | Hero-Cli |
Отправьте код на GitHub по адресу: https://github.com/dianrong/Hero, https://github.com/dianrong/Hero-ios, https://github.com/dianrong/Hero-android.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )