Как добавить дополнительный javascript в раздел head в представлении на основе Jade в Node.js - PullRequest
0 голосов
/ 28 июня 2018

У меня есть экспресс-приложение Node.js.

layout.jade выглядит как

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    block extraHeader
  body
    block content

Мой map.jade выглядит так:

extends layout
block extraHeader
    link(rel='stylesheet' href='https://unpkg.com/leaflet@1.3.1/dist/leaflet.css')
    script(src='https://unpkg.com/leaflet@1.3.1/dist/leaflet.js')
block content
    h1= title
    h2= count
    #map
    script.
        var locations = !{JSON.stringify(jsonData)};
        // Create variable to hold map element, give initial settings to map
        var map = L.map('map',{ center: [0, 0], zoom: 7});
        // Add OpenStreetMap tile layer to map element
        L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
            attribution: '© OpenStreetMap'
        }).addTo(map);

        // Add JSON to map
        for(var i = 0; i < locations.length; i++) {
            var loc = locations[i];
            L.marker([loc.lat, loc.lng]).addTo(map);
        }

Я бы хотел включить дополнительный javascript в раздел в заголовке вида карты вместо встроенного скрипта, например,

<head>
... ...
<script type="text/javascript">
    // DO SOMETHING
    var foo = 1;
<script>
</head>

Есть ли способ сделать это?

EDIT: Мой package.json выглядит так:

{
  "name": "app_name",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "bluebird": "^3.5.1",
    "body-parser": "^1.18.3",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "dotenv": "^5.0.1",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "jade": "~1.11.0",
    "morgan": "~1.9.0",
    "nodemon": "^1.17.5",
    "pg-promise": "^8.4.4"
  }
}

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Используйте тег 'script' с точкой после, чтобы ввести встроенный Jvascript.

script.
  if (true) {
    alert("this is working")
  }

вы можете использовать http://html2jade.org/ для просмотра преобразования Jade в HTML в реальном времени или наоборот

0 голосов
/ 28 июня 2018

Какую версию Jade вы используете? Если вы используете предыдущую версию Jade (<7.0), вы можете использовать фильтр <code>:javascript.

В последней версии Jade (Pug) вы можете просто использовать тег script, например:

script(type='text/javascript').
      // Your code here

Подробнее по теме можно найти: https://github.com/pugjs/pug

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

...