В предыдущей статье «Роутинг в NodeJS» был разобран пример создания роутинга на сайте через HTML файлы, разложенные по папкам. Для этого потребовалось запрограммировать считывание содержимого файлов при обращении к различным URL.
В этой статье будет улучшен код примера, чтобы вынести наиболее часто повторяемые области из HTML в подключаемые файлы. Это позволит упростить разработку сайтов, ускорит его редактирование.
Первыми кандидатами на выделение в отдельные файлы может быть хидер и футер сайта. Зачастую информация в этих областях остаётся неизменной на всех страницах сайта, поэтому для уменьшения кода логично вынести их в отдельные файлы. А затем программно подключать их. Рассмотрим простейший HTML документ в проекте:
Свойства страницы, правила отображения, стили, скрипты, подключаемые файлы Верхнее меню и шапка сайтаСодержание страницы
Подключение будет осуществляться через замену содержимого файлов по особой маске. К примеру, можно вместо хидера поставить <> , а его содержимое будет вынесено в отдельный HTML файл «pages/header.html». Поэтому заготовка страницы из примера выше примет такой вид:
Теперь остаётся только написать код для роутинга через файлы. Скопируем пример из предыдущей статьи («Роутинг в NodeJS») и модифицируем, добавив обычную текстовую замену в строках через метод «replace»:
Она вставляет содержимое файла «pages/header.html» на место, где стоит <> . Аналогично можно заменять и подвал сайта на > из файла «pages/footer.html». Но обратите внимание, что подключение файлов должно происходить одновременно: либо внутри метода readFile, либо с использованием синхронного метода «readFileSync». Получится так:
Минусом такого способа подключения файлов шаблона (через асинхронный метод «readFile») является большая вложенность, которая растёт пропорционально с количеством заменяемых областей. Что снижает читаемой кода.
Запуск HTTP-сервера и выдача HTML-файла
Node не только содержит возможность обрабатывать JS-файлы, как мы только что сделали, он также может создать HTTP-сервер. Мы собираемся рассмотреть создание HTTP-сервера с Node-фреймворком Express для обработки HTML-файла.
В первом приложении мы только выводили что-то в консоль. Двигаясь вперёд, мы учтём чему уже научились для следующего шага, в котором мы можем организовать веб-сайт для наших пользователей. На один шаг мы станем ближе к полноценному веб-приложению.
Давайте придерживаться того же приложения, добавив фреймворк Express с выдачей HTML-файла. Нам понадобятся те же файлы (package.json, server.js) и к ним мы добавим новый файл index.html.
Express: Node-фреймворк
Одним из самых больших преимуществ Node является то, что он содержит поддержку множества пакетов. Сообщество отправляет много пакетов в npm и на момент написания в нём хранится 129257 пакетов, которые загрузили свыше 17694831 раз за последний день. Это большое достижение!
Пакеты расширяют функциональность нашего приложения и найдутся пакеты для многих разных случаев применения.
Вы, возможно, слышали о Grunt, Gulp или даже препроцессорах CSS вроде Less — всё это может быть пакетом.
Express — лёгкая платформа для создания веб-приложений с использованием Node.js. Express помогает организовать веб-приложение на стороне сервера. Сайт ExpressJS описывает его как «минимальной и гибкий Node-фреймворк для веб-приложений».
Express скрывает много внутренней работы Node, которая позволяет вам погрузиться в код приложения, получать всякие штуки и работать намного быстрее. Он прост для изучения и ещё даёт вам немного гибкости с его структурой.
Существует причина, почему в настоящее время это самый популярный фреймворк для Node. Вот несколько больших имён использующих Express:
Для просмотра полного списка зайдите на эту страницу.
Express поставляется с несколькими замечательными возможностями, которые добавят лёгкости в вашу разработку:
маршрутизация;
обработка запросов;
настройки приложения;
связующее программное обеспечение.
Не волнуйтесь, если эти термины являются для вас новыми. Просто знайте, что Express делает разработку намного проще и работать с ним в радость.
Установка Express
Пакеты для конкретного приложения Node определяются в package.json. Для получения установленных пакетов вы можете использовать один из двух методов:
Метод 1: Написать пакет в package.json.
Метод 2: В командной строке использовать npm install.
Мы собираемся использовать второй метод. Перейдите в командную строку и наберите:
$ npm install express --save
Модификатор —save сообщает npm, что он должен записать этот пакет в ваш файл package.json. Если вы выполните эту команду и посмотрите файл package.json, то заметите, что пакет появился в разделе dependencies. Вы также заметите, что была создана новая папка с именем node_modules. В ней Node хранит пакеты для конкретного проекта.
Меняться проектами между разработчиками и сотрудниками очень легко. Просто отправьте другим пользователям ваш проект и они запустят npm install чтобы установить всё из раздела dependencies.
Поскольку у нас уже есть Node и готов Express, используем их для создания HTTP-сервера и выдачи HTML-файла нашим пользователям.
Создание HTTP-сервера и отправка HTML-файла
Начнём с лёгкой части на нашем пути — с HTML-файла. В проекте создайте новый файл index.html и поместите внутрь следующее:
Моё Node-приложение! body Моё приложение!
Мы будем ссылаться на CSS из фреймворка Bootstrap через Bootstrap CDN, это поможет нам быстро сделать стилизацию для этой демонстрации.
Двинемся вперёд и создадим наш HTTP-сервер в Node с помощью Express. Удалите всё из файла server.js и добавьте то что нам понадобится:
// берём Express var express = require('express'); // создаём Express-приложение var app = express(); // создаём маршрут для главной страницы // http://localhost:8080/ app.get('/', function(req, res) < res.sendfile('index.html'); >); // запускаем сервер на порту 8080 app.listen(8080); // отправляем сообщение console.log('Сервер стартовал!');
Кроме этого файла больше ничего не требуется, чтобы использовать Express для запуска HTTP-сервера и отправки HTML-файла!
require() является основным путём вызова пакета в Node. После создания Express-приложения в app , мы можем определить маршрут с помощью переменной HTTP. app.get() создаёт GET маршрут /.
При создании маршрутов, мы всегда будем иметь доступ к req (запрос) и res (ответ). Запрос содержит информацию из браузера. Ответ — это то, что мы отправим обратно пользователю. Мы используем sendfile() , но гораздо больше вещей можно сделать, отправляя данные обратно в формате JSON с помощью res.json() .
Сервер запускается через app.listen() и туда же передаётся желаемый порт 8080.
Чтобы убедиться что всё работает, перейдите в командную строку, чтобы обработать этот файл и запустить сервер.
$ nodemon server.js
Теперь мы можем посмотреть на наш сайт в браузере по адресу http://localhost:8080.
Всякий раз, когда мы запускаем сервер с Node, он будет размещён по адресу http://localhost:НОМЕР_ПОРТА.
Это очень лёгкий и быстрый способ создать HTTP-сервер и начать разработку. Node и Express могут применяться для создания удивительных приложений или при необходимости они просто запускают простой сервер для работы.
Отлично! Мы уже много сделали с Node:
установили Node;
обработали очень простой файл;
использовали npm для установки пакета;
создали HTTP-сервер с Express;
отобразили HTML-файл.
Давайте сделаем следующий шаг и создадим приложение, которое на самом деле показывает соответствующие данные.
Простой html-сервер на NodeJS
Инструкция по запуску простого файлового сервера на NodeJS.
Для начала необходимо установить NodeJS на свой компьютер. Скачать свежий дистрибутив можно здесь.
Потом устанавливаем пакет serve-static:
npm install serve-static
Структура проекта будет выглядеть так:
app.js pages/ ..index.html ..inside.html
Основной файл приложения app.js
var http = require(‘http’); var serveStatic = require(‘serve-static’);var serve = serveStatic(“./pages”);var server = http.createServer(function(req, res) serve(req, res); >);server.listen(8080);
Основная страница index.html
Hello, world!
Hello, world!
Внутренняя страница inside.html
It's work!
It’s work!
Запускаете в командной строке:
node app.js
Как встроить JavaScript в HTML
В этой статье мы рассмотрим простые шаги по добавлению JavaScript в HTML . Независимо от вашего уровня опыта в программировании, наше короткое руководство поможет вам начать работу с JavaScript и с легкостью внедрить его в ваши проекты.
Что такое JavaScript
JavaScript (часто сокращается до JS) – это высокоуровневый, интерпретируемый язык программирования, который используется для создания динамических и интерактивных элементов на веб-сайтах.
JavaScript позволяет разработчикам добавлять функциональность к веб-страницам, делать их более отзывчивыми к действиям пользователя и обеспечивать взаимодействие с веб-серверами для загрузки или отправки данных без необходимости перезагрузки страницы.
Вместе с HTML и CSS JavaScript является частью трех основных технологий, необходимых для создания веб-сайтов. Помимо JS, в них входят:
HTML (язык гипертекстовой разметки) обеспечивает структуру веб-контента. Например, определяет заголовки, таблицы данных и списки маркированных пунктов.
CSS (каскадные таблицы стилей) применяет стиль и макет к содержимому HTML: настраивает цвет фона и шрифта, стандартизирует расстояние между элементами и добавляет фоновые изображения.
Для чего нужен JavaScript
JavaScript можно использовать для создания сложных веб-сайтов, браузерных игр и приложений, а также для подключения серверов к веб-сайтам и веб-приложениям.
Многие известные сайты и приложения используют JavaScript – включая Netflix, Google и YouTube.
С JavaScript разработчики могут:
отображать своевременные и актуальные обновления контента;
вставлять раскрывающиеся меню;
воспроизводить аудио и видео;
увеличивать и уменьшать изображения;
добавлять 2D/3D графику и анимацию;
вставлять эффекты, которые приходят в действие при наведении курсора;
отображать и скрывать меню;
предупреждать пользователей о недопустимых символах при вводе паролей;
создавать сложные браузерные игры.
Также в последние годы появилось множество технологий, которые позволяют использовать возможности JavaScript. К примеру, JS имеет обширную коллекцию фреймворков для создания веб- и мобильных приложений.
Но что такое «фреймворки»?
Фреймворки – это библиотеки предварительно написанного кода JavaScript. Иными словами, их можно назвать своеобразными «чертежами» в мире программирования, ведь фреймворки помогают разработчикам создавать приложения и веб-сайты с большей функциональностью.
Три самых популярных фреймворка приложений JavaScript:
React – используется при создании пользовательских интерфейсов для веб-приложений.
React Native – используется при создании мобильных приложений.
Node.js – обеспечивает двустороннюю связь с серверами для обмена данными.
О Node.js мы уже рассказывали более подробно в другой статье.
Java и JavaScript: одно и то же?
Несмотря на то что Java и JavaScript имеют схожий синтаксис и стандартные библиотеки, эти два языка программирования совершенно разные: Java является языком объектно-ориентированного программирования (ООП) – то есть запускается на виртуальной машине или в браузере.
JavaScript же – это язык сценариев ООП, который работает только в браузере.
Благодаря своей универсальности JavaScript остается одним из наиболее широко используемых языков программирования среди разработчиков. Однако, как мы упоминали ранее, при создании сайтов JS – не единственная технология, которая интересует разработчиков.
Часто встает вопрос о том, как встроить JavaScript в HTML. Об этом мы и поговорим далее.
Как добавить JavaScript в HTML
Мы уже рассмотрели, почему HTML, CSS и JavaScript необходимы для создания функциональных и динамических веб-страниц.
Но, говоря простыми словами, сайт состоит из трех уровней: HTML в качестве основы, CSS как средний слой и JavaScript – верхний.
Сначала вы структурируете контент на веб-странице с помощью HTML, затем добавляете стилистические элементы и правильный макет с помощью CSS. Далее добавляете динамические и интерактивные функции с помощью JavaScript.
Есть два способа добавить JavaScript в HTML:
встроить JavaScript в теги HTML,
создать внешний JavaScript-файл.
Способ 1. Разместите JS-код внутри парного тега
Код JavaScript можно встроить в документ HTML с помощью специального тега HTML . Его можно разместить либо в разделе вашего HTML, либо в разделе .
Размещение полностью зависит от того, когда именно вы хотите загрузить код.
Как добавить Javascript в тег
JavaScript-код можно вставить в раздел HTML-страницы. Это делается для того, чтобы функция оставалась изолированной от основного содержимого вашего HTML-проекта.
Вот пример того, как добавить JavaScript в раздел HTML-страницы:
Если скрипт должен запускаться в определенной точке макета вашей веб-страницы, вам нужно будет вставить его в то место, где он должен вызывать функцию. Размещение обычно находится в разделе .
Вот пример того, как добавить JavaScript в раздел HTML-страницы:
Это достаточно простой способ вставить JS-код в HTML-страницу, который поможет вам, если ваш JS-скрипт большой или вы хотите распределить его по нескольким веб-страницам.
Использование отдельных файлов JavaScript позволяет разработчикам отделить разметку HTML от кода JS и предотвращает путаницу. Это также упрощает текущее обслуживание и ускоряет загрузку веб-страниц при кэшировании файлов JavaScript.
Чтобы использовать этот внешний скрипт, вам необходимо добавить имя файла скрипта в атрибут src (source) тега :
Где «myScript» – имя файла вашего скрипта.
Советы по добавлению JavaScript в HTML
Если сценарии должны запускаться только при их вызове, добавьте нужные функции в раздел . Таким образом, скрипт не помешает содержимому вашей страницы.
Если ваш скрипт записывает содержимое страницы, оно должно находиться в разделе . В идеале скрипт должен располагаться в конце раздела , чтобы повысить скорость загрузки страницы.
Если ваш сайт использует HTML5, добавление JS-кода в тег не потребуется.
Некоторые программисты рекомендуют хранить сценарии HTML, CSS и JavaScript в отдельных папках. Самое главное – это правильно их связать.
Оптимизация JavaScript на странице
Оптимизация кода – это любой метод модификации кода для улучшения качества и эффективности кода.
Зачем нужна оптимизация JavaScript?
Производительность. Неоптимизированный код JavaScript может снижать производительность веб-страницы, делая ее медленной и менее отзывчивой. Быстрая загрузка и выполнение кода JavaScript – это ключевые факторы для обеспечения плавности и отзывчивости пользовательского интерфейса.
Экономия ресурсов клиента. Неэффективный код JavaScript может потреблять больше ресурсов: например, процессорное время и оперативную память на устройстве пользователя. Это может вызвать замедление работы браузера и даже вынудить пользователя закрыть вкладку или перезагрузить страницу.
Экономия трафика. Код JavaScript также участвует в объеме данных, передаваемых между сервером и браузером. Большие скрипты могут увеличивать время загрузки страницы, особенно при медленном интернет-соединении или при работе на мобильных устройствах. Оптимизированный JavaScript сокращает этот объем данных.
Совместимость. Разные браузеры могут по-разному интерпретировать JavaScript, и неоптимизированный код может вызвать проблемы на некоторых платформах. Оптимизация обеспечивает лучшую совместимость и устойчивость вашего веб-сайта.
Лучший пользовательский опыт. Быстрая загрузка и отзывчивость веб-страницы, а также экономия ресурсов и трафика, делают пользовательский опыт более приятным. Это приведет к увеличению уровня удовлетворенности пользователей и повышению вероятности их возвращения на ваш сайт.
Снижение нагрузки на сервер. Оптимизированный код JavaScript не только улучшает производительность на стороне клиента, но также снижает нагрузку на ваш сервер. Меньший объем передаваемых данных и меньшая нагрузка на браузеры означают меньшую нагрузку на сервер и снижение затрат на хостинг.
Аренда сервера
Если вы уже работаете над собственными сайтами, то, возможно, задумывались над арендой сервера для своих проектов.
Линейка хостинговых продуктов RU-CENTER крайне обширна и включает в себя всё: от доступного хостинга для небольших сайтов до аренды выделенных серверов для масштабных проектов.
Наши серверы – это мощные системы с отказоустойчивой инфраструктурой, которые соответствуют самым современным стандартам индустрии. Они станут надежным решением для размещения новых или переноса уже существующих сайтов.
Как оптимизировать JavaScript на странице
Обратите внимание на порядок загрузки элементов
Важно, чтобы все элементы в разделе были предварительно загружены, прежде чем посетитель увидит что-либо в браузере. В таком случае все последующие элементы будут загружаться логическим образом.
Любой код JavaScript внутри раздела может замедлить загрузку страницы.
Когда загружается неоптимизированная страница, скорее всего, пользователь увидит «белый экран» до загрузки полной страницы.
Оптимизированная загрузка страницы (фактически рендеринг) происходит поэтапно, позволяя пользователю постепенно видеть некоторый контент, пока страница не загрузится полностью.
Минимизируйте код JavaScript вручную
Оптимизация – это особый тип минификации JavaScript. Минификация же, в свою очередь, – это процесс удаления лишних или избыточных данных в коде. Она помогает уменьшить время загрузки страницы.
Разрывы строк, дополнительные пробелы или комментарии – всё это увеличивает размер JavaScript-файла и влияет на скорость загрузки страницы. Сжатие кода хорошо решает эту проблему.
Оптимизируйте Javascript с помощью сторонних программ
Существуют различные минимайзеры, которые не только удаляют ненужные пробелы, запятые, комментарии, но также помогают избежать мертвого кода. Среди них можно выделить:
Google Closure Compiler,
UglifyJAVASCRIPT,
Microsoft AJAX Minifier.
Как выглядит оптимизированный код? Давайте рассмотрим на примере.
До оптимизации
После оптимизации
var parent = node.parentNode;
alert( «We are Ru-Center!» );
function test(){alert(«We are Ru-Center!»)}
Что именно произошло при оптимизации?
Переменная родительского класса для выполнения кода не потребуется, поэтому её удалили.
«if(0) {…}» в этом случае считается мертвый кодом.
Также удалили «return» – это еще один мертвый код.
Воспользуйтесь асинхронной загрузкой JavaScript
Асинхронная загрузка JavaScript означает, что браузер может одновременно загружать несколько ресурсов (в том числе и скрипты) без блокировки отображения остального контента на странице. Это существенно улучшает производительность, так как браузер не ожидает загрузки каждого скрипта перед продолжением обработки страницы.
Для выполнения асинхронной загрузки отлично подходят атрибуты: «async» и «defer». Их применение позволяет оптимизировать процесс загрузки и выполнения скриптов, чтобы ускорить отображение страницы для пользователей.
Атрибут «async». При его использовании браузер начнет загрузку скриптов параллельно с остальными ресурсами страницы, и он не будет блокировать отображение контента. Скрипты будут выполняться, как только загрузятся, и порядок выполнения может быть непредсказуемым.
Это полезно для скриптов, которые не зависят от других и могут быть выполнены независимо.
Атрибут «defer». При его использовании скрипты также загружаются асинхронно, но браузер гарантирует, что они будут выполнены в том порядке, в котором они расположены на странице.
Важно отметить, что выполнение скриптов будет отложено до тех пор, пока весь HTML-контент страницы не будет обработан браузером. Это полезно, если скрипты зависят друг от друга или от содержимого страницы.
Таким образом, атрибут «async» подходит для независимых скриптов, которые можно выполнять параллельно, в то время как атрибут «defer» подходит для скриптов, которые зависят от порядка выполнения и контента страницы.
Эти методы помогают улучшить производительность и восприятие пользователей при загрузке веб-страниц.
Важно! Атрибуты «defer» и «async» доступны только для внешних скриптов (с тегом src=»»). Они не будут выполняться во внутренних скриптах ().
Итак, в этом руководстве вы узнали, что внедрение JavaScript в HTML предоставляет веб-разработчикам мощный инструмент для создания интерактивных и динамичных веб-страниц. С помощью этой техники они могут улучшить пользовательский опыт, добавить функциональность и сделать веб-сайты более отзывчивыми.
Правильное использование JavaScript в HTML открывает двери к бесконечным возможностям для создания более современных и удобных веб-приложений.