Удобство разработки

ArbNet
На сайте с 27.10.2019
Offline
125
654

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

Как сделано сейчас.

Есть разные файлы: макеты(html), стили(css), жабаскрипт(js), ну и php классы. Пользователь прописывает в XML структуре что хочет разместить на странице, движок формирует страницу из разных файлов.
С js ситуация следующая: движок подключает в head скрипт загрузчика и тот подключает нужные модули указанные в XML структуре.

В чём вопрос? Сейчас чтобы на странице работали js скрипты нужно указывать в структуре(XML) какие модули необходимы. Я по мере своих возможностей разрабатываю инструмент на котором простые люди далёкие от программирования могли делать с ноля свои сайты не уступающие, а скорее даже превосходящие по качеству и функционалу от профессиональных веб-студий разработки. Возникла мысль чтобы люди просто в зависимости чего хотят посмотрели пример в документации и делали по аналогии.

Какие мысли по улучшению? Чтобы не нагружать людей разными тонкостями такими как подключение нужных js модулей сделать некую систему команд. Загрузчик js просматривал html и в зависимости от этих команд подключал сам нужные модули. Большинство модулей импортируют для себя нужные им другие модули и в итоге в структуре нужно указать лишь один, два, три, но и этого хочется чтобы пользователь не делал, а всё было автоматически.

Файлы модулей которые при необходимости нужно указывать в структуре:

  • Prototypes - прототипы, для расширения стандартных функций языка, можно по мере надобности дополнять, и эти прототипы будут доступны во всех модулях. Иногда они нужны, иногда нет, поэтому сделано так чтобы их можно было подключать по мере необходимости;
  • Ui - пользовательский интерфейс, взаимодействия с пользователем, разные функции для показа сообщения, задания вопроса пользователю, разные фишки на странице для удобства и тд.;
  • Do - это своего рода модуль реактивности, то есть как в React, Vue - управление какими то экземплярами, я их назвал юниты(это компоненты у которых указан id и по этому id можно выбирать тот или иной юнит и затем по атрибутам с параметрами изменять дочерние элементы)
  • Animation - анимация, включение эффектов анимации;
  • Sprite - перемещающие элементы, плавающие окна;
  • DragDrop - перетаскивание элементов и файлов;
  • Speech - говорилка, произношение текста;
  • UserTags - пользовательские тэги;
  • возможно расширение, в будущем могут быть разработаны и другие модули.

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

  • Ui - прописываются функции в событиях например: Ui.listing(this), есть тэг listing в котором показывается образец, при наведении на этот образец появляется кнопка "код", нажав на кнопку вместо вида будет показан HTML код;
  • Do - так же прописываются функции в событиях вида: _('id юнита').class('nick или атрибут=значение дочернего элемента','color:red'), также в юнит можно добавлять свои функции как в metods в Vue;
  • Animation - прописываются функции в атрибуте data-aa="func(par);func(par)"
  • Sprite - чтобы элемент перемещался нужно в атрибуте id задать значение начиная с sprite_
  • DragDrop - наличие в атрибутах draggable, ondrop
  • Speech - у тега <p> указывается атрибут data-speech="язык произношения" при наведении на абзац появляется значок рупора кликнув на который текст будет произнесён, также появится плавающее окно для настроек скорости, высоты и др. произношения
  • UserTags - можно создавать свои теги
Хочется всё это привести к единой структуре, одному виду команд.
Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp
totamon
На сайте с 12.05.2007
Offline
437
#1

в чем вопрос? список модулей, чекбоксы, кнопка сохранить...

" посмотрели пример в документации и делали по аналогии. " юзеры... в документации... посмотрели? где ты таких найдешь?😀

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
Александр
На сайте с 18.03.2020
Offline
144
#2
Возьмите за образец дружелюбный макет любого конструктора на wp
ArbNet
На сайте с 27.10.2019
Offline
125
#3
totamon #:

в чем вопрос? список модулей, чекбоксы, кнопка сохранить...

" посмотрели пример в документации и делали по аналогии. " юзеры... в документации... посмотрели? где ты таких найдешь?😀

Есть например те кто делают сайты под заказ, сео специалисты, индивидуальные предприниматели, самозанятые, и тд и тп. Чтобы не связываться с разными рода "спецами" которые ищут кто может заплатить и парят им потом мозги прося ещё и ещё денег в итоге ничего не сделав или накрайняк поставив WP. Чтобы человек мог сам сделать, такие найдутся не сомневайтесь и им не составит труда немного ознакомится с документацией и сделать по аналогии себе сайт такой какой они хотят.

Solunsun #:
Возьмите за образец дружелюбный макет любого конструктора на wp

Не смешите 😀

Во-первых я разрабатываю фреймворк, а не конструктор. Во-вторых там на 90% всё сделано коряво.. по аналогии с этим г. я уж точно делать не буду.

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

МА
На сайте с 02.11.2018
Offline
168
#4
Не взлетит.
Nokia x71 (https://x71.ru/) - хороший смартфон, и отзывы интересные
ArbNet
На сайте с 27.10.2019
Offline
125
#5
Махмуд Аббас #:
Не взлетит.

Махмуд у тебя точно ничего не взлетит 😎

T7
На сайте с 19.09.2018
Offline
63
#6
ArbNet :

С js ситуация следующая: движок подключает в head скрипт загрузчика и тот подключает нужные модули указанные в XML структуре.

В чём вопрос? Сейчас чтобы на странице работали js скрипты нужно указывать в структуре(XML) какие модули необходимы.

У меня, просто - для любого документа можно добавить свой  cssList и jsList. И никакого XML🤪

В шаблоне

{% if cssList %}
const cssList = {{ cssList }};
{% endif %}
{% if jsList %}
const jsList = {{ jsList }};
{% endif %}
В js
  if (typeof cssList !== 'undefined') {
    if(typeof cssList == 'string') cssList = cssList.split(',');
    else if(!Array.isArray(cssList)) cssList = null;
    if(cssList){  for( let i in cssList ) { addcss(cssList[i]); } };
  }

  if( document.querySelector(".fa") ) {
    addcss('/static/vendor/font-awesome-4/css/font-awesome.min.css');
  }

Кроме того,  на мой взгляд, д.б. предусмотрена динамическая загрузка. Ну, типа, что то поменялось, например пользователь залогинился или еще чего (XHR рулит), нужны какие то  доп. функции.

Или вот, нажал юзер кнопку иии.. загрузился редактор, навесился на элементы [data-cid], а кнопку повесил Listener активации и деактивации редактора.

let el = $$('adm_btn')
if(el){
      let elms = document.querySelectorAll('[data-cid]');
      if(elms.length) {
        loadScript( baseHost+'/static/vendor/*****/awysiwyg/dist/bundle.js', function(){
          let m = new aEditor.app(elms);
          el.addEventListener('click', (e)=>{
            if( m.is_disabled ){
              el.classList.add('active');
              m.editor_init();
            } else {
              el.classList.remove('active');
              m.editor_destroy();
            }
          });
        });
        addcss(baseHost + '/static/vendor/*****/awysiwyg/dist/css/ed.css');
      }
}

ArbNet
На сайте с 27.10.2019
Offline
125
#7
timo-71 #:
У меня, просто - для любого документа можно добавить свой  cssList и jsList. И никакого XML

Дело в том, что вы немного разбираетесь в программировании и можете писать код.

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

timo-71 #:

Кроме того,  на мой взгляд, д.б. предусмотрена динамическая загрузка. Ну, типа, что то поменялось, например пользователь залогинился или еще чего (XHR рулит), нужны какие то  доп. функции.

Или вот, нажал юзер кнопку иии.. загрузился редактор, навесился на элементы [data-cid], а кнопку повесил Listener активации и деактивации редактора.

Мой инструмент может подключать не только модули js, а также css и др., так же динамически как в React и Vue подгружать контент, менять его и тд. и тп. Когда какой-то код повторно загружает модуль, стили или что-то то данные будут браться из уже подключенного и тд. Всё это реализовано.

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


ЗЫ. В начале у меня был один модуль Ui и в разметке я просто указывал атрибут data-ui="разные функции". Объяснить человеку, что надо прописать такой атрибут с нужными параметрами по примеру, это же не сложно и наверняка многие с этим справятся. Чем объяснять, что нужны модули, что их надо так-то подключать и тд.

Скрипт просматривал HTML, находил data-ui и вешал обработчики функций. А функции могут быть какими угодно. Всё как бы прекрасно. Затем я посмотрел как работают React, Vue, интересные у них подходы, но чисто с моей точки зрения уже устарелые, так как сейчас на нативном js делать с созданием своих компонентов можно практически то же самое и даже больше. Я разработал свой модуль для реактивности и переделал команды к функциям. Стало ещё круче, но с точки зрения удобства не очень, вот и задумался как бы сделать более гибче и систематизированнее.

Вот по аналогии с data-ui опять думается сделать, но всё же вижу в этом некий минус поэтому и не тороплюсь с реализацией так как чувствую могу сделать ещё лучше.

Александр
На сайте с 18.03.2020
Offline
144
#8
ArbNet #:

Не смешите 😀

Во-первых я разрабатываю фреймворк, а не конструктор. Во-вторых там на 90% всё сделано коряво.. по аналогии с этим г. я уж точно делать не буду.

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

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

П.С.: разрабатывал среду для сверки показателей по сетке сайтов. Проводил опросы среди юзеров (на тематических площадках и т.п.), собирал все пожелания и структурировал это все в продукт.

arbitrate
На сайте с 04.02.2018
Offline
59
#9
ArbNet :
Вопрос по сути риторический. У меня время от времени появляются мысли как улучшить свой инструмент. Наверно для многих этот вопрос будет сложен так как мой инструмент не похож на общепринятые, но всё же рискну узнать ваше мнение, иногда это навеевает на нужное решение. Говорю заранее всем спасибо кто поучаствует в дискуссии.

Где можно увидеть сайт, который уже реально использует ваш фреймворк? Или это абстрактный проект без реального применения?

Идентификация – идеальная технология определения контактов посетителей вашего сайта https://clck.ru/bvvEM
ArbNet
На сайте с 27.10.2019
Offline
125
#10
arbitrate #:

Где можно увидеть сайт, который уже реально использует ваш фреймворк? Или это абстрактный проект без реального применения?

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

Почему закрытым? Да потому что разрабатываю один(нет желающих совместно вести разработку), это эксклюзив. Самое основное сделано, остались небольшие доработки и затем будет сайт проекта на этом инструменте. После демонстрации найду желающих за оплату обучится на нём делать сайты, те в свою очередь могут так же обучать других снизив стоимость обучения и так далее. Этим я гарантирую его окупаемость и дам заработать тем кого мой инструмент заинтересует. Постепенно движок станет доступен всем и распространятся бесплатно.

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