Подтвердить что ты не робот

Создание чистого оффлайнового приложения Meteor

Кажется, есть некоторые вопросы о том, как можно использовать Meteor в автономном режиме, когда здесь нет подключения к Интернету в Stack Overflow, но меня интересует, возможно ли создать приложение Meteor, которое будет использоваться только в автономном режиме. Например, можно ли создавать папку, содержащую один HTML файл и все остальные файлы (изображения и возможные файлы CSS и файлы JavaScript, если они не встроены в файл HTML), и все работает из коробки, когда один открывает HTML файл в браузере?

Насколько я тестировал, можно заставить его работать с помощью пакета appcache (один раз посещает страницу один раз, когда онлайн, а затем можно посетить его, когда он отключен), но он кажется ненадежным.

Я также заметил автономный проект blaze, но я хочу использовать функции Meteor (хот-код подталкивает во время разработки, пакеты, minimongo и т.д.).

Итак, кто-нибудь знает, может ли то, что я хочу сделать, каким-то образом?

4b9b3361

Ответ 1

Вы можете создать чисто автономное приложение Meteor, но есть несколько "странных" компромиссов.

  • Meteor является немного сильным, когда дело доходит до создания DDP-соединения, поэтому оно сделано для 127.0.0.1 как своего рода нулевой loopback, поскольку сервер отсутствует.

  • Метеор уже создает приложение в этом автономном режиме, так как система Cordova была введена, поэтому ее просто извлечь из этого довольно много. Существуют сборки для server, web.cordova и browser.

1) Свяжите приложение и извлеките его

Я просто сделаю случайный пример из приложения todo (для этого требуется бит на стороне сервера, но не игнорируйте его)

meteor create --example todos
cd todos
meteor bundle ~/Desktop/app.tar.gz
cd Desktop
tar xvzf app.tar.gz

2) В пакете есть каталог в /programs/web.browser, это структура вашего автономного приложения, поэтому возьмите этот каталог и поместите его где-нибудь.

3) В качестве имени файла есть два файла с хешем. Переименуйте их как app.js и app.css

4) Существует каталог с именем app. Переместите все содержимое до основного каталога, т.е.

cd app
mv * ../
rm -r app

5) Создайте файл index.html со следующим:

<!DOCTYPE html>
<html>

<head>
    <link rel="stylesheet" href="app.css?meteor_css_resource=true">
    <script type="text/javascript">
    __meteor_runtime_config__ = {
        "meteorRelease": "1.0.0",
        "ROOT_URL": "/",
        "ROOT_URL_PATH_PREFIX": "",
        "autoupdateVersion": "00000",
        "DDP_DEFAULT_CONNECTION_URL": "127.0.0.1"
    };
    </script>

    <script type="text/javascript" src="app.js"></script>

    <script type="text/javascript">
    if (typeof Package === 'undefined' ||
        !Package.webapp ||
        !Package.webapp.WebApp ||
        !Package.webapp.WebApp._isCssLoaded())
        console.log("Load Fail");
    </script>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=0">
    <meta http-equiv="content-language" content="en">
    <meta name='apple-mobile-web-app-capable' content='yes' />
    <meta name='apple-mobile-web-app-status-bar-style' content='black' />
    <title>Your App</title>
</head>

<body>

</body>

</html>

и вуаля:

Keep in mind this app *needs* a server so its quite useless this way, but you can make a purely client side app

Помните, что этому приложению нужен сервер, поэтому он совершенно бесполезен, но вы можете сделать чисто клиентское приложение, если хотите.

Другие соображения:

  • Используйте файлы html, основанные на файлах, для изображений, шрифтов и других файлов (file.jpg вместо /images/file.jpg)

  • С железным маршрутизатором его немного сложно, но вы не можете использовать /, вам придется использовать index.html и относительные пути

  • Вы можете удалить избыточные пакеты в meteor-platform, которые вы не будете использовать, например autoupdate

  • В атмосфере есть несколько пакетов, которые помогают хранить данные, такие как ground:db, а не коллекции mongo, для которых требуется серверная сторона.