LINUX.ORG.RU

Хочу написать вэб-приложение

 , , ,


0

1

Собственно, сабж. Никогда с вэбом не сталкивался, даже в архитектуре клиент-сервер ничего не писал, с БД не работал, HTML/CSS/Javascript/Php/ и т.п. не умею, опыта вообще ноль. Хочу - чтобы в браузере открывалась страничка с удаленного сервера, я ввожу текст в поле - идет запрос на сервер, и в другое поле выводится ответ или в третье рисуется графический примитив, допустим. через ajax какой-нибудь или что там еще. В перспективе развития - чтобы несколько человек зашло на страницу и при команде от любого ответы приходили всем. Собственно, вопрос - сейчас 100500 модных слов, технологий и фреймворков - что посоветуете для данной задачи? Какой сервер, и т.п. Особых наворотов не надо, платные компоненты также не хочется рассматривать.


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

</thread>

vostrik ★★★☆
()

Насколько я понимаю, тебе нужно: сделать кнопку, при нажатии на которую идет команда на сервер, а потом все клиенты получают обновленные данные, которые нужно отобразить на странице.

В этом нет ничего сложного - не думаю, что нужно для такой простой задачи использовать какой-то фреймворк (ибо придется помимо языка изучать еще и его). Но тут придется использовать и PHP, и Javascript, и иметь хотя бы какое-то представление о HTML с CSS, чтобы хотя бы на Bootstrap сделать простенькую страничку. Если ты никогда ни с чем из этого не имел дела, то проще поручить задачу кому-то другому.

Ghostwolf ★★★★★
()

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

slyjoeh ★★★
()
Ответ на: комментарий от vostrik

Язык - на клиенте я так понимаю выбора нет, кроме одного - и всех, что в него компилируются, но имхо тогда уж проще на нативе. На сервере выбор языков огромен, хочу жаву - просто потому, что уже есть на ней десктопное приложение, которое хочу овэбить. Язык диктует фреймворк? Есть у меня Вижуал-Студия, там есть шаблоны вэб-приложений на ASP и C#. Есть какие-то пхп-фреймворки... А я связался с жавой. Кстати, надо посмотреть, что там в Идее в вэб-шаблонами. Просто не хочется по незнанию выбрать устаревшую технологию.

Ivana
() автор топика
Ответ на: комментарий от Ghostwolf

Спасибо, но задачу собственного фана и изучения нового как-то не хочется поручать другому ) Я не против ознакомиться с HTML с CSS, и даже с Javascript, и обойтись вообще без фреймворков - это возможно? Только Пхп хотелось бы избежать. Нода.жс? Интересно, но джаваскрипт хотел терпеть только для браузерной нативности.

Ivana
() автор топика
Ответ на: комментарий от Ivana

На java можно взять spring-boot. Настраивается очень просто, проще чем nodejs+express+... Можешь глянуть этот туториал, а дальше наворачивать фич https://spring.io/guides/gs/spring-boot/

Главное надо помнить - это spring-boot. Никаких xml тащить не надо, все работает из коробки.

Еще есть такая клёвая штука http://sparkjava.com/. Тоже очень простая, по факту копия expressjs(node.js) или sinatra(ruby).

blan4
()
Последнее исправление: blan4 (всего исправлений: 1)

Если ты ничего не знаешь, то и ничего не напишешь, элементарно. Учить всё и по многу, копать в сторону meteor.js + node.js.

menangen ★★★★★
()
Ответ на: комментарий от blan4

blan4, Bioreactor - спасибо за java-фреймворки. Я подозревал, что их много, и будет проблема выбора ) А выбрав однажды фреймворк потом уже с него не перейдешь, придется с нуля все переписывать? Тогда цена неправильного выбора велика. Пробовать все? Или начать с HTML руками без фреймворков? Или это каменный век?

Ivana
() автор топика
Ответ на: комментарий от Ivana

Каменный век. Даже я, проповедник веб-некрофилии, подтверждаю это.

deep-purple ★★★★★
()
Ответ на: комментарий от Ivana

По поводу этого есть некоторые умные статьи, как писать веб, чтобы не зависеть от фреймворков. https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html Но этот подход с наскоку не понять да и не надо волноваться. Кстати по спринг буту я прошлым летом делал мини туториал, может быть полезным, надеюсь https://github.com/blan4/SpringBootTutorial

blan4
()
Последнее исправление: blan4 (всего исправлений: 2)
Ответ на: комментарий от blan4

Тогда спринг-бут однозначно рассмотрю и попробую установить и хелло-ворлды по туториалу, если поставится. Спасибо.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Vaadin эмуляция подхода Swing для web.

Можно вот это -

http://examples.sencha.com/gxt/4.0.0/

Пошустрее, но Интерфейс + AsyncИнтерфейс + Реализация как и в «голом» GWT делается вручную.

Книжки есть

Vaadin - http://it-ebooks.info/book/2397/

Классика GWT - http://it-ebooks.info/book/1541/

Немного устарела, но все равно хорошо изложено по Senca GXT - http://it-ebooks.info/book/2401/

Bioreactor ★★★★★
()
Ответ на: комментарий от Bioreactor

Тогда и Vaadin придется пробовать - у меня сейчас Swing приложение, и я прошел через ознакомление с ним: эвент-диспатч тредами, лэйаутами и т.п... Не думал, что можно приблизиться к эмуляции этого в браузере.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Vaadin, конечно не Swing, просто легко перейти со Swing (и/или SWT) на Vaadin.

https://www.youtube.com/watch?v=B5dN69NSS78

Так, что мне нравится больше, чем Sencha GXT, на котором я должен поддерживать на работе свои старые поделия. (GWT/GXT + Spring + JPA2/Hibernate)

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

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

Ivana
() автор топика
Ответ на: комментарий от Bioreactor

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

Ivana
() автор топика

В OO Writer сделай страничку и сохрани в html.

anonymous
()
Ответ на: комментарий от Ivana

Кстати, вспомнил, что когда костылил это приложение на Swing, многие говорили что это устаревшая и немодная технология, и лучше переписать на JavaFX, и потом оно само волшебным образом портируется и на мобильники и в вэб. Или «для работы в браузерах и на мобильных телефонах» не подразумевает полноценное вэб-приложение, а использует только браузерный и мобильный ГУЙ, а вэбность и клиент-серверность сама ниоткуда не появляется? (Извиняюсь за глупые вопросы, но я никогда не сталкивался с этим.) В любом случае, я попробовал ТекстАреа в JavaFX, и либо я неправильно ее приготовил, но там так тормозила полоса прокрутки, что я вернулся на Swing и горя не знал - на нем все работает как надо.

Ivana
() автор топика

Node.js, redis, react, jsonp - а дальше твоя фантазмя

mystery ★★
()
Ответ на: комментарий от Ivana

Или начать с HTML руками без фреймворков?

Естественно. Без понимания основ пляски с фреймворками не принесут никакой пользы.

annulen ★★★★★
()
Ответ на: комментарий от buratino

если найдёте что-нибудь проще - мы вернём вам деньги

buratino ★★★★★
()
Ответ на: комментарий от annulen

Не, ну как-то создал html с вызовом javascript по кнопке и расчетом факториала введенного числа... Или вы про знание html5 в тонкостях? А сейчас я без понимания основ пляшу с бубном в Идее вокруг ошибки

No plugin found for prefix 'jetty' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (C:\Users\Ivana\.m2\repository), central (http://repo.maven.apache.org/maven2)] -> [Help 1]

хотя вроде и Vaadin поставил, и Jetty for Maven установил, и проект создал, и скомпилил. Правда, war не могу найти (может у меня он вообще не создается) и в принципе не представляю как там должно что запускаться.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Вести с полей - вписал плагин в pom.xml, Jetty стартует, но браузер вместо элементов тестового интерфейса показывает структуру папок проекта... Курю http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html , вроде понял, что war не нужен, но надо угадать с сеттингами каталогов классов, сорцов и еще чего-то там... Пляски с фреймворками без понимания основ продолжаются.

Ivana
() автор топика

Новичку напихали жавы по самые яица. Люблю лор.

ritsufag ★★★★★
()
Ответ на: комментарий от Ivana

Сделав обрезание в третий раз, Иван Иванович Иванов все-таки добился права выехать в Израиль (С). В эмбеддед-моде без варника не получилось победить - делаю варник, копирую его с другим именем в нужную папку, в которой производится поиск по умолчанию, вызываю jetty:run-war и наконец-то в браузере открывается то что надо! Понимаю, что костыли, но прямо хоть батник пиши... Разработка будет такая: поменял пару букв в коде, скомпилировал, спаковал варник, вызвал батник, копирующий его куда надо и переименовывающий, запустил ран-вар... Не фонтан конечно, но хоть есть от чего отталкиваться.

Ivana
() автор топика

если нужно как можно меньше мусора, подойдет nodejs например. Там секрвер реализуется в 3 строки, и будешь работать напрямую с запросами.

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

websockets идеально

filequest
()
Ответ на: комментарий от Ivana

но джаваскрипт хотел терпеть только для браузерной нативности.

вот смотрю я на вас, на фапе-дрочеров, и просто недоумеваю. Схему, например, вы не фаршмачите, она вам типо нравится. JS содержит в себе схему, как подмножество, исключая гигиенические прокладки и продолжения (а что, много таких, кто их активно использует?). Почему же тогда JS плохой, а лисп хороший?

filequest
()

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

NodeJS + WebSockets

Остальное ненужно.

Чятег на ноде с вебсокетами - это уровень хеллоуворлда.

/thread

border-radius
()
Последнее исправление: border-radius (всего исправлений: 1)
Ответ на: комментарий от filequest

Почему же тогда JS плохой, а лисп хороший?

Потому, что JS - это и есть Лисп, его диалект с синтаксисом :-)

anonymous
()
Ответ на: комментарий от filequest

Потому что JS, особенно стандарта ES6/ES2015, не вписывается в картину мировосприятия быдлоилитки: «как это так, массам доступен ЯП, который везде запускается, умеет всё, что и наша борщевая прелесть, но при этом имеет куда большую полезность? Непорядок, надо обосрать!»

border-radius
()
Последнее исправление: border-radius (всего исправлений: 1)
Ответ на: комментарий от Ivana

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

А зря. Шестая нода поддерживает ES6 на 93%, можно уже спокойно писать выразительный серверный код безо всяких бабелей, кофеёв и прочих кросс-компилеров.

А если ты не хочешь изучать новые технологии, потому что лисперы с раЁна так сказали, то поциент безнадёжен.

border-radius
()
Последнее исправление: border-radius (всего исправлений: 1)
Ответ на: комментарий от border-radius

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

Ясно дело :-) Ведь не умеет Js многопоточность (и не надо рассказывать про возможность запуска процессов, это из другой оперы совсем), не знает Js про макросы, не ведает Js про сигнальный протокол :-) А во всём остальном, вполне себе Лисп, с относительной качественной и бесплатной реализацией, а не то что красивые концепции на бумаге, но в реализации которым нет ни конца ни края :-) Но вот ведь незадача - альтернативы V8 то нет :-)

anonymous
()
Ответ на: комментарий от border-radius

Ты когда последний раз на JS смотрел? В 2002?

В 2016 :-) Можешь сказать, что из перечисленного есть в JavaScript? Ну хорошо, в Node.js? :-) Многопоточность через Workers (в браузерах и только) похожа на Places в Racket :-) Назвать это многопоточностью можно с большой натяжкой :-) Или сигнальный протокол, может быть, покажешь? :-) Или макросы? :-) (Последние Айк задумал аж в ES8, посмотрим, что получится :-)

anonymous
()
Ответ на: комментарий от border-radius

В браузерах - postMessage/onmessage, в ноде - EventEmitter.

Ну так это же браузер и нода, потому то там эти узкоспециализированные и ограниченные средства работы и имеются :-) Но ты же погнал на Лисп, дескать, Js умеет то же самое :-) Но он умеет лишь то, что умеет, а многопоточность в нём неполноценна :-)

Макросы не нужны.

К счастью, Брэндан Айк, создатель JS, так не считает :-) Потому то он и создатель языка, который уважает Лисп, а не выскочка :-)

anonymous
()
Ответ на: комментарий от anonymous

Или сигнальный протокол, может быть, покажешь?

Прочитал сейчас про эту хрень:

В CL же стек не отматывается сразу, а сперва ищется соответствующий обработчик

А в JS что не так что-ли?

Или макросы?

Что вы дрочите на них, я не пойму? В любом случае, там все сводится к парсингу сырой структуры. Все это можно сделать вообще на любом языке, где есть eval. Вообще ниочем. Если бы в лишпике были фэкспры, тогда это еще можно было выдавать за фичу.

Короче, слабоваты твои аргументы. И вообще, речь шла изначально за схему, а ты тут говоришь за CL

filequest
()
Ответ на: комментарий от Ivana

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

Ghostwolf ★★★★★
()
Последнее исправление: Ghostwolf (всего исправлений: 1)
Ответ на: комментарий от filequest

Прочитал сейчас про эту хрень:

Это не хрень, а очень мощное и практичное средство :-)

А в JS что не так что-ли?

throw в JS раскручивает стек, мне очень жаль :-)

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

Юноша вообще не в теме, что такое макросы в Лиспе, к которым eval вообще отношения не имеет :-) Лол :-)

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

А если был бы забор, то можно было бы взлететь на него и рассказывать оттуда :-)

Короче, слабоваты твои аргументы.

Хахаха :-)

anonymous
()
Ответ на: комментарий от filequest

В 2016 году фапе считаются исключительно ML-деривативы (в простонародье Haskell; про остальные массы не в курсе). Так что схема (и остальные лиспы) тоже говно.

С уважением, фапе-дрочеры.

anonymous
()
Ответ на: комментарий от anonymous

throw в JS раскручивает стек

Что там вообще под этим подразумевается, давай определимся с терминологией. В механизме исключений вообще то стек не раскручивается а сбрасывается. throw бросает(именно бросает!) исключение до ближайшего обработчика.

к которым eval вообще отношения не имеет

я не сказал что имеет отношение, я сказал, что функциональность макросов можно покрыть eval/quote, разница будет только в том, что синтаксис не такой сладкий и время раскрытия другое

А если был бы забор, то можно было бы взлететь на него и рассказывать оттуда

это я не понял к чему вообще

filequest
()
Ответ на: комментарий от anonymous

Я прекрасно знаю, что такое хаскель. Куча сахара, оверхед по памяти, и неспособность выражать тривиальные вещи обычным способом. Сахар компенсирует выразительность только на хелловордах, поэтому в глазах новичков хаскель кажется «крутым»

filequest
()
Ответ на: комментарий от anonymous

И вообще, TCE нет до сих пор (на дворе, напоминаю, 2016 год). Тем, кто считает, что JS чем-то напоминает схему, лечиться нужно.

anonymous
()
Ответ на: комментарий от anonymous

Что такое TCE? Может TCO ты имел в виду? В новом стандарте вроде есть. А вообще значение его сильно преувеличено.

filequest
()
Ответ на: комментарий от filequest

Что там вообще под этим подразумевается, давай определимся с терминологией. В механизме исключений вообще то стек не раскручивается а сбрасывается. throw бросает(именно бросает!) исключение до ближайшего обработчика.

Ну вот можешь же общаться нормально, не нарезая хреновых понтов :-) Стек имеено раскручивается :-) Есть давным давно устоявшияся термин stack unwinding :-) Это означает, что если foo вызывает bar, а bar генерирует (а не бросает) исключение, то управление передается foo :-) В Лиспе если bar генерирует сигнал ошибки, то foo ставится в известность, а bar ожидает решения, которое принимает foo :-) foo может выбрать рестарт и bar продолжит работу :-)

я не сказал что имеет отношение, я сказал, что функциональность макросов можно покрыть eval/quote, разница будет только в том, что синтаксис не такой сладкий и время раскрытия другое

Нет, нельзя :-) Макры работают на этапе компиляции, т.е., как ты выразился, «время раскрытия другое» :-)

это я не понял к чему вообще

Поймёшь когда-нибудь :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.