Sly32

Рейтинг
399
Регистрация
29.03.2012
Должность
Software engineer
chaturanga #:
1+1 с обочиной размером с полосу
и разметка там действительно носит рекомендательный характер

Завис, пытаясь понять смысл фразы... В Витебской области какоие-то свои ПДД, в которых сплошная слева имеет другой смысл? 
Может, все таки откроем ПДД и прочитаем? 

Вообще я конечно уже устал от бардака на белорусских дорогах - какое-то бессмысленное броуновское движение. Пообщался с друзьями тут -  у всех такое же мнение как у меня об гостях с номерами РФ - ПДД вообще не для них похоже. Стоит можина под знаком Остановка запрещена, на полосе разгона/вьезда на кольцевую, на паркинге сразу на 2-х местах, на местах для инвалидов - 90% это будут гости...

Уже дни до отьезда считаю

Vladimir #:
эти явления многочисленные, но еденичные. 

знаешь, что такое оксюморон? 😀

Александр Воробьев #:
Если я правильно понимаю то head.html - это тоже шаблон.
Приятно общаться с теми, кто на лету понимает
Александр Воробьев #:
то тогда и html не совсем корректно, тогда лучше достаточно популярное tpl 

суть в том чтобы разделить обработку в шаблоне и бэк. Я вижу файл с расширением .php  и предполагаю что там  что-то делается. если это .html/.tpl -  я четко понимаю предназначение. В пайтоне редко используется tpl,  а так да - вполне можно использовать для шаблонов - так даже лучше.

MrPi #:
Ну судя по его шаблонизатору, он использует jango вероятно {%%} {{}}.

то есть ты имел доступ к моему репо и теперь на голубом глазу набрасываешь про джанго? Мне доатсточно этого для понимания твоего уровня... даже не вижу смысла с тобой дальше что-то обсуждать. 

MrPi #:
. Остальное кабала для сольника.

но комментс. Может ты все таки бы сначала попытался понять остальные принципы, прежде чем набрасывать? впрочем мне - неинтересно. Далеее - игнор твоего бреда.


Snake800 #:

Я неправильно выразился: чтобы регистрацию получить (временную прописку)

Для регистрации тебе нужен бессрочный контракт на жилье - это на усмотрение собственника, с кем его подписывать. А два мужика там будут или две тетки - неважно. 

Vladimir SEO #:
Как образом сайт по "ремонту айфонов" втирает ненужные услуги клиенту
Причем тут сайт по услугам? не путай твои никому не нужные услуги, которые ты впариваешь клиенту и собственно услуги по ремонту! Тоже счет за "аргументированные дискуссии" выставляешь?
Ramzes_13 #:
Хлопок хлопку рознь, в шм есть футболки по 6 евро 100% хлопок, но они тоже не фонтан. Думаю и на вб вполне может быть за 3. 

на одну майку из настоящего хлопка уйдет сырья на полтора доллара и на 15 центов - если вискоза.В Pepco  у нас тоже есть майки по 3 доллара, но они хоть не притовряются 😀

Юникло мне кстати не зашел - синтетика, но дизайн да, гуд.

Кроссы турецкие абибасы  развалились  через полгода - продавилась подошва.
Оригинал ношу уже 5-й год, все жду когда из выкинуть можно будет а они никак не сдаются. В Витебске зашел в магазин Adidas - из 20 моделей с натяжкой могу признать что моделей 5 были оригинальные, остальные - явное фуфло.

Из китая пару раз заказывал ботинки - ну в офисе сидеть или в магаз сбегать норм, с нормальной хотя бы Коламбиа даже рядом не стояли. Мне мои ноги дороги)

Александр Воробьев #:
Пожалуй мы говорим о разном :) не совсем тогда понимаю о чем ты.
Возможно. Попробую на пальцах обьсянить свое видение шаблонизатора.
1. У меня есть базовый шаблон, каркас. В jinja2  это выглядит так.
base.html
<!DOCTYPE html>
<html lang="ru">
  <head>
    {% include "head.html" %}
  </head>
  <body>
    {% include "navbar-main.html" %}

    <main class="container-fluid py-4">
      {% block content %}{% endblock %}
    </main>
все
    {% include "footer.html" %}
    {% include "cookie-consent.html" %}

    <div class="theme-toggle dropdown dropup">
      <button
       class="btn btn-primary dropdown-toggle d-flex align-items-center"
       id="theme-toggle-button"
       type="button"
       data-bs-toggle="dropdown"
       aria-expanded="false"
       aria-label="Toggle theme"
      >

        <i class="bi bi-circle-half"></i>
      </button>
      <ul class="dropdown-menu dropdown-menu-end shadow" aria-labelledby="theme-toggle-button">
        <li>
          <button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="light">
            <i class="bi bi-sun-fill"></i>
            Светлая
          </button>
        </li>
        <li>
          <button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="dark">
            <i class="bi bi-moon-stars-fill"></i>
            Темная
          </button>
        </li>
        <li>
          <button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="auto">
            <i class="bi bi-circle-half"></i>
            Авто
          </button>
        </li>
      </ul>
    </div>
    
    <script>
      (function () {
        const csrfToken = "{{ csrf_token | default('') }}";
        if (!csrfToken) return;
        const forms = document.querySelectorAll("form");
        forms.forEach((form) => {
          if (form.querySelector('input[name="csrf_token"]')) return;
          const input = document.createElement("input");
          input.type = "hidden";
          input.name = "csrf_token";
          input.value = csrfToken;
          form.appendChild(input);
        });
      })();
    
</script>
    <script src="/static/js/cookie-consent.js"></script>
    <script src="/static/js/theme-toggle.js?v={{ release_version }}"></script>
    {% block scripts %}{% endblock %}
  </body>
</html>

тут есть только то, что будет на любой странице - мне не нужно каждый раз это переподключать - стили, скрипты, тот же бутстрап...
Дальше я создаю, например страницу для статей, блог. Аналог твоего RSS.

{% extends "base.html" %}

{% block head %}
  {{ super() }}
  <!-- Schema.org JSON-LD разметка для SEO -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "name": "LearnService - Платформа для обучения",
    "description": "Платформа для эффективного обучения с расписанием занятий, интерактивными тестами и поддержкой ИИ-наставника",
    "applicationCategory": "EducationalApplication",
    "offers": {
      "@type": "Offer",
      "price": "0",
      "priceCurrency": "RUB"
    },
    "aggregateRating": {
      "@type": "AggregateRating",
      "ratingValue": "4.8",
      "ratingCount": "100"
    }
  }
  
</script>
{% endblock %}

{% block content %}
  <section class="page-hero pb-1">

Ты это уже реализовал примерно также. Для кастомной страницы я наследуюсь от  базового шаблона и просто меняю нужные мне блоки - header, content,  в которых и происходит вся магия - так же как у тебя.
Но для того чтобы подключить блок стилей или скриптов мне не нужно регистриовать компонент - у меня уже есть хедер или футер. Я или заменяю его или наследуюсь и расширяя.
то есть просто создаю новый шаблон head.html,  в котором подключаю стили.

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{{ page_title or "Главная" }}</title>
<script src="/static/js/theme-init.js?v={{ release_version }}"></script>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico" />
<link rel="alternate icon" type="image/svg+xml" href="/static/favicon.svg" />
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFebRjXh0JMhjY6hW+ALEwIH"
crossorigin="anonymous"
/>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" />
<link rel="stylesheet" href="/static/css/web.css?v={{ release_version }}" />
<link rel="stylesheet" href="/static/css/theme-toggle.css?v={{ release_version }}" />
<link rel="stylesheet" href="/static/css/cookie-consent.css?v={{ release_version }}" />
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P"></script>
<script src="/static/js/analytics.js?v={{ release_version }}"></script>
<script src="/static/js/switch-language.js?v={{ release_version }}"></script>

все! никакой код писать ненадо пользователю, просто меняю путь к стилям, как ты говоришь, если хочу  прикрутить новогодний.
Просто и понятно даже новичку - 15 минут прочитать про шаблонизатор и начать его использовать. Гибкость - абсолютная. от кода - полная изоляция.

Но на самом деле это спор так, чисто  убить свободное время. Если проект получит развитие, я в 99% просто уйду на фронте на Реакт. Поэтому я всегда больше делаю упор на API.

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

Тут нечего обсуждать - это не про этику. Манипуляции поисковой выдачей, втирание ненужных услуг клиенту. Давно уже все обсуждено. Тему можно закрывать 
Александр Воробьев #:
Компонент подключает - пользователь об этом не знает.

Это все понятно. Но я вижу избыточное решение, которое ничего не дает в плане функционала. Да, так можно, но зачем? Зачем мне отдельно прописывать компонент, который и так отлично работает в хтмл и в шаблоны подключается обычным тегом, без дополнительного класса-прослойки? шаблонизатор - понимаю, наследования, директивы-фильтры - тут все супер. Стили - переусложнение, имхо.

Я почти уверен что ты и сам к этому придешь

Александр Воробьев #:
Это удобно решил. Предположим ставим компонент через композер и мне как его пользователю должно быть пофиг что там со стилями. Возможно мне о них даже знать не надо вовсе. Либо, стили подключаются в зависимости от некоей логики в компоненте. 

это все решается грамотной иерархией без необходимости лишнего рендеринга пхп в хтмл. Вот смотри:
есть базовый шаблон с структурой

Здесь я описываю блоки страницы, а потом просто создаю шаблон для раздела

Который наследует базовый и я могу просто переопределять блоки.
Например стили-

В итоге абсолютно поняитная структура, которая легко подстраивается под требования

Александр Воробьев #:
Да. Над этим вопросом долго думал. И был даже изначально именно с end , но потом все же пришел к слешу.
Александр Воробьев #:
вообще у меня есть идея по расширению функционала директив и там вертикальной черте была роль отведена.

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

Александр Воробьев #:
Это удобно решил. Предположим ставим компонент через композер и мне как его пользователю должно быть пофиг что там со стилями. Возможно мне о них даже знать не надо вовсе. Либо, стили подключаются в зависимости от некоей логики в компоненте. 

Вместо того чтобы просто использовать блок со стилями тебе в итоге нужно каждый раз их подключать - излишний код.
Мы через такое проходили. KISS/DRY/Solid  в помощь 😀

Понятно, что моя критика - как человека который перебрал массу вариантов. Нсли кто-то начнет разработку с твоего фреймворка - он будет прекрасно использовать его без моих заморочек. Вполне понятный синтаксис, мне, как уже 10 лет не работавшему с пхп - все понятно.
В отличие от XML  мешанины твоего конкурента

ardova #:
Хлопок. Дёшево и нажористо. 

Святая наивность - дкмать что за 3 доллара вы купите хлопок 😀 Это самая настоящая вискоза, себестоимость такой майкм полдоллара. У китайцев это огромная индустрия, надпись Cotton -  100%  обман. Вот лэйблы нормальной, настоящей Levi's из фирменного магазина, за которую я отдал  12 долларов. Вот тут плотность 120-140 и я могу проверить это на сайте по артикулу.

Всего: 8560