Всем привет!

Иногда встречаются задачи, которые требуют программной автоматизации. Также может требоваться поддержка мультиплатформенности. И тут на фоне остальных решений 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].

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


  1. Sirion
    07.12.2017 13:07

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

    Вы никогда не слышали про батники?


    1. androidovshchik Автор
      07.12.2017 13:21

      Да. Похоже это аналог Bash в Линукс. Знаете, exe файл как-то привычнее для пользователя


      1. some_x
        07.12.2017 13:30

        Какая ему разница?


      1. staticlab
        07.12.2017 14:05

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


      1. poxvuibr
        07.12.2017 14:47

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


        1. androidovshchik Автор
          07.12.2017 15:16

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


          1. poxvuibr
            07.12.2017 15:22

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


            1. androidovshchik Автор
              07.12.2017 15:31

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


              1. poxvuibr
                07.12.2017 15:42

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


    1. sanchezzzhak
      07.12.2017 15:50

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


  1. xxxTy3uKxxx
    07.12.2017 13:20

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


    1. some_x
      07.12.2017 13:30

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


      1. MrCheater
        07.12.2017 13:50

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


        1. some_x
          08.12.2017 08:39

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

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

          Ну и в конце концов, почему бы не купить софт с помощью которого вы зарабатываете?


    1. Tantrido
      07.12.2017 14:13

      Да, WebStorm или IntelliJ IDEA — лучшие редакторы для Node.JS и JavaScript. Лицензию можно получать проходя курсы решая задания на степике: stepic.org.


      1. androidovshchik Автор
        07.12.2017 15:13

        IntelliJ IDEA это бесплатный редактор для java. И там нет всех возможностей WebStorm


        1. Tantrido
          07.12.2017 15:15

          Возможно, надо попробовать. Мне для Node.JS хватает.


        1. staticlab
          07.12.2017 15:26

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


  1. StarMarine
    07.12.2017 13:43

    Инженер вообще сложная работа, да. Напрягаться нужно. Проще быть олигархом. Хлоп, хлоп и на виллу!


    1. androidovshchik Автор
      07.12.2017 15:12

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


      1. StarMarine
        07.12.2017 17:40

        Тогда тебе нужно либо задауншифтиться, либо стать актером.


  1. ilyaplot
    07.12.2017 13:47

    Про что пост? Какие-то несвязанные мысли прочитал.
    Да еще и способ не платить за лицензию, это хабр, тут такое не нужно.


    1. androidovshchik Автор
      07.12.2017 15:14

      Про то, что все сложно. А я хочу проще, ведь так и должно быть


      1. staticlab
        07.12.2017 15:27

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


        1. androidovshchik Автор
          07.12.2017 15:33

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


          1. staticlab
            07.12.2017 15:34

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


            1. androidovshchik Автор
              07.12.2017 15:37

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


              1. staticlab
                07.12.2017 15:40

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


                1. androidovshchik Автор
                  07.12.2017 15:45

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


                1. androidovshchik Автор
                  07.12.2017 15:47

                  Я стараюсь, изменить все к лучшему
                  Пока, правда, не совсем получается


                  1. androidovshchik Автор
                    07.12.2017 15:49

                    Хотя может вы в чем-то правы


                  1. ilyaplot
                    07.12.2017 17:43

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


      1. androidovshchik Автор
        07.12.2017 16:38

        И плевать, если кто думает иначе


  1. MasMaX
    07.12.2017 15:21

    Вы про Run Configuration в WebStorm не читали? Зачем городить целый бинарник ради выполнения нескольких операций, если редактор сам умеет их выполнять через кнопку Play.

    А насчет кряков idea-программ, там все просто. Никакие проги с вирусами качать не надо. Есть просто сервера для лицензий (не официальные конечно).


    1. Xalium
      08.12.2017 07:27

      эти неофициальные сервера также могут быть с вирусами, поэтому не особо они от кряков то и отличаются.


      1. MasMaX
        10.12.2017 19:07

        Откуда там вирусы если он просто парсит HTTP запрос от IDE и отвечает валидным ответом?


  1. androidovshchik Автор
    07.12.2017 15:34

    Run Configuration в WebStorm. Ок. А пользователю тоже WebStorm устанавливать для этого?


  1. Xalium
    08.12.2017 07:28

    SetConsoleOutputCP(866);

    а если по умолчанию кодировка консоли другая?


    1. androidovshchik Автор
      08.12.2017 13:46

      Тогда что вы предложите?
      Я не большой знаток C++


      1. poxvuibr
        08.12.2017 13:49

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


      1. Xalium
        09.12.2017 04:55

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