2015-11-12 2 views
1

Как использовать статические переменные в JS-файле?Как импортировать переменные из NodeJS в JS?

Я использую nodeJS с шаблонами ejs. В HTML это работает, если я использую <%= colors %>, но я хочу использовать содержимое цвета в clientide js.

я думаю, что это должно выглядеть следующим образом:

var color[] = <%= colors => 

будет приятно знать, что им делать неправильно. Спасибо!

Marius

редактировать: очистить вещи, я уже писал вопрос быстро, так что, кажется, я забыл объяснить некоторые вещи.

Цвета - это массив, отправленный узлом экспресс-сервера nodeJS.

var colors = ['blue', 'red', 'green']; 

в index.ejs шаблоне, я могу назвать "синим" с помощью:

<span>  
    <%= colors[0] %> 
</span> 

. теперь у меня есть отдельный файл functions.js на стороне клиента. Я хочу получить доступ к «синему» в этом файле.

+1

'<%= colors =>' это какая-то разметка, используемая языком шаблонов, например PHP. Поэтому либо укажите этот язык, либо уточните свой вопрос. –

+0

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

+0

Посмотрите исходный код, который будет доставлен в браузер. Посмотрите на JS, который вы получите. Посмотрите, выглядит ли это так, как вы ожидаете. Посмотрите, какие ошибки отображает браузер в консоли инструментов разработчика. – Quentin

ответ

5

Ваша первая проблема заключается в том, что var color[] = недействителен JavaScript.

Кажется, что вы смешиваете его с PHP. Синтаксис вы ищете, вероятно:

var color = []; 
color.push(someValue); 

Мы не можем сказать, что ваш серверный код будет выводить на <%= colors =>, но я буду держать пари, что это что-то вроде blue.

var color = []; 
color.push(<?= colors =>); 

поэтому даст вам:

var color = []; 
color.push(blue); 

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

Это более или менее такой же, как JSON так:

var color = []; 
color.push(<?= JSON.stringify(colors) =>); 

... вероятно, будет делать эту работу.

colors Если не blue, но на самом деле является массивом, то вы, вероятно, хотите просто сбросить все это к переменной на одном дыхании:

var color = <?= JSON.stringify(colors) =>; 
0

Хорошо, я нашел обходной путь.

я есть сейчас это в моем index.ejs шаблона:

<script> 
    var colors = [<%= colors %>]; 
</script> 

и я называю свои functions.js (на стороне клиента) в следующей строке. теперь я могу использовать:

$("span").text(colors[0]); 

. если есть лучшее решение (код jquery - это не то, что я использовал), прокомментируйте!

 Смежные вопросы

  • Нет связанных вопросов^_^