Apache httpd tutorial: introduction to server side includes

Как оценивают соблюдение ESG-принципов

Бизнес, который претендует на хорошую ESG-оценку, должен соответствовать стандартам развития в трех категориях: социальной, управленческой и экологической.

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

Например, бренд обуви Timberland сотрудничает с производителем шин Omni United и делает подошвы ботинок из переработанных шин.

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

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

К 2019 году бренду Patagonia удалось поднять зарплату рабочим до прожиточного минимума на 11 из 31 фабрики

(Фото: Patagonia)

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

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

Исполняемые команды

Я надеюсь, что через некоторое время в следующие месяцы напишу статью об использовании SSI с маленькими CGI-программами. Ниже показано, что вы можете делать с элементом exec. Вы фактически можете с технологией SSI выполнить команду, используя оболочку (/bin/sh, если быть точным – или оболочку DOS, если у вас Win32). Следующие примеры предоставляют вам перечень директив.

<pre>
<!—#exec cmd=»ls» —>
</pre>

Или для Windows:

<pre>
<!—#exec cmd=»dir» —>
</pre>

Вы могли бы заметить некоторую странность форматирования этой директивы для Windows, так как вывод команды dir содержит строку «<dir>», что сбивает обозреватели.

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

Вы можете разрешить использование SSI, но без функции exec, установив аргумент IncludesNOEXEC для директивы Options.

Как узнать и изменить название сети на роутере

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

TP-Link

Посмотреть SSID в настройках роутера TP-Link можно по-разному, в зависимости от установленной версии прошивки и интерфейса модели.

Инструкция для техники с синим интерфейсом:

  1. Нажать «Базовая настройка».
  2. Перейти в раздел «Беспроводной режим».
  3. Здесь можно посмотреть текущее имя подключения (или нескольких, если роутер двухдиапазонный), установить новое значение и изменить пароль.

Завершив изменения, нужно нажать «Сохранить», а затем перезапустить маршрутизатор, чтобы новые значения вступили в силу.

Модели с зеленым веб-интерфейсом:

  1. Открыть вкладку «Беспроводной режим».
  2. Выбрать «Настройки беспроводного режима».
  3. Установить название.
  4. Нажав «Защита беспроводного режима», можно выбрать тип шифрования и установить пароль.

Завершив действия, нужно кликнуть «Сохранить».

Роутеры с черным веб-интерфейсом (AX110000):

  1. Кликнуть «Wireless».
  2. В строке Network Name (SSID) установить новое имя.
  3. В поле «Password» ввести новый пароль.
  4. Сохранить изменения.

В зависимости от модели, года выпуска и версии прошивки встречаются и другие варианты веб-интерфейса роутеров TP-Link. Принцип действия будет одинаков: нужно найти раздел «Беспроводная сеть (режим)» и внести в нем соответствующие изменения.

Asus

Чтобы узнать имя сети на роутерах ASUS и сменить его, нужно:

  1. Открыть веб-интерфейс.
  2. В разделе «Дополнительные настройки» кликнуть «Беспроводная сеть».
  3. Перейти во вкладку «Общие».
  4. В поле «SSID» посмотреть и изменить имя.
  5. В поле «Предварительный ключ WPA» ввести новый пароль.

Сохранить изменения, нажав на кнопку «Применить».

D-link

Инструкция для роутеров D-Link:

  1. Открыть личный кабинет устройства.
  2. Выбрать вкладку «Wi-Fi», нажать «Основные настройки».
  3. В строке «SSID» изменить имя.
  4. Чтобы изменить пароль, перейти в «Настройки безопасности».
  5. Ввести новое значение в поле «Ключи шифрования».

Сохранить новые значения кнопкой «Применить».

Keenetic

Инструкция для роутеров Zyxel Keenetic:

  1. Открыть настройки маршрутизатора.
  2. Кликнуть «Сеть Wi-Fi».
  3. Нажать на «Соединение».
  4. Включить точку беспроводного доступа.
  5. В поле «Имя» ввести новое название.
  6. Во вкладке «Безопасность» можно установить или изменить пароль.

Кнопкой «Применить» сохранить изменения.

Tenda

Инструкция для роутеров Tenda:

  1. Открыть интерфейс устройства.
  2. Перейти в раздел «Wireless Settings».
  3. Включить Wi-Fi.
  4. В поле «Wi-Fi Name» указано имя соединения. Его можно изменить или отставить в прежнем виде.

Для сохранения новых значений нужно нажать «Ок».

«Server Side Includes» — Основы и приемы использования

div.main {margin-left: 20pt; margin-right: 20pt}

«Server Side Includes» — Основы и приемы использования

William Bontrager

Это сделает ваши страницы живыми.
Это поможет легко обновлять ваши сайты.
CGI-скрипты смогут вставлять HTML-код на страницы
сайта. Все это может стать реальностью с
применением «Server Side Includes, так же известных как
SSI.

«Includes» (англ. «включать»)
означает, что SSI добавляет что-то на ваши
страницы.

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

Где Вы бы не использовали один и
тот же код на    страницах сайта (такой как
панели навигации, формы подписки и т.д.),
используйте SSI и Вам придется поменять только
один файл, чтобы внести изменения на все
страницы, где используется SSI.

Это просто!

Но если это так просто, то почему не каждый  
использует SSI?  Ответов два: 1) эта процедура
занимает несколько наносекунд у Вашего сервера
на сканирование и добавление; 2) не каждый знает о
том как использовать SSI.

Большинство хостинговых
компаний позволяет использовать SSI. Обычным
требованием в таком случае является
расширение  .shtml для таких страниц. Это вызвано
тем, что использование SSI занимает часть ресурсов
сервера и определенный период времени. Таким
образом Вы будете использовать  .shtml
расширение для SSI-страниц и расширения .html and .htm
для всех остальных.

Если Вы не знаете поддерживает ли
сервер SSI, проделайте простой тест.
Создайте 2 файла. Назовите первый mytest.shtml а второй
—  myssi.txt
Текст файла mytest.shtml:
<html><body>It goes here.
<!—#include file=»myssi.txt»—>
</body></html>
Текст файла myssi.txt:
<font size=»+2″>
<b>Here I am!</b>
</font>
Загрузите эти два файла на сервер и посмотрите
файл mytest.shtml в браузере. Если Вы видите фразу «It
goes here. Here I am!», то это значит, что сервер
поддерживает SSI.

Заметьте, что теги SSI находятся
внутри тегов комментария. Некоторые серверы
будут работать нормально если есть пробел
после  <!— и пробел перед  —> . Но некоторые
серверы будут давать ошибку. Пример:
<!— #include _________ —>
возможно будет работать на некоторых серверах,
но не на всех. Чтобы быть уверенным в
работоспособности SSI пишите так:
<!—#include _________—>
А теперь мы покажем примеры того, как правильно
использовать SSI:
(1) Тег: <!—#include file=»__________»—>
Замените подчеркивание на имя файла который Вы
хотите включить на страницу. Имя файла может быть
любым (обычно расширения таких файлов  .txt  
.html), но это должен быть текст. Это может быть
простой текст, код HTML, JavaScript, и т.п. Однако нельзя
использовать графические и звуковые файлы.
Файл который Вы включаете может иметь HTML код для
графики и звука, но вы не можете вставлять их
напрямую. Файл должен находится в той же
директории что и .shtml страница.

(2) Тег: <!—#include
virtual=»__________»—>
     Тоже самое что и file=»__________» за
исключением того что файл может находится в
другой директории.

Примеры:

     «../filename.txt»
     «nextdir/filename.txt»

(3) Тег: <!—#exec cgi=»__________»—>
     Замените подчеркивание на имя
CGI-скрипта. Имя файла может быть любым, но не
допускается наличие адреса  http://… . CGI-скрипт
должен возвращать текст, но этот тектс может быть
JavaScript или HTML-код для графики и звука или другого
кода, который обрабатывается браузером

Используя эти 3 простых тега у Вас
будет один кусок кода который будет включен на
все страницы вашего сайта.
Так же вы можете добавлять результаты работы
CGI-скриптов, включая счетчики, баннеры, новости и
погоду с других сайтов и многое другое, что умеют
делать CGI-скрипты.
Вот еще один пример:
<html>
<body bgcolor=»FFFFFF»>
<!—#include file=»topnavbar.html»—>
<table><tr><td>
<!—#include file=»topsidebar.html»—>
</td><td>
The weather in Italy is:
<!—#exec cgi=»italyweather.cgi»—>
<p>Current stock prices are
<table border=»1″ cellpadding=»9″><tr><td>
<!—#exec cgi=»stockprices.cgi»—>
</td></tr></table>
<p>Your IP address is:
<!—#exec cgi=»your_ip_address.cgi»—>
<p>Subscribe to our awesome newsletter!
<!—#include file=»subform.html»—>
Click here for a random link:
<!—#exec cgi=»randomurl.cgi»—>
<p>You are the <!—#exec cgi=»counter.cgi»—> visitor!
</td></tr></table>
<!—#include file=»bottomstuff.html»—>
</body>
</html>

Вся эта конструкция займет
несколько секунд на загрузку, но это всего лишь
демонстрация свободы творчеcтва при
использовании SSI.

Удачи!

Какие компании входят в топ ESG-рейтингов

В мире есть множество примеров успешных корпораций, которые ориентируются на принципы ESG. По версии компании Corporate Knights, в 2021 году в первую пятерку входят:

  1. Французская машиностроительная компания Schneider Electric.
  2. Датская транснациональная энергетическая компания Ørsted A/S.
  3. Национальный банк Бразилии Banco do Brasil SA.
  4. Финская нефтегазовая компания Neste Oyj.
  5. Международная компания профессиональных услуг в области дизайна, архитектуры и консалтинга Stantec Inc.

Компания Corporate Knights ежегодно публикует рейтинг 100 самых устойчивых глобальных корпораций в мире. Рейтинг основан на публично раскрытых данных.

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

  • Проводит мониторинг состояния флоры и фауны вблизи предприятий и разрабатывает программу по их сохранению.
  • Создала некоммерческую ассоциацию «Женщины в горнодобывающей отрасли» для борьбы с гендерными стереотипами.
  • Инвестирует в инфраструктуру, здравоохранение, образование и культуру города Амурска в Хабаровском крае.
  • Планирует использовать только сухое складирование отходов без традиционного возведения дамб, чтобы снизить риск утечек и аварий.

В результате Полиметалл уже четвертый раз подряд становится лидером рэнкинга независимого кредитного рейтингового агентства RAEX-Europe. Рэнкинг — это часть проекта RAEX-Europe по сбору, систематизации и анализу ESG-данных компаний постсоветского пространства.

Зеленая экономика

Кто стал самой «зеленой» компанией России — январский рейтинг RAEX

RAEX-Europe обновляет ESG-рэнкинг каждый месяц: агентство переоценивает компании по мере выхода их годовых отчетов, а также включает новые, которые еще не получали оценку. Таким образом, рэнкинг охватил уже 135 российских компаний из 24 различных отраслей.

Первый в России крупный форум на тему ESG состоялся в Москве 14 октября 2021 года при поддержке медиахолдинга РБК. С итогами конгресса «ESG-(Р)Эволюция» вы можете ознакомиться на странице мероприятия.

Installing third-party add-ons

Home Assistant allows anyone to create add-on repositories to share their add-ons easily. To try this locally, you can use our example add-on repository at

Home Assistant cannot guarantee the quality or security of third-party add-ons. Use at your own risk.


From Configuration > Add-ons & Backups open the add-on store.


Add the URL of the repository and then press «Add». A new card for the repository will appear.

Help: Repository is not showing up

If you have added a repository, but it’s not showing up, it means that the repository contains invalid configuration. Go to Configuration > Add-ons & Backups > System to find the System log. It should tell you what went wrong. Report this information to the repository author.

Including a standard footer

If you are managing any site that is more than a few pages,
you may find that making changes to all those pages can be a
real pain, particularly if you are trying to maintain some kind
of standard look across all those pages.

Using an include file for a header and/or a footer can
reduce the burden of these updates. You just have to make one
footer file, and then include it into each page with the
SSI command. The
element can determine what file to include with either the
attribute, or the
attribute. The attribute is a file path,
relative to the current directory. That means that it
cannot be an absolute file path (starting with /), nor can it
contain ../ as part of that path. The
attribute is probably more useful, and should specify a URL
relative to the document being served. It can start with a /,
but must be on the same server as the file being served.

        <!--#include virtual="/footer.html" -->

I’ll frequently combine the last two things, putting a
directive inside a footer file to be
included. SSI directives can be contained in the included file,
and includes can be nested — that is, the included file can
include another file, and so on.

Настройка SSG сервера

Нам понадобится Express сервер.

Установим и добавим настройки для него.

npm i express

В корне проекта нужно создать файл index.js – он будет хранить в себе все настройки сервера.

const express = require('express');const app = express();const path = require('path');const port = process.env.PORT || 5000;app.use(express.static('dist'));app.get('*', (req, res) => {  res.sendFile(path.resolve(__dirname, 'dist', 'index.html'));});app.listen(port, () =>  console.log(`Server is running on: http://localhost:${port}`));

Далее в файле nuxt.config.js нужно указать для ключа target значение static. Это будет значить, что nuxt будет работать в режиме генерации html-файлов в папку dist. На эту папку мы и натравили наш сервер.

Также в файле настроек придётся перечислить все страницы, которые должны быть сгенерированы. Найдите ключ generate и укажите нужные страницы.

generate: {  routes: ['/', '/about']}

В этом случае будет сгенерирована главная страница и страница About.

Ну и остаётся запустить команду

npm run generate

В папке dist будут созданы css, js и html файлы, то есть всё что необходимо. Причем это всё будет сжато и оптимизировано.

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

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

Настройка SSR сервера

Настройка SSR на самом деле проще, чем SSG, так как nuxt предоставляет свой сервер. Нам не придётся устанавливать express или настраивать что-то – всё готово и настроено.

Чтобы его запустить, достаточно выполнить три шага:

  1. В файле nuxt.config.js поменять значение для ключа target со static на server.
  2. Выполнить команду npm run build – она оптимизирует все файлы в папке .nuxt, за которой будет наблюдать сервер
  3. Ну и запустить сам сервер командой npm start или nuxt start

При успешном старте в консоли будет следующее сообщение

   ╭────────────────────────────────────────────╮   │                                            │   │   Nuxt @ v2.15.2                           │   │                                            │   │   ▸ Environment: production                │   │   ▸ Rendering:   server-side               │   │   ▸ Target:      server                    │   │                                            │   │   Memory usage: 61.2 MB (RSS: 176 MB)      │   │                                            │   │   Listening: http://localhost:3000/        │   │                                            │   ╰────────────────────────────────────────────╯

По сообщению видно: nuxt указал, что запущен в режиме production, где всё оптимизировано и сжато.

Теперь вам не нужно указывать в generate какие страницы генерировать. Nuxt будет создавать html налету.

Собственный API на nuxt сервере

Настроив SSR, мы можете создавать собственный API, что даёт ещё больше возможностей.

Например, на сайте есть форма, которая должна отправлять данные на почту. Чтобы не расписывать всю логику на стороне фронта и не светить токены, можно будет создать отдельный API-поинт, написать для него простенький smtp сервер и спокойно слать на него запросы. При этом мы не будем грузить фронт дополнительным кодом + все токены будут лежать на стороне сервера, что намного безопаснее, ну и не нужно будет платить за сторонний API, который будет делать те же самые вещи, только за деньги.

Давайте настроим.

В первую очередь создадим две папки. Одна общая – server, в которой будут находится все файлы сервера, вторую – middlewares добавим в папку server, она нужна для API-поинтов.

Создадим в папке middlewares файл с название logger.js и вставим туда простенький код.

export default function (req, res, next) {  console.log('Hello world!')  next()}

Когда будем обращаться к нему, он будет всего лишь выводить сообщение в консоль. Для примера пойдет.

Далее в файле nuxt.config.js добавим новый ключ serverMiddleware. В нём нужно указать путь до API-поинта и адрес, по которому он будет доступен.

serverMiddleware: [  { path: '/api/log', handler: '~/server/middlewares/logger.js' }]

Теперь, если делать запрос по адресу http://localhost:3000/api/log, в консоли увидим сообщение “Hello world!”

Восстановление соединения

При создании объекта браузер автоматически подключается к серверу, а при обрыве –  соотвественно пытается его возобновить.

Это очень удобно, никакой другой транспорт не обладает такой встроенной способностью.

Как же серверу полностью закрыть соединение?

При любом закрытии соединения, в том случае если сервер ответит на запрос и закроет соединение сам – браузер через короткое время повторит свой запрос.

Есть лишь два способа, которыми сервер может «отшить» надоедливый EventSource:

  • Ответить со статусом отличным от  200.
  • Ответить с Content-Type, не совпадающим с text/event-stream.

Между попытками возобновить соединение будет  небольшая пауза, значение которой зависит от браузера (1-3 секунды) и может быть изменено сервером через указание retry: в ответе:

retry: 15000 data: Поставлена задержка 15 секунд

Браузер, со своей стороны, может закрыть соединение, вызвав  close():

var eventSource = new EventSource(...); eventSource.close();

При этом дальнейших попыток соединения не будет. Открыть обратно этот объект тоже нельзя, можно создать только новый EventSource.

Идентификатор id

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

data: Сообщение 1
id: 1

data: Сообщение 2
id: 2

data: Сообщение 3
data: из двух строк
id: 3

При получении id: браузер:

  • должен установить свойство eventSource.lastEventId в его значение.
  • при пересоединении пошлёт заголовок Last-Event-ID с этим id, так что сервер сможет переслать последующие, пропущенные, сообщения.

Обращаю внимание: id шлётся не перед сообщением, а после него, чтобы обновление lastEventId произошло, когда браузер всё уже точно получил

Update

Best practice for updating a Home Assistant installation:

  1. Backup your installation, using the backup functionality Home Assistant offers.

  2. Check the release notes for breaking changes on Home Assistant release notes. Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser ( / ) and search for Breaking Changes.

  3. Check your configuration using the Check Home Assistant configuration add-on.

  4. If the check passes, you can safely update. If not, update your configuration accordingly.

  5. Update Home Assistant.

To update Home Assistant Core when you run Home Assistant Operating System you have 2 options.

Using the UIUsing the CLI

  1. Open your Home Assistant UI
  2. Navigate to the Configuration panel
  3. On the top you will be presented with an update notification

If you do not see that notification you can navigate to the Configuration > Add-ons & Backups > System panel. and click the “Reload Supervisor” button.

Setting variables

Using the directive, you can set variables
for later use. We’ll need this later in the discussion, so
we’ll talk about it here. The syntax of this is as follows:

        <!--#set var="name" value="Rich" -->

In addition to merely setting values literally like that,
you can use any other variable, including
environment variables, or some of the
variables we discussed above (like , for
example) to give values to your variables. You will specify that
something is a variable, rather than a literal string, by using
the dollar sign ($) before the name of the variable.

        <!--#set var="modified" value="$LAST_MODIFIED" -->

To put a literal dollar sign into the value of your
variable, you need to escape the dollar sign with a
backslash.

        <!--#set var="cost" value="\$100" -->

Finally, if you want to put a variable in the midst of a
longer string, and there’s a chance that the name of the
variable will run up against some other characters, and thus be
confused with those characters, you can place the name of the
variable in braces, to remove this confusion. (It’s hard to
come up with a really good example of this, but hopefully
you’ll get the point.)

        <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->

Setup

The element is not available on the default installation of IIS 7 and later. To install it, use the following steps.

Windows Server 2012 or Windows Server 2012 R2

  1. On the taskbar, click Server Manager.
  2. In Server Manager, click the Manage menu, and then click Add Roles and Features.
  3. In the Add Roles and Features wizard, click Next. Select the installation type and click Next. Select the destination server and click Next.
  4. On the Server Roles page, expand Web Server (IIS), expand Web Server, expand Application Development, and then select Server Side Includes. Click Next. .
  5. On the Select Features page, click Next.
  6. On the Confirm installation selections page, click Install.
  7. On the Results page, click Close.

Windows 8 or Windows 8.1

  1. On the Start screen, move the pointer all the way to the lower left corner, right-click the Start button, and then click Control Panel.
  2. In Control Panel, click Programs and Features, and then click Turn Windows features on or off.
  3. Expand Internet Information Services, expand World Wide Web Services, expand Application Development Features, and then select Server-Side Includes.
  4. Click OK.
  5. Click Close.

Windows Server 2008 or Windows Server 2008 R2

  1. On the taskbar, click Start, point to Administrative Tools, and then click Server Manager.
  2. In the Server Manager hierarchy pane, expand Roles, and then click Web Server (IIS).
  3. In the Web Server (IIS) pane, scroll to the Role Services section, and then click Add Role Services.
  4. On the Select Role Services page of the Add Role Services Wizard, select Server Side Includes, and then click Next.
  5. On the Confirm Installation Selections page, click Install.
  6. On the Results page, click Close.

Windows Vista or Windows 7

  1. On the taskbar, click Start, and then click Control Panel.
  2. In Control Panel, click Programs and Features, and then click Turn Windows Features on or off.
  3. Expand Internet Information Services, then select Server Side Includes, and then click OK.

Разбираемся с файлами и папками

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

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

  • .nuxt – это папка. В реальном времени nuxt собирает в неё откомпилированные, но еще не сжатые файлы. При запуске команд npm run dev или npm run build будут использоваться файлы именно из этой папки.
  • components – папка для компонентов страниц. Кнопки, инпуты, селекты и т.д.
  • layouts – обёртки для страниц. Иногда может понадобиться обёртка с сайдбаром слева, например, для админ панели, но в тоже время сайдбар не нужен на страницы авторизации. В этом случае нам и помогут разные лайауты – с сайдбаром и без.
  • middlewares – папка для функций, которые должны запускаться до рендера лайаута или страниц. Через них можно, например, проверять, имеет ли пользователь доступ на определённую страницу, и если нет, то перенаправлять его на специальную страницу.
  • pages – папка для страниц. Созданные в ней файлы преобразуются в роуты. Настраивать ничего не нужно. Подробнее об этом написал ниже.
  • plugins – все плагины, которые будут устанавливаться в проект, должны находиться в этой папке. Это не обязательно, просто так принято.
  • static – папка, в которой обычно хранят фавиконку, различные манифесты, иконки для метаданных и т.д. Файлы в этой папке будут доступны по прямой ссылке, например, http://localhost:3000/favicon.ico
  • store – временное хранилище, которое позволяет централизовать данные.
  • nuxt.config.js – это основной файл настроек. С него и начнем.

Control Commands

CounterCommand

The SSI counter command. Used to do things like cpt = cpt
+ 1.
Parameters:
  • name = the counter identifier
  • init = the init value
  • incr = the value to add to the counter
  • value = a flag
Example:
<!--#cpt name="cpt1" init="" -->
Initialisation: cpt1 = 0

<!--#cpt name="cpt1" incr="1" -->
cpt1 = cpt1 + 1

<!--#cpt name="cpt1" value="true" -->
display the current value of cpt1
Parameters:
  • name = the loop command identifier
  • command = a command name (jdbs, cpt)
  • var = a command identifier
  • equals = a string value
Example:
<!--#exitloop name="loop2" command="cpt" var="cpt1" equals="4" -->

IfCommand

Parameters:
  • name = the command identifier
  • command = a command name (jdbc, cpt)
  • var = a command identifier
  • equals = a string value
Example:
<!--#if name="if2" command="cpt" var="cpt1" equals="2" -->

Возврат к Server Side Rendering

Однако, в отличие от старого подхода, когда разметка генерировалась на сервере с помощью серверных языков программирования, например PHP,
теперь в Server Side Рендеринге, как и в CSR, будут использоваться современные JavaScript библиотеки, например React.

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

Это решение было направлено на исправление существующих проблем с производительность и SEO.
Всякий раз, когда поисковый робот запрашивает страницу, то он получит необходимый контент — для визуализации больше не требуется выполнение JavaScript на клиенте.

Теперь, когда в разработке упоминают термин Server Side Rendering, то ссылаются именно на этот сценарий.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: