-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Добавить поддержку html + css #368
Comments
Необходимо подготовить интерфейс и бекенд. Задачи можно сделать независимо. |
Тут фронтенд подойдет? |
да, тут бекенд и фронтенд, можно вдвоем делать (один бек, другой фронт) |
Давай я займусь фронтендом |
Не получается запустить http://localhost:3000/ При запуске make start у меня ругается:
|
Есть ли макет, где я могу посмотреть, как нужно реализовать, или я должна придумать? Я посмотрела на другой сниппет Replit, там в одном редакторе присутствуют три файла: js, html, css. Так нужно реализовать? |
@Lena05k пока у нас нет поддержки работы нескольких файлов. Я предлагаю ограничиться работой с одним файлом. Макета пока нет, можно ориентироваться на тот дизайн, что у нас есть. Плюсом вы можете создать draft пулл реквест, задеплоить демонстрацию и показать, что получается |
Я не в силах выполнить задание. |
@Lena05k Лена, привет. Давайте созвонимся (договоримся в чатике |
@fey Я с удовольствием присоединюсь к звонку, но так как плохо слышу, не смогу участвовать. Могу вести с вами переписку вместо звонка. |
@Lena05k Да, давайте. Можно здесь. Сейчас у нас в редакторе ограничение на один файл, в котором может работать пользователь. Значит мы можем сделать только поддержку html в самом начале. Что нам для этого нужно
В зависимости от этого языка у нас будет меняться подсветка в редакторе + отступы. Кажется эту задачу можно сделать без бекенда, чисто сделать компоненты. Получится такое сделать?) |
@fey Я в новом сниппете добавила еще один значок HTML. После нажатия на него открывается файл HTML. Но я не знаю, как создать логику, которая меняла бы значение currentLanguage на нужный язык при создании нового сниппета с определенным языком поддержки. Если в currentLanguage указать HTML, то подсветка HTML в редакторе будет отображаться следующим образом. |
@Lena05k Создайте пулл реквест, оформите его в draft. Запишите вопрос в ПРе, попросим помощи наших студентов. |
Попробую влиться в обсуждение. Как я понимаю задачу: На странице со сниппетом есть две "переменные" которые зависят от языка:
Состояние языка описано в слайсе. Там же есть редьюсер , который позволяет изменить текущий язык. Соответственно, при создании нового сниппета в состоянии должен устанавливаться соответствующий язык:
@fey кстати, возможно от этой строки стоит избавиться? Теперь, когда в состоянии актуальный язык, на странице со сниппетом мы можем вывести соответствующие элементы ("переменные"). Сначала получаем язык из состояния в файле:
Далее передаём язык в редактор кода и в терминал/рендер. @fey прошу поправить, если где-то неправ. |
да, у вас должен получится свич кейс или словарь, где язык это ключ. Посмотрите как это сделано в КБ. Там есть словари с разными настройками. Например использовать табы или размер отступов. Можно эти настройки сгруппировать, получится обьект с настройками конкретного языка. И на текущем этапе будет два обьекта - под javascript и под html
Не знаю :D Видимо да Да, получается с бекенда будет приходить инфа о сниппете - код, язык, может еще какие-то настройки. Структура пока не известна. |
Пока не догоняю, зачем для этой задачи нужен бек. И что на данном этапе можно сделать с рендером? |
@d13ch с бекенда вы получаете язык сниппета чтобы отрисовать в нужном виде синтаксис + показ рендера страницы. |
@fey как я вижу этот процесс: на странице профиля происходит загрузка всех сниппетов пользователя. Каждый сниппет - сущность с набором свойств, среди которых есть язык сниппета. Поэтому в моём понимании работа бека заключается в том, чтобы отдать нам список сущностей. За последующее отображение элементов при нажатии на сниппеты и создании нового отвечает фронт 🤔 |
Угу, фронтенд должен запрашивать данные для построение UI. Только не совсем понимаю, а причем тут список? |
Это про тот список, что находится на странице пользователя. То есть, приложение уже знает, на каком языке написан каждый из сниппетов. Можно ли использовать уже полученную информацию, чтобы не подгружать те же данные второй раз? Или это ненужная оптимизация? |
Кажется выглядит лишним. Мы ведь можем открыть сниппет по прямой ссылке, а не перейти с профиля. |
А что с рендером? Есть ли проверенные решения, которые можно использовать? |
@d13ch нет, пока нету, бекенд не сделали. |
Тут у меня пока не хватает понимания, как это можно сделать |
@d13ch вспомните 2 проект. Там мы использовали парсер или форматтер в зависимости от условия. |
@fey как реализовать вывод в зависимости от условий, я могу представить. Пока не понимаю, что вставить на место блока рендера. Пустышку? |
угу, можно просто положить код html и его рендерить. |
Задачку можно делать поэтапно в 2. @d13ch можете расписать плз итоги. как решили это реализовать? Тогда Елене будет понятно, как можно с вами поработать над задачей. |
@fey сначала долго не мог понять, как выполнить задачу, но после созвона стало значительно легче ей заниматься. Ещё пару дней вникал в то, как и какие файлы между собой взаимодействуют и какие данные передают друг другу. Сегодня сел и залпом всё сделал. Ну почти всё) Так что извиняюсь, что пропустил последнее сообщение в треде. Оформил черновой ПР и написал в комментарии к нему итоги работы #385 |
попробовал сделать связку js-html, вопрос если в сторе editor помимо поля code сделать отдельные поля codeHTML, codeCSS, это норм? |
Хм, я верно понимаю, что вы сделали, чтобы в одном сниппете было несколько файлов? Просто с этим можем проблема) Что бекенд еще не поддерживает это. |
образно, а так все данные хранятся в сторе, никаких файлов |
тут надо подумать, а как лучше. Ибо на бекенде если это не реализовано, то будет сложно и больно. Как вариант - не делать пока разделение на несколько файлов, а ограничиться только html |
скорее всего так не получится. У нас ведь не только htmlcssjs может быть. но и пайтон и при этом может быть несколько файлов. Например файловая структура. ПОэтому я предлагаю сперва идти по простому пути. Например выводить HTML и внутри него использовать style для css и script для джаваскрипта. |
в случае пайтона код пойдет в code, поэтому хотелось уточнить в каком виде мы хотим видеть структуру где храниться код
а вот тут интересно, я тож собрал хтмлку через стайл и скрипт, а имеется ввиду чтобы эту собранную хтмлку надо отправлять на бэк в code? а так понял принял пока не буду тогда допиливать то что получилось |
да, у нас сейчас система, что есть только 1 файл. В случае питона будет аналогично code, потому что нет разделения на много файлов и мало файлов. Т.е. у нас даже понятия файл нет, просто место, куда можно писать код =) Поэтмоу изначально предлагал схему с вводом кода в 1 файл html, а потом расширять до аля-кодпен или repl с файловой системой. |
Problem description
Сейчас поддерживается только JS. Добавляем поддержку HTML + css
Proposed solution
Оставляем слева такой же редактор. Ставим язык html. Вместо терминала справа выводим блок, в котором будет рендериться html + css
Сперва можно разработать интерфейс, потом бекенд.
Интерфейс страницы редактора должен зависеть от "языка" сниппета.
The text was updated successfully, but these errors were encountered: