Грабли при начале работы с Node.js



    Всем привет!

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

    И первая, пожалуй, самая главная проблема, с которой сталкиваешься, ни каждому пользователю по вкусу работать с консолью (куда проще два раза кликнуть). Просто даже набрать npm start (тут не удобно и для нужной директории открыть консоль). Какое может быть решения для Windows? Для последнего проекта я использовал просто скомпилированный на C++ .exe файл, который ничего не делает, кроме как выполняет пару необходимых команд (и открывает веб-страницу):

    #include <iostream>
    #include <windows.h>
    #include <locale>
    
    int main(int argc, char** argv) {
    	setlocale(LC_ALL, "Russian");
    	SetConsoleOutputCP(866);
    	std::cout << "Выполняется настройка компонентов" << std::endl;
    	system("cd ../constructor && npm install --production");
    	ShellExecute(NULL, "open", "http://localhost:3000",  NULL, NULL, SW_SHOWNORMAL);
    	std::cout << "Запуск веб-сервера" << std::endl;
    	system("cd ../constructor && npm start");
    	return 0;
    }
    

    Костыльно, не спорю. Знаю про библиотеки для создания desktop приложений (вместо простой вкладки в браузере) такие, как node-webkit (NW.js), node-qt, и может быть другие еще есть. Но, во-первых, размер бинарика куда больше, чем нужно, и во-вторых, не мало времени надо потратить на то, чтобы разобраться как их использовать (и тут в конце как обычно может ожидать неприятный сюрприз, что-то не устраивает в самой библиотеке). Но Node.js гибкая платформа, и если кто-то знает лучшее решение, прошу рассказать.

    Вторая проблема (на мой взгляд) касается вообще многих библиотек, и не только для Node.js. Например, на главном readme фреймворка Express есть пример его использования (в папке examples аналогичные):

    var express = require('express')
    var app = express()
    
    app.get('/', function (req, res) {
      res.send('Hello World')
    })
    
    app.listen(3000)
    

    Серьезно? И как они себе это представляют; если вы когда-нибудь работали с реальным (пусть даже небольшим) проектом, то понимаете, что постепенно он обрастает логическими переплетениями не хуже, чем в Санта-Барбара Этот файл вскоре обрастет как тропический лес, и вы просто плюнете на весь проект (как на картинке). Я понимаю, что для простоты это и следовало показать, но вы, разработчики, не поленитесь и предложить хоть немного в архитектурном плане правильное решение. Грустно, одним словом.

    На этапе начала разработки также требуется решить важную проблему: какой редактор выбрать для работы с Node.js? Я пробовал Atom (не устраивает то, что нет автоматического выравнивания кода, но это не точно. Плюс интерфейс какой-то сложный в использовании). Думаю его близкие аналоги ничем не лучше. В общем остановился на WebStorm. С ним действительно разработка доставляет удовольствие (плюс я очень хорошо знаком с Android Studio и это как-то помогает быстро разобраться в интерфейсе). Но он не бесплатный, цена $ 129 за первый год использования сегодня. Я не против заплатить, но для меня это на данный момент приличные деньги (проще говоря, я бы лучше, например, купил себе ssd лишний). Скачивать crack версию? Она не последней версии редактора, и не исключены вирусы и тп (даже для Линукса). В общем спойлер ниже, кому интересен мой вариант его бесплатного использования:

    Как я обхожу ограничение на данный момент
    Не совсем понятно, почему это работает. Я использую Linux (полноценный, никакого Windows: имею в виду интегрированный вариант [/horror]), в нем, наверное, как и везде есть пользователи. Также в WebStorm есть пробный период использования в 1 месяц. И мне просто приходится на каждый месяц создавать нового пользователя для использования этого пробного периода. Это работает и пока устраивает. Впрочем интересно, какие файлы или что отвечают за расчет этого периода. В общем последний рубеж перед выяснением этого остается терпение или надежда на больший заработок [/sarcasm].

    Я не так часто использую Node.js в проектах, к сожалению, думаю с опытом его использования должен появиться и нужный стиль разработки. В целом он меня больше, чем устраивает. Самая главная проблема для меня — найти верное направление роста. Честно, я устал от велосипедов, сделал их столько, что уже можно небольшой прокат открывать. Хочется без проблем разрабатывать красивые, расширяемые, «работающие» продукты (а без нужной информации это невозможно). Остается рыть интернет в поисках лучшего [/hope].
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 44
    • +1
      Какое может быть решения для Windows? Для последнего проекта я использовал просто скомпилированный на C++ .exe файл

      Вы никогда не слышали про батники?
      • –3
        Да. Похоже это аналог Bash в Линукс. Знаете, exe файл как-то привычнее для пользователя
        • +1
          Какая ему разница?
          • +5

            Вот и выросло поколение :(

            • 0

              Какого ещё пользователя :)? У вас продукт представляет из себя локально запущенный сервер, который пользователь предварительно у себя деплоит, выкачивая при этом библиотеки из npm?

              • 0
                Заказчик) Вы правы, насчет его работы. И это один из самых простых вариантов
                • 0

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

                  • –1
                    Так и сделаю. Я тоже не сварщик) И уж очень крупный этот фреймворк
                    • 0

                      Взялся за node.js — не думай о размере вообще :). Как вариант можно попробовать javafx — тут опыт разработки на андроиде наверное поможет.

            • 0
              а лучшим вариантом будет написание тестов, а если нужны браузерные тесты то selenium + phantomjs.
            • +1

              Можно сидеть на WebStorm EAP и не напрягаться по поводу лицензий.

              • 0
                EAP когда-нибудь закончится.
                • 0

                  Там EAP с удобным автообновлением до следующего EAP-а

                  • 0
                    На самом деле я не знаю как в Webstorm, но с Resharper`ом было такое что последний EAP уже протух, а нового ещё нет.

                    Ну а ещё может быть ситуация когда в EAP сломан нужный функционал.

                    Ну и в конце концов, почему бы не купить софт с помощью которого вы зарабатываете?
                • 0
                  Да, WebStorm или IntelliJ IDEA — лучшие редакторы для Node.JS и JavaScript. Лицензию можно получать проходя курсы решая задания на степике: stepic.org.
                  • +1
                    IntelliJ IDEA это бесплатный редактор для java. И там нет всех возможностей WebStorm
                    • 0
                      Возможно, надо попробовать. Мне для Node.JS хватает.
                      • 0

                        В IDEA Ultimate есть все фичи WebStorm. Но да, она платная.

                  • +1
                    Инженер вообще сложная работа, да. Напрягаться нужно. Проще быть олигархом. Хлоп, хлоп и на виллу!
                    • –3
                      Я не хочу напрягаться. И считаю, что программирование должно быть легким процессом
                      • +1
                        Тогда тебе нужно либо задауншифтиться, либо стать актером.
                        • –1
                          Вы ничего не понимаете, уж извините
                    • +5
                      Про что пост? Какие-то несвязанные мысли прочитал.
                      Да еще и способ не платить за лицензию, это хабр, тут такое не нужно.
                      • –5
                        Про то, что все сложно. А я хочу проще, ведь так и должно быть
                        • +3

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

                          • –3
                            Ээ я вроде как разработчик, и мне платят
                            Ненавижу посредников, поэтому не собираюсь никого нанимать
                            • +3

                              Я говорю про JetBrains. Или вы им платить не хотите за их работу и своё удобство?

                              • –4
                                Я им хочу платить, но денег не хватает на это, чтобы сто баксов с лишним тратить
                                Ну скажем до 50$ я бы заплатил
                                • +2

                                  Неужели месяц вашей работы, во время которого будет доступна триалка или EAP, не покроет затраты на ПО?

                                  • 0
                                    Ну в месяц зарабатываю около 40 т.р. (±)
                                    Ну и как бы я не один в мире живу, помогаю родным, свои есть мечты
                                    Одним словом, деньги как вода
                                    • 0

                                      Кстати, $129 — это цена на WebStorm для организаций. Для частных лиц она составляет $59 в первый год или $5.90 в месяц. Кажется, заплатить 3500 рублей за год или 350 рублей в месяц — это уж очень выгодное предложение.

                                    • 0
                                      Я стараюсь, изменить все к лучшему
                                      Пока, правда, не совсем получается
                                      • 0
                                        Хотя может вы в чем-то правы
                                        • +1
                                          Возможно, разработчики JetBrains хотят получать больше, но не могут, потому что многие пытаются украсть их продукт. Если хотите изменить все к лучшему, начните с себя.
                                          • –1
                                            Ок. Согласен. Не понял, причем тут кража продукта только
                              • –1
                                И плевать, если кто думает иначе
                            • 0
                              Вы про Run Configuration в WebStorm не читали? Зачем городить целый бинарник ради выполнения нескольких операций, если редактор сам умеет их выполнять через кнопку Play.

                              А насчет кряков idea-программ, там все просто. Никакие проги с вирусами качать не надо. Есть просто сервера для лицензий (не официальные конечно).
                              • 0
                                эти неофициальные сервера также могут быть с вирусами, поэтому не особо они от кряков то и отличаются.
                                • 0
                                  Откуда там вирусы если он просто парсит HTTP запрос от IDE и отвечает валидным ответом?
                              • 0
                                Run Configuration в WebStorm. Ок. А пользователю тоже WebStorm устанавливать для этого?
                                • 0
                                  SetConsoleOutputCP(866);

                                  а если по умолчанию кодировка консоли другая?
                                  • 0
                                    Тогда что вы предложите?
                                    Я не большой знаток C++
                                    • 0

                                      Просто пишите на английском. Это выглядит солидно и проблем с кодировками будет меньше :)

                                      • 0
                                        Я в C++ не очень разбираюсь. Знаю что в python при смене кодировки консоли меняется значение свойств sys.stdin.encoding, sys.stdout.encoding и sys.stderr.encoding.
                                        Можно посмотреть в исходниках python, как определяются эти свойства.

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