Каковы Ваши подсказки для лучшей практики для структуры веб-приложения? [закрытый]

Guid - это тип значения, поэтому он не может быть нулевым. Один из способов проверки:

if (contactId == Guid.Empty)

или

 contactId == default(Guid)
24
задан hexacyanide 16 October 2013 в 16:22
поделиться

6 ответов

у меня должна быть одна основная таблица стилей для целого сайта и один для каждой отдельной страницы для настроек?

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

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

у меня должен быть другой для стилей печати?

Обычно да. Пока можно встроить стили печати в другой таблице стилей с помощью правила @media, это традиционно было багги, таким образом поместив медиа в < ссылка> тег является обычно самой легкой. В любом случае таблицы стилей печати часто так отличаются от своих экранных дубликатов, что просто имеет смысл разделять их правила.

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

Да, но этот эффект часто завышено. HTTP/1.1 уменьшает задержку на запрос путем сохранения соединений между клиентом и сервером живыми, который является сильным смягчением.

то, Сколько, является слишком многими?

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

Вы в большой степени комментируете свой CSS?

Легкий комментарий обычно должен быть достаточно. Декларативный стиль правила CSS обычно не становится достаточно сложным для необходимости в во всестороннем коде объяснений, может потребовать. В особенности, хотя, зарегистрируйте что-либо парадоксальное как определенные для браузера взломы.

Располагают в алфавитном порядке в элементах?

Не, если это не помогает Вам справиться. Обычно это не было бы, Вы попытаться сгруппировать подобные правила или правила, относящиеся к подобным группам элементов.

мне нужен сброс?

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

Должен я включать одну или две хороших библиотеки (jQuery и Прототип, например)

не включают больше чем одну платформу, если Вы абсолютно не имеете к.

и затем другой включал для каждой страницы?

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

Структура каталогов: Как Вы организуете сайт?

Лично, для моих приложений Python/WSGI:

appfolder
    application.py       - main WSGI entry point and control/configuration script
    data                 - run-time writable application file store
        private          - files not available through the web server
        public           - mounted as a virtual directory on the web server
    logs                 - access, error, application log files
    system               - all the static application code and data
        htdocs           - web server root folder
            file         - static servable files
            img          - static images
            script       - JavaScript
            style        - CSS
        lib              - Python modules used by site
            appmodule    - main application code package
        templates        - HTML page templates
            mail         - mail text templates

для меня важно сохранить ‘data’ в отдельном месте (с отдельными полномочиями) к приложению в ‘system’. Необходимо быть в состоянии выгрузить папку ‘system’ для обновления приложения, не имея необходимость волноваться, что существуют загруженные изображения в htdocs/img, который необходимо взволновать по поводу хранения.

23
ответ дан bobince 28 November 2019 в 23:45
поделиться

Я отправил свою структуру каталогов и комментарии в другом потоке, но это применимо здесь также!

я использовал следующую установку некоторое время теперь с большими результатами:

  • / сайт: Это - то, где мой фактический рабочий веб-сайт будет жить. Я установлю свой CMS или платформу в этом каталоге после того, как шаблоны будут созданы.

    • .htaccess (основные тонкие настройки я обычно включаю так или иначе)
    • robots.txt (таким образом, я не забываю запрещать объекты как / администратор позже)
  • / источник: Содержит любые аккомпанементы, примечания, документы, спецификации, и т.д.

  • шаблоны/: Запустите здесь! Создайте все статические шаблоны, которые должны будут в конечном счете быть портированы в CMS или платформу / сайта.

    • / _behavior <ул.> <литий> global.js (сайт-специфичный код; может вспыхнуться в несколько файлов по мере необходимости)
    • / _media: Изображения, загружаемые файлы, и т.д. Организованные по мере необходимости

    • / _style: Я предпочитаю модульную разработку CSS, таким образом, я обычно заканчиваю со многими таблица стилей для каждого уникального раздела веб-сайта. Это очищено значительно с Блендер - я настоятельно рекомендую этот инструмент!

      <ул.> <литий> print.css (это в конечном счете смешивается, так используйте печать @media) <литий> reset.css ( Eric Meyer ) <литий> screen.css (для экрана @media, карманного компьютера) <литий> дополнительные модули по мере необходимости
    • / _vendor: весь сторонний код (jQuery, застекленная витрина, и т.д.)

    • Blendfile.yaml (для Блендера; посмотрите выше)

    • template.html (основной стартовый шаблон; может быть скопирован и переименован для каждого уникального шаблона)
  • тесты/: Селен модульные тесты

3
ответ дан Mark Hurd 28 November 2019 в 23:45
поделиться

Приложите все усилия, чтобы иметь одну таблицу стилей. Соединение листов отдельного стиля для отдельных страниц побеждает цель.

можно наследовать другие таблицы стилей в css включением следующих строк наверху листа

@import url('blueprint/screen.css');
@import url('blueprint/styles.css');

в этом случае, я наследовал проект css стили тогда добавление моих пользовательских стилей ниже этого.

С точки зрения библиотек JS я предпочитаю связывать 3 файла.

Библиотека, одна страница со всеми плагинами и наконец код страницы.

Для структуры каталогов у меня обычно есть следующее:

/ _css / _images / _scripts файлы

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

Hope, которой это помогает.

1
ответ дан Birk 28 November 2019 в 23:45
поделиться

Я всегда пытаюсь помешать браузеру иметь, чтобы загрузить и интерпретировать правила CSS и код JS, который не используется на рассматриваемом HTML. Я соглашаюсь с @bobince, что необходимо только повредить стили страницы и сценарии в отдельный файл, если будет необходимо для организации, но если сайт будет очень большим вообще, то Вы достигнете той точки.

Однако, так как я только создаю основанные на шаблоне сайты, я начинаю задаваться вопросом, почему я связываюсь с внешними файлами вообще. Например, если у меня есть шаблон основы вещи, я вставил главу того шаблона, будет применен ко всем страницам на моем сайте. Итак, почему не только помещает мои стили и сценарии там?

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

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

я предлагаю, чтобы любое правило стиля, которого не выражают на каждая страница , было помещено в <style> теги в подшаблоне, который представляет HTML, к которому относится правило. Это переместит загрузку и сложность от глобальной таблицы стилей до фактической страницы, где стили необходимы и дают контекст правил так, чтобы они могли сохраняться в будущем. Если это пугает Вашего разработчика, они не должны писать CSS так или иначе. Просто скажите им придерживаться Photoshop и позволять Вам сделать работу большого мальчика.

0
ответ дан Jesse Hattabaugh 28 November 2019 в 23:45
поделиться

Только убедитесь, что вы не используете заглавные буквы для папок. Это может вас укусить, когда вы разрабатываете для Windows и развертываете на сервере Linux.

3
ответ дан 28 November 2019 в 23:45
поделиться

CSS: Я использую только одну таблицу стилей. Я просто продолжаю добавлять в конец по мере продвижения. Я обычно помещаю комментарий перед каждым набором правил для конкретной страницы. Ctrl + F, если мне нужно что-то отредактировать.

Javascript: Обычно включают только одну библиотеку и, возможно, несколько плагинов. Используется для перебрасывания любого специфичного для страницы JS непосредственно в заголовок этой страницы, но я считаю это немного уродливым и смешивает «поведение» с данными. Итак, я начинаю новую парадигму -

MVCB - Модель, Представление, Контроллер, Поведение. MVC отлично подходит для настольных приложений с довольно статичным пользовательским интерфейсом, но когда вы добавляете много JS, я думаю, что это требует дополнительного уровня абстракции.

Итак, моя исходная файловая структура:

index.php
app
    config
        bootstrap.php               -- code that needs to run before anything else, or functions that don't really fit elsewhere
        core.php                    -- timezone, database, and misc settings
        routes.php                  -- default routes
    layouts                         -- layout/template files
        flash                       -- layouts for one-time popup messages
    objects                         -- all files are stored in the same folder as the controller to keep directories
                                            smaller and ease reusability
        object
            controller.php
            model.php
            routes.php              -- object-specific routes to override default routes
            behaviours              -- page-specific javascript files
                action.js           -- included automatically on that page if this file exists
            views
                action.php          -- the view for this action
    public                          -- static media files, sometimes called "assets"
        favicon.ico
        xrds.xml
        css
        img
        js
        uploads         
core
    app.php                         -- initializes stuff
    controller.php                  -- default controller
    dispatcher.php                  -- includes everything and calls all the appropriate functions
    model.php                       -- default model that all other models inherit from
    components                      -- helper functions to used in controllers
    datasources                     -- mysql, oracle, flat-file...
    helpers                         -- functions to be used in views and layouts
    structures                      -- model helpers such as tree or polymorphic behaviours
    utils                           -- functions that are useful everywhere
libs                                -- 3rd party libs

.htaccess

Options -Indexes 

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/app/public/
RewriteCond %{DOCUMENT_ROOT}/app/public%{REQUEST_URI} -f
RewriteRule .* /app/public/$0 [L]

RewriteCond %{REQUEST_URI} !^/app/objects/
RewriteRule ^([^/]+)/(.+\.js)$ /app/objects/$1/behaviours/$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.php?url=$0 [L,QSA]
8
ответ дан 28 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: