Пользователь
0,0
рейтинг
16 июня 2014 в 12:16

Разработка → Двухпанельный веб-файл менеджер Cloud Commander

Файловых менеджеров много, но есть один, о котором, думаю, будет многим интересно узнать. Ведь он двухпанельный, работает в браузере, оснащён редактором (с подсветкой синтаксиса) и консолью, состоит из клиента и сервера, а написан на JavaScript/Node.js.





Сайт: cloudcmd.io
Демо: heroku, jitsu

Предисловие


Первая компьютерная книга, которую я прочитал была Windows: Лаборатория Мастера. Она рассказывает о разнообразных утилитах под Windows 9x. Некоторых из них уже не существует (Zip Magic 2000, например), другие же активно используются, и главное, разрабатываются по сей день (Total Commander). Больше всего мне понравился раздел про файловые менеджеры. Компьютера у меня еще не было, но уже тогда я понял, что использовать Проводник не серьёзно, и гораздо правильнее и удобнее пользоваться Двухпанельными файловыми менеджерами. Я перепробовал все, что были в книге за каждым компьютером, за которым мне удавалось побывать. Больше всего мне, конечно, понравился Total Commander. Он в своём деле лучший это бесспорно.

Через несколько лет, у меня появился компьютер. Спустя некоторое время, рядом с Windows я установил линукс, и хотел найти что-то подходящее для удобного управления файлами. У меня это не особо получилось. Да, Midnight Commander в *nix лучший, это правда. Но многих функций, к которым я так привык пользуясь Тоталом, в нём не было. Не было их и в графических менеджерах. Одна из таких функций, это перемещение указателя текущего файла во время ввода имени (когда папок очень много, а музыки у меня много — листать список, не самое приятное из занятий).

В итоге мне приятнее было слушать музыку, смотреть видео, и управлять файлами в голой консоли. На чем я и остановился на некоторое время.

Причины


Несколько лет спустя, устроившись в небольшую компанию, я понял, что попадать за свой компьютер буду значительно реже. И действительно, так сложились обстоятельства, что чаще я работаю за чужими компьютерами. А поскольку привыкать к новому мне не очень легко, я начал всё чаще использовать языки и средства разработки работающие в браузере и не требующие установки, настройки и прочих длительных вещей. Я начал использовать Cloud9, Koding и, конечно, GitHub.

Я загорелся идеей облачных сервисов, мне настолько понравилась открытость и возможности этих проектов, что я начал делать свой. Это файловый менеджер Cloud Commander.

Аналоги

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

Веб-файл менеджеры

Файловых менеджеров для веб очень много. Но, практически, у каждого из них есть несколько фундаментальных проблем:

  • имитируют интерфейс проводника Windows (делая менеджер менее удобным чем проводник);
  • операции с файлами в основном происходят на разных страницах, что совсем не интерактивно (хотя объяснимо тем, что пишутся менеджеры в основном на серверных языках);
  • работают крайне медленно (не используют локальное хранилище и прочий HTML5-функционал для ускорения работы, поскольку пишутся на серверном языке, а JavaScript используют лишь для базовых вещей таких, как ajax, и это еще хорошо, если данные пересылаются в json а не кусками html-кода);

Из хороших менеджеров, могу привести, например, такие:

  • ElFinder (содержит проблему 1 и 3 (а также 2, попробуйте скачать файл, и вы увидите попап, который нужно самостоятельно закрывать)).
  • Pydio (выглядит очень перспективно, но вместо того, что бы принести привычный интерфейс в веб, создаёт новую парадигму (не то, что бы это было плохо, но всё же).

Описанные выше приложения делают своё дело очень даже неплохо. Но от обычного файлового менеджера я, например, жду другого. И если есть необходимость работы в браузере — почему бы не сделать программы такого типа более дружелюбными, не только для простых пользователей, но и для более продвинутых, проводящих большую часть времени в классических двухпанельных файловых менеджерах.

Двухпанельные файловые менеджеры

Вменяемых двухпанельных файловых менеджеров, которые бы работали в браузере я как не мог найти 2 года назад, когда начал писать свою реализацию, так не могу найти сейчас. Хотя регулярно отслеживаю этот вопрос.

По началу у меня были идеи продолжить чьи-то начинания, подключиться к проекту, так сказать. Я нашел аналог (к сожалению ссылку уже не вспомню) total commander на SourceForge, с веб-интерфейсом, он был написан на PHP, с которым я в то время игрался. Весь его код был сложен в один файл, и разбираться с таким мне не особо хотелось. К тому же, в те времена, я начал активно интересоваться Node.js, и мне хотелось его попробовать на новом проекте.

Из интересного, что появилось с того времени, могу выделить разве, что Metro Commander. Правда пощупать его возможности нет, поскольку работает он лишь на win8, и не в браузере, а нативно. Но на скриншотах выглядит впечатляюще. В остальном в этом направлении особых движений нету, по крайней мере в местах где я ищу.

Особенности


И так, чем же таким интересным обладает Cloud Commander, что на него стоит обратить внимание? Разберём эти пункты подробнее поскольку это действительно важно.

Из самых интересных особенностей стоит выделить следующие:

  • Работа в браузере. Это немаловажная особенность, которая влечёт за собой череду сильных и слабых сторон, от которых всё зависит. Главное наверно то, что если ты не пользуешься браузером (такие люди правда бывают?) — это программа точно не для тебя (в прочем, это не так сложно изменить, что видно в следующем пункте).
  • Клиент-серверная архитектура. Это следует из первого пункта, делать совсем всё что хочется средствами браузера не получиться. Но отсюда вытекает огромный плюс: разделение ответственности (логикой и графикой занимаются разные части приложения, что позволяет, например, написать нативный клиент под любую ОС, не меняя код сервера), что, в свою очередь, позволяет в будущем, переписать часть приложения на другой язык, руководствуясь протоколом связи клиента и сервера (об этом ниже будет больше сказано).
  • Код написан полностью на JavaScript, это значит, что части кода полностью переиспользуются, и на клиенте, и на сервере, что заставляет серьёзнее относиться к тому, что пишешь. Проектировать код так, что бы он максимально не зависел от среды в которой выполняется, будь-то браузер или node.js.
  • Возможность работы с отключенным JavaScript в браузере. Большая часть операций будет не доступна, но погулять по дереву файлов, и скачать нужные вещи можно будет будет без проблем.
  • Модульная структура. С самого начала было понятно: если писать всё с нуля, то можно в итоге ни к чему не прийти. Поэтому лишь основная часть (ядро) написана с нуля. Такой функционал, как: просмотр, редактор, консоль и т.д. Это модули, написанные другими людьми. Любой из них может быть заменён (если перестанет поддерживаться, или если появиться серьёзный аналог), и некоторые (редактор и консоль) уже были заменены, но об этом позже.
  • Отзывчивый интерфейс. Файловый менеджер будет работать в браузере мобильного телефона и планшета. Если экран не вмещает вторую панель, будет отображаться только одна. И реагировать она будет на тачи, а не клики.
  • Возможность взаимодействовать с Облачными Сервисами (DropBox, GDrive и т.д.)
  • Возможность скачивать и загружать файлы с помощью Drag'n'Drop.
  • Возможность загрузки данных из файла (на рабочем столе) в редактор с помощью Drag'n'Drop.
  • Возможность менять правила jshint, редактируя файл .jshintrc, что будет влиять на все загружаемые в редактор js-файлы.
  • Различные оптимизации по ускорению загрузки/выгрузки (localStorage, Diff, zip-сжатие на клиенте). Поскольку большая часть работы — это обмен данными между клиентом и сервером, приняты различные меры позволяющие максимально сократить количество трафика, и соответственно, увеличить скорость обмена информацией (что является самым узким звеном в цепочке).


Отличия

Главным отличием является двухпанельный интерфейс с привычными сочетаниями клавиш. Но это не всё. В противовес другим файловым менеджерам, работающим в браузере, Cloud Commander обладает консолью и редактором.

Редактор поддерживает подсветку синтаксиса больше 110 языков. Формат файла определяется по его расширению. Исходный код Cloud Commander правится в нём же самом (и эта статья пишется тоже в нём).

Консоль позволяет выполнять команды на сервере, и не важно это Linux, Mac OS или Windows. Сервер на котором запущен Cloud Commander управляется с консоли прямо в браузере.

Важным отличием также является Node.js как платформа, на которой работает Файловый Менеджер. Больше никакого php + apache.

Недостатки

Наличие преимуществ подразумевает также наличие недостатков, без этого никак. Самые существенные:

  • Без node.js ничего работать не будет.
  • При отсутствии браузера с сервером можно будет общаться только посредством HTTP-запросов.
  • С отключенным JavaScript большая часть функционала работать не будет.


Это фундаментальные недостатки. Если говорить о насущных проблемах, то есть и такие. В редакторе:

  • Есть проблема с табами, если используется не 4 пробела, а именно таб.
  • В опере мини всё выглядит очень страшно, а старые IE вообще откинуты.
  • Нельзя загрузить/скачать папку используя Drag'n'Drop (или скачать сразу несколько файлов).
  • Нет интеграции с облачными сервисами на уровне сервера (в будущем это вполне может поменяться).
  • Отсутствует прогресс бар при копировании/перемещении/удалении файлов.
  • Используются стандартные диалоговые окна (alert, confirm, prompt).


Состав


Как уже было выше сказано, Cloud Commander состоит из клиента и сервера. О клиенте уже немного было сказано, поэтому начнём, наверно, с сервера.

Модули сервера

Сервер может работать без установленных зависимостей, при этом он переходит в режим ограниченного функционирования. В таком режиме не работает консоль, оптимизации js/css/html не выполняются, не работает копирование, перемещение и удаление папок. После установки модулей прописанных в package.json, используются:

  • веб-сервер express который работает на порядок быстрее, чем встроенный;
  • модуль minify, который минифицирует js/css/html;
  • модули для копирования, перемещения, удаления папок;


Общие модули

Некоторые модули работают и на клиенте и на сервере, таким является diff-match-patch, разработанный давно, зато работающий очень стабильно.

Модули клиента

На клиенте список используемых модулей гораздо шире. Это:



Внутреннее устройство

Архиватор

Больше всего вопросов, наверно, вызывает архиватор на клиенте. Он используется для уменьшения размера данных отсылаемых на сервер редактором. Этот режим может быть включен (и выключен) в настройках. На самом деле, как я уже говорил, узкое место в клиент-серверном приложении — это передача данных. Запаковка (и распаковка на сервере), в свою очередь, выполняется чрезвычайно быстро.

Diff

Но текст не обязательно отправлять всегда целиком. Выгодно на сервер отправлять только те данные, которые поменялись, то есть патч. Поэтому, если, между правками, файл на сервере не менялся — отправляется патч и применяется на сервере (при условии, что файл весит не очень много, ведь каждая такая операция, это загрузка файла целиком в оперативную память), если менялся — отправляются сжатые данные. Благодаря этому скорость обработки данных очень близка к десктопному приложению.

Local Storage

Загружать данные с сервера тоже нет нужны при каждом открытии файлов. Поэтому, при открытии (файлы) кладутся в localStorage, в месте с sha-1 хешем. И, если хеш изменился (без нашего ведома), файл загружается снова, в другом случае хеш обновляется при каждом сохранении файла. Так же обстоят дела и с директориями. Если опция включена, содержимое директории загружается единожды, и для её обновления нужно нажать Ctrl + R (либо удалить/создать новый файл/папку).

Advanced Module Loading

В таком большом приложении с огромным количеством модулей, было бы очень сложно разобраться, если бы все файлы загружались сразу, при загрузке страницы. Такое приложение было бы сложно поддерживать, поскольку время-от-времени одни программы обновляются, а другие устаревают и требуют замены. Поэтому приложение разбито на модули: клиентские и серверные.

Клиентские модули загружаются по мере необходимости. Если человеку нужно меню — оно загружается, если за весь сеанс работы консоль так и не пригодилась — её файлы даже не загружались, и не начинали исполняться, что значительно увеличивает скорость работы, и экономит ресурсы как на клиенте, так и на сервере.

Join

Потоки node.js — очень мощный инструмент, который кардинально отличается от того, что есть в других скриптовых языках. В процессе погружения в node.js меня не покидала мысль о том, что можно файлы объединять в поток, и отдавать так, как будто файл один. Я думал, что будут задержки в скорости, но нет. Всё работает как часы, и особых замедлений не ощущается, а вместо этого, появляется возможность не объединять файлы в один, и не загружать их последовательно, а загружать их как один файл.

Эту идею, с недавнего времени, начали продвигать в jsDelivr. И, мне кажется, это правильное направление.

Вкратце: если нужно загрузить файл jquery.js и jquery.fancybox.js, это можно сделать таким образом:

cloudcmd.jit.su/join/lib/jquery.js:lib/fancybox.js
С помощью символа ":" имена файлов отделяются друг-от-друга, таким образом, объединять можно абсолютно что угодно, и на быстродействие сервера это не должно особо влиять, поскольку файлы читаются последовательно, но сразу после чтения отдаются клиенту.

Если же прочитать файл не удаётся, вместо него отправляется сообщение об ошибке, после чего поток закрывается.

Разработка


О самом приложении сказано достаточно, но есть несколько вещей которые хотелось бы сказать о разработке. Как уже говорилось, Cloud Commander пишется в самом себе.

Проект хостится на гитхабе. В нём есть две ветки: dev и master.

В первой находится вариант, который разрабатывается, туда вносятся все правки, и хотя в идеале всё должно всегда работать, иногда случаются разные казусы.

Во-второй ветке находится последняя стабильная версия. Её всегда можно взять из репозитория, с ней всё должно быть нормально.

Непрерывная интеграция и тестирование

После каждого пуша, код отправляется в систему travis.ci, где запускаются прописанные тесты, а также код разворачивается на NodeJitsu и Heroku.

И если что-то работает не так как нужно, сразу приходит письмо, а также значок в репозитории меняет свой цвет на красный.

Если же на каком-то из сервисов Cloud Commander не отвечает, на сайте, в самом верху, возле ссылок отображаются не зеленые кружки, а красные. Если отвечает долго — желтые.

Task runner

На проекте используется Gulp, который автоматизирует все рутинные действия: проверяет js, css, запускает тесты и т.д.

Коммиты

Однажды мне попалась статья, в которой говорилось о стиле именования коммитов принятых в Angular. На самом деле это очень важный процесс. Изменения, исправления, рефакторинг и прочее имеют свою приставку, а во время релиза коммиты с приставками feature и fix выстаскиваются из истории, и выводятся в определенном виде в ChangeLog, всё это делается одной командой: gulp changelog.

Послесловие


Хочу поблагодарить читателя, за то, что дошел так далеко (даже, если он промотал просто). Надеюсь статья была полезной и интересной. Возможно будет продолжение, поживём — увидим.

Это моя первая статья на хабре, если есть опечатки, предложения, замечания — прошу в личку или в ветку hidden в репозитории. Буду стараться исправляться.
coderaiser @mn3m0n1c_3n3m1
карма
29,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • –27
    Еще один?
    Но… Зачем? Because I can? Нет, похвально конечно, но…
    • +35
      Буду благодарен, если вы поделитесь ссылками на аналогичные двухпанельные веб-файл менеджеры.
      • 0
        У dhtmlx есть похожее демо приложение двух-панельного файл менеджера на JavaScript (это, конечно, не полноценный продукт, но что-то похожее)
  • –7
    Я после долгих лет использования Total Commander перешел на Multi Commander. Все тоже самое, только бесплатно и с адекватной 64 битной версией. Хотя в последнее время много использую и Проводник. Благо его в Windows 8 довели наконец до удобоваримого вида.
  • +15
    Особенно радует, что автор осзнает недостатки архетектуры своего приложения и не усалчивает о них. Приятно читать техническую статью без маркетингового запаха. После таких статей хочется воскликуть Хабр — торт :)
  • 0
    Согласен с комментарием выше, но, автор, какое реальное применение этого менеджера? На локальном компьютере не получится, слишком много недостатков.
    Показывать его пользователю сайта? Тогда он особо ничем не отличается от перечисленных вами же аналогов.
    • +1
      Кроме недостатков есть достоинства, благодаря чему его вполне можно использовать как на локальном компьютере, так и на удаленном. Одно из реальных применений: разработка приложений. Как я уже говорил, Cloud Commander пишется в самом себе (и эта статья тоже была написана в нём), он запущен на удаленном компьютере, я могу к нему подключится с любого браузера. На работе я использую локально установленную версию, и пишу в ней код связанный с текущими проектами.
      • –1
        Ладно, ваше дело, я просто выразил свое мнение, что нативные файловые менеджеры веб полноценно не заменит.
        Кстати, добавьте к недостаткам: нет драг-н-дропа из одной панели в другую (win7, chrome 35, cloudcmd.jit.su/)
        • +2
          Да, это правда, драг-н-дропа из одной панели в другую пока нет, пул реквесты приветствуются.
      • 0
        чем это лучше доступа по ssh?
        • +6
          Во-первых, нет смены контекста, веб-разработчик может всё делать в браузере, не переключаясь между окнами и приложениями.
          Во-вторых, поддержка Drag'n'Drop на уровне редактора и файлового менеджера и многие другие функции.
          В-третьих, есть компьютеры, где нельзя устанавливать и запускать свои приложения, браузер, в свою очередь, есть везде.

          А в целом, это не вытеснитель доступа по ssh, а взгляд с другой стороны.
    • +3
      ну, например включить в поставку админ-панели хостера и иметь нормальный файл-менеджер из коробки, а не те жуткие обрезки, которые обычно там поставляются
      • 0
        Посмотрите на файловый менеджер в Бегете — тоже двухпанельный
        • 0
          Вы имеете ввиду вот этот?

          Скриншот
          image

          Выглядит очень неплохо, интересно было бы посмотреть что внутри. Он с закрытым кодом?
          • +1
            Вышла версия с открытым кодом https://habrahabr.ru/company/beget/blog/277449/
  • +2
    К слову, один из ip-адресов, в которые резолвится cloudcmd.io, находится в реестре (141.101.117.188), поэтому у провайдеров без DPI заблокирован.
    • +1
      В качестве хостинга используется GitHub Pages с подключенным CloudFlare, может в нём дело?
  • 0
    Какой-нибудь прогресс бы прикрутить, когда большие файлы открываешь…
    А так — очень классная штука. Спасибо!
  • 0
    Да, согласен, этого действительно не хватает, думаю в будущем можно будет реализовать.
  • +4
    Одна из таких функций, это перемещение указателя текущего файла во время ввода имени.

    В mc — ctrl +s.
    • 0
      Спасибо, не знал об этом, действительно очень удобно.
    • 0
      В 4.8.1 и этого не требуется: пишешь — курсор переходит
  • +5
    Умопотрясающая штука.

    Её можно сделать ещё более умопотрясающею, если навесить этот код на интеловский движок node-webkit, который позволяет запускать код Node.js локально в окошке Chromium-подобного браузера. Тогда получится более полный аналог Total Commander в том смысле, что работать станет не на отдалённом сервере, а у себя на компьютере.
    • +2
      Такой эксперимент недавно проводился, действительно, выглядит очень интересно.
    • +2
      Поддерживаю! Запакуйте Cloud Commander в десктопную оболочку и цены ему не будет! Особенно на линуксах
      Отличный проект. Скоро у нас будет всё в браузере, а все приложения окажутся замаскированными браузерами )
      • 0
        Можно обойтись совсем без сервера.
        Google Chrome уже умеет TCP/UDP, правда только для приложений — developer.chrome.com/apps/app_network
        Вот вполне рабочий SSH клиент чисто браузерный — chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo
        • 0
          Думаю, совсем без сервера не-получится обойтись, поскольку основной нюанс не в том, каким способом обмениваться данными с сервером (сейчас, всё происходит по HTTP), а в том, как работать с файловой системой. К тому же, клиент-серверная архитектура даёт множество преимуществ: возможность удаленной работы, например.
          • 0
            С удаленными файловыми системами получается можно работать по (S)FTP/FISH… без посреднического сервера.
            И для удаленной работы вполне подходит — у меня сейчас tmux сессия открыта и в xterm и в chrome — одна и та же сессия.
            Запустил в ней mc — двухпанельный файлменеджер с неплохими возможностями. И в браузере.
            Были бы иксы в браузере — запустил бы крусадер.
            Кстати неплохая идея — сделать Xorg сервер в chrome. И вроде еще такого нет в природе.
            • 0
              В принципе да, если рассматривать вариант подключения по ftp, то вполне можно такое сделать.
              Это можно сделать даже сейчас, если конвертировать посылаемые http-запросы серверу Cloud Commander в ftp-команды по TCP, тоже самое с приходящим ответом.
  • +3
    Вещь очень хорошая, но для полноценного использования для серверных целей не нашел двух вещей:
    • ограничения прав (хотя бы на уровне приложения, а на пользователей)
      • назначение root директории: только CWD или свой путь
      • скрывать определённые пути/папки через regexpы
      • ограничения функционала
    • использование менеджера как модуля. Помимо основного приложения, у нас есть админ-приложение, и хотелось бы встроить ваш менеджер, как connect middleware например, или просто запросы пробрасывать.

    Есть ли эти фичи уже или возможно планируется работа по ним?
    • 0
      Подобных фич пока нету, но в будущем вполне возможно,
      что Cloud Commander можно будет использовать как connect middleware, это было бы очень удобно.

      Используемый функционал плавно переходит в независимые модули, таким образом появились:
      Menu
      Minify
      Util-io
      Pipe-io
      • 0
        Нужно обязательно также и в этом направлении двигаться: ограничение прав и midd прослойка. Иначе без первого, как по мне, вообще невозможно использовать commander на сервере — для этого есть sftp. Для десктопов есть родные менеджеры с более полным функционалом и портативными версиями. А вот для админ панелей подобная разработка подходит просто шикарно. Или я упускаю что-то?
        И думаю вам не будет сложно сделать как минимум две вещи:
        options: `rootPath`, `cmdEnabled`
        exports.process = function(req, res, ctx /* current request options*/)
        И вот с таким api уже можно делать многое.
        • 0
          В принципе, в будущем такое вполне возможно, по-поводу ограничения прав — тут немного сложнее, а вот middleware, думаю, это правильное направление.
  • +3
    Покрасить бы все в синий и будет Far в браузере. Я об этом мечатл
    • +2
      А главное, что для этого надо всего лишь поправить CSS файлик
  • +1
    Клёво. Нашел пару багов:
    1. Не работают символические ссылки (на windows)
    2. Нет возможности сменить диск (на windows)
    3. Кнопка настроек (F10) не всегда срабатывает на клик (точнее только раз)

    Сырая, конечно, приблуда, но очень прикольная. Буду рад, если получит развитие.
    Спасибо за описание использованных технологий.
    • +1
      Спасибо, действительно, символические ссылки и на windows, и на linux воспринимаются как обычные файлы,
      в будущем думаю можно будет это изменить.

      По-поводу смены диска на windows, это очень существенный пункт, я раздумываю как это сделать, но пока с этим трудности, в плане:
      1. Интерфейса файлового менеджера
      2. Изменения REST
      Ведь диски есть только на windows, в linux, mac os, freebsd и т.д. их нет и отображать их смысла нету.

      По-поводу кнопки настроек, да, это правда, была такая ошибка, я сегодня исправил, спасибо.
  • –1
    Начало отличное. И код аккуратно и хорошо написан (правда, используются отступы в 4 пробела вместо канонических джаваскриптовых 2-х).
    Будет интересно понаблюдать за развитием.

    Один вопрос:
    веб-сервер express который работает на порядок быстрее, чем встроенный;

    Что имеется в виду? Какой встроенный?
    • 0
      Если зависимости Cloud Commander'a не установлены, он будет работать без них, и в качестве веб-сервера будет использоваться велосипед, который работает похожим образом, на гораздо проще. Конечно, express, гораздо лучше, стабильнее и эффективнее во всех планах, но, при желании, без него можно и обойтись.
      • 0
        Ну Express — это не HTTP-сервер, это утилита вокруг http-модуля самого Node. Что же там за велосипед, который умудряется так замедлить работу сервера?
        • 0
          Да, в общем-то, такая же утилита вокруг http-модуля, написанная лишь для того, что бы Cloud Commander можно было запустить сразу после скачивания исходного кода. Это может быть полезно, например, в местах где нет интернета, но есть исходный код файлового менеджера.
      • 0
        Спасибо за наводку по Pydio.Уже поселил на сервере и сравниваю с Owncloud.
        • 0
          А я уже сравнивал, и в итоге снес OC :)
  • 0
    Зачем он git запускает при старте? Особенно, если я поставил его через npm глобально?
    • 0
      Git запускает в целях получения последней версии, конечно, если Cloud Commander установлен через npm, в этом смысла нет. Я подумаю об этом, спасибо.
  • 0
    Увы, посмотреть не могу.
    Связьнадзоровская заглушка Ростелекома :(
  • 0
    А в localStorage не мало места для кеширования? Почему IndexedDB не используете?
    • 0
      В принципе в localStorage вполне достаточно места для таких нужд. С indexedDB проблема в том, что она поддерживается не всеми браузерами, то есть, в идеале, стоит смотреть, что браузер поддерживает, и то использовать. Мне понравился проект localForage, который использует то, что доступно, предоставляя при этом унифицированный интерфейс. Но в процесе его использования, у меня возникла проблема с тем, что в режиме Инкогнито firefox, который поддерживает IndexedDB, выкидывает ошибку на открытие БД. Возможно сейчас этот баг пофиксили и всё должно работать хорошо. В целом, IndexedDB быстрее, поэтому её, конечно, лучше использовать.

      Взаимодействие с localStorage в Cloud Commander'е происходит в файле storage.js. Пул реквесты приветствуются.
      • 0
        С indexedDB проблема в том, что она поддерживается не всеми браузерами

        Кстати, забыл спросить: а какой набор браузеров официально поддерживается?

        В целом, IndexedDB быстрее, поэтому её, конечно, лучше использовать.

        Не уверен. Могу ошибаться, но исходя из размеров, localStorage хранится в оперативе, а IndexedDB — это работа с жестким диском.

        Посмотрел код, приятно удивлен, что даже при работе с localStorage используются коллбэки. Подумаю на тему пуллреквеста.
        • 0
          > Кстати, забыл спросить: а какой набор браузеров официально поддерживается?
          Все последние версии браузеров: Chrome, Firefox, Opera и IE (начиная с версии, которая поддерживает addEventListener, это, кажеться, 9).

          В целях упрощения кода, было решено отказаться от всех условных комментариев и хаков для старых версий IE, поэтому те, которые не смогут обработать JavaScript и загрузить необходимые модули, будут работать без него (то есть, код будет генерироваться на сервере).

          Если браузер что-то не поддерживает, подгружается файл с основными полифилами.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.