Это руководство предназначено для новичков, которые хотели начать с Node.js. Мы создадим простой веб-сайт с помощью Node.js и платформы Express и будем использовать механизм просмотра EJS для управления нашим HTML-кодом.

Предварительные требования
Шаг 1. Установите nodejs и npm.

Следуйте ссылкам в соответствии с вашей средой разработки

  1. Linux
  2. Окна
  3. Mac

Если все установлено правильно, откройте терминал и введите node -v и npm -v, и вы должны получить следующий вывод в зависимости от версии, которую вы установили.

node -v
8.9.1
npm -v
5.8.0

Шаг 2. Установите пакет экспресс-генератора глобально (g означает глобальную команду в)

npm install express-generator -g

Узнайте больше об экспрессе на https://expressjs.com/

Шаг 3: Чтобы запустить наш сервер узлов, мы установим пакет nodemon глобально.

npm install nodemon -g

Узнайте больше о nodemon на https://www.npmjs.com/package/nodemon

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

Откройте терминал и перейдите в свой каталог, в котором вы хотите разместить код, и введите

express --view=ejs mywebsite

Как я уже сказал, мы будем использовать ejs view engine для управления нашим HTML-кодом на протяжении всего руководства, и эта команда создаст скелет нашего приложения узла и установит ejs в качестве нашего механизма представления по умолчанию.

Следующим шагом будет установка всех зависимостей, перечисленных в файле mywebsite / package.json. Перейдите в каталог myapp и введите

npm install

Теперь у нас все готово для запуска нашего сервера узлов, введите команду

nodemon start

Если вы видите следующий вывод в своем терминале, вуаля !!! сервер узла запущен и работает

[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node ./bin/www start`

Теперь откройте свой браузер и настройтесь на следующий URL-адрес

http://localhost:3000

Вы увидите следующую страницу

3000 - это порт no, который настроен по умолчанию, вы можете изменить его, отредактировав файл mywebsite / bin / www.

Откройте файл mywebsite / app.js, вы увидите

var index = require('./routes/index');

Итак, это место, где мы будем определять все маршруты нашего веб-сайта, то есть файлы маршрутов / индекса.

Откройте файл routes / index.js и замените запись маршрута.

Old 
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
New 
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', {page:'Home', menuId:'home'});
});

мы передаем переменную page и menuId в индексный файл представления.

Теперь откройте файл views / index.ejs и замените свой код следующим

<!DOCTYPE html>
<html lang="en">
<head>
 <% include partials/head %> 
</head>
<body>
<% include partials/menu %>
<div class="container-fluid bg-3 text-center">    
  <h3><%= page %></h3><br>
  <div class="row">
    <div class="col-sm-4">
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
      
    </div>
    <div class="col-sm-4"> 
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    </div>
    <div class="col-sm-4"> 
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    </div>
  </div>
</div>
</body>
<% include partials/script %>
</html>

Создайте каталог partials в каталоге mywebsite / views и создайте следующие файлы в каталоге partials

  1. head.ejs
<title>Static Website | <%= page %></title>
<meta charset="utf-8">
<meta name="active-menu" content="<%= menuId %>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="./stylesheets/style.css">

2. menu.ejs

<nav class="navbar navbar-default">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>                        
      </button>
      <a class="navbar-brand" href="#">LOGO</a>
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav navbar-right">
        <li id="home"><a href="/">HOME</a></li>
        <li id="about"><a href="/about">ABOUT US</a></li>
        <li id="contact"><a href="/contact">CONTACT US</a></li>
      </ul>
    </div>
  </div>
</nav>

3. script.ejs

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="./javascripts/menu.js"></script>

Если вы заметили, мы разделили код нашего заголовка, меню верхней панели и основных скриптов (javascript, который должен быть загружен на всех страницах). И все файлы partials включены в файл views / index.ejs.

<% include partials/head %> 
 <% include partials/menu %>
 <% include partials/script %>

Создайте каталог javascripts и таблиц стилей внутри каталога mywebsite / public и создайте новый файл menu.js внутри каталога javascript и style.css внутри каталога таблиц стилей. Я создал эти 2 файла, чтобы показать, как мы можем загрузить внешний файл CSS и js в наше приложение.

4. menu.js

$(document).ready(function(){
    var element = $('meta[name="active-menu"]').attr('content');
    $('#' + element).addClass('active');
});

5. style.css

.bg-3 { 
      background-color: #ffffff;
      color: #555555;
  }
  .container-fluid {
      padding-top: 70px;
      padding-bottom: 70px;
  }
  .navbar {
      padding-top: 15px;
      padding-bottom: 15px;
      border: 0;
      border-radius: 0;
      margin-bottom: 0;
      font-size: 12px;
      letter-spacing: 5px;
  }
  .navbar-nav  li a:hover {
      color: #1abc9c !important;
  }
.active>a {
    color: #1abc9c !important;;
  }

Теперь снова настройтесь на URL http://localhost:3000, наша обновленная домашняя страница будет загружена аналогичным образом, вы можете создать несколько статических представлений, как мы это делали для индексной страницы.

Вы можете найти полный код на GitHub.