Всем привет!
Иногда встречаются задачи, которые требуют программной автоматизации. Также может требоваться поддержка мультиплатформенности. И тут на фоне остальных решений 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 версию? Она не последней версии редактора, и не исключены вирусы и тп (даже для Линукса). В общем спойлер ниже, кому интересен мой вариант его бесплатного использования:
Я не так часто использую Node.js в проектах, к сожалению, думаю с опытом его использования должен появиться и нужный стиль разработки. В целом он меня больше, чем устраивает. Самая главная проблема для меня — найти верное направление роста. Честно, я устал от велосипедов, сделал их столько, что уже можно небольшой прокат открывать. Хочется без проблем разрабатывать красивые, расширяемые, «работающие» продукты (а без нужной информации это невозможно). Остается рыть интернет в поисках лучшего [/hope].
Комментарии (43)
xxxTy3uKxxx
07.12.2017 13:20Можно сидеть на WebStorm EAP и не напрягаться по поводу лицензий.
some_x
07.12.2017 13:30EAP когда-нибудь закончится.
MrCheater
07.12.2017 13:50Там EAP с удобным автообновлением до следующего EAP-а
some_x
08.12.2017 08:39На самом деле я не знаю как в Webstorm, но с Resharper`ом было такое что последний EAP уже протух, а нового ещё нет.
Ну а ещё может быть ситуация когда в EAP сломан нужный функционал.
Ну и в конце концов, почему бы не купить софт с помощью которого вы зарабатываете?
Tantrido
07.12.2017 14:13Да, WebStorm или IntelliJ IDEA — лучшие редакторы для Node.JS и JavaScript. Лицензию можно получать проходя курсы решая задания на степике: stepic.org.
androidovshchik Автор
07.12.2017 15:13IntelliJ IDEA это бесплатный редактор для java. И там нет всех возможностей WebStorm
StarMarine
07.12.2017 13:43Инженер вообще сложная работа, да. Напрягаться нужно. Проще быть олигархом. Хлоп, хлоп и на виллу!
androidovshchik Автор
07.12.2017 15:12Я не хочу напрягаться. И считаю, что программирование должно быть легким процессом
ilyaplot
07.12.2017 13:47Про что пост? Какие-то несвязанные мысли прочитал.
Да еще и способ не платить за лицензию, это хабр, тут такое не нужно.androidovshchik Автор
07.12.2017 15:14Про то, что все сложно. А я хочу проще, ведь так и должно быть
staticlab
07.12.2017 15:27Платите денюжку разработчикам, и у вас проблем нет.
androidovshchik Автор
07.12.2017 15:33Ээ я вроде как разработчик, и мне платят
Ненавижу посредников, поэтому не собираюсь никого наниматьstaticlab
07.12.2017 15:34Я говорю про JetBrains. Или вы им платить не хотите за их работу и своё удобство?
androidovshchik Автор
07.12.2017 15:37Я им хочу платить, но денег не хватает на это, чтобы сто баксов с лишним тратить
Ну скажем до 50$ я бы заплатилstaticlab
07.12.2017 15:40Неужели месяц вашей работы, во время которого будет доступна триалка или EAP, не покроет затраты на ПО?
androidovshchik Автор
07.12.2017 15:45Ну в месяц зарабатываю около 40 т.р. (±)
Ну и как бы я не один в мире живу, помогаю родным, свои есть мечты
Одним словом, деньги как вода
androidovshchik Автор
07.12.2017 15:47Я стараюсь, изменить все к лучшему
Пока, правда, не совсем получаетсяilyaplot
07.12.2017 17:43Возможно, разработчики JetBrains хотят получать больше, но не могут, потому что многие пытаются украсть их продукт. Если хотите изменить все к лучшему, начните с себя.
MasMaX
07.12.2017 15:21Вы про Run Configuration в WebStorm не читали? Зачем городить целый бинарник ради выполнения нескольких операций, если редактор сам умеет их выполнять через кнопку Play.
А насчет кряков idea-программ, там все просто. Никакие проги с вирусами качать не надо. Есть просто сервера для лицензий (не официальные конечно).
androidovshchik Автор
07.12.2017 15:34Run Configuration в WebStorm. Ок. А пользователю тоже WebStorm устанавливать для этого?
Xalium
08.12.2017 07:28SetConsoleOutputCP(866);
а если по умолчанию кодировка консоли другая?androidovshchik Автор
08.12.2017 13:46Тогда что вы предложите?
Я не большой знаток C++poxvuibr
08.12.2017 13:49Просто пишите на английском. Это выглядит солидно и проблем с кодировками будет меньше :)
Xalium
09.12.2017 04:55Я в C++ не очень разбираюсь. Знаю что в python при смене кодировки консоли меняется значение свойств sys.stdin.encoding, sys.stdout.encoding и sys.stderr.encoding.
Можно посмотреть в исходниках python, как определяются эти свойства.
Sirion
Вы никогда не слышали про батники?
androidovshchik Автор
Да. Похоже это аналог Bash в Линукс. Знаете, exe файл как-то привычнее для пользователя
some_x
Какая ему разница?
staticlab
Вот и выросло поколение :(
poxvuibr
Какого ещё пользователя :)? У вас продукт представляет из себя локально запущенный сервер, который пользователь предварительно у себя деплоит, выкачивая при этом библиотеки из npm?
androidovshchik Автор
Заказчик) Вы правы, насчет его работы. И это один из самых простых вариантов
poxvuibr
Тогда советую отдавать работу заказчику уже со всеми зависимостями, чтобы ему нужно было только запустить сервер. Плюс я, конечно, не настоящий сварщик, но может вам ему вообще на электроне приложение забацать?
androidovshchik Автор
Так и сделаю. Я тоже не сварщик) И уж очень крупный этот фреймворк
poxvuibr
Взялся за node.js — не думай о размере вообще :). Как вариант можно попробовать javafx — тут опыт разработки на андроиде наверное поможет.
sanchezzzhak
а лучшим вариантом будет написание тестов, а если нужны браузерные тесты то selenium + phantomjs.