在客户端ejs我使用[% code %]而不是<% code %>标记ejs代码,但我想在服务器端使用express执行相同的操作.在客户端我会做类似的事情var template = new EJS({text: template_src, type:'['});
这是我的节点代码:
app.set('view engine', 'ejs');
app.register('.html', require('ejs'));
app.get('/', function(req, res){
res.render('index.html', { title: 'My Site' });
});
Run Code Online (Sandbox Code Playgroud)
你在哪里设置"类型"参数,所以我可以改变这个选项
我有以下ejs模板
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Emasc Editor</title>
<style>
.list{
display: inline-block;
}
</style>
<script type="text/javascript" src="/js/jquery-1.7.1.min.js"></script>
<script type="text/javscript">
$(document).ready(function(){
alert('test');
$("#setMembershipsButton").click(function(e){
// send selected person and groups to server and create memberships
data = {
person: $('#person_list').val(),
groups: $('#group_list').val()
};
$.post('/newConnections', data);
});
$("#person_list").change(function(){
alert('test');
// send selected person to server and retrieve memberships
$.post('/getPersonGroups', { personID: $('#person_list').val() }, function(data, textStatus){
$('#group_list option').removeAttr('selected');
for(var i=0; i<data.ids.length; i++){
$('#group_list option[value=' + data.ids[i] + ']').attr('selected', 'selected');
}
});
});
}); …Run Code Online (Sandbox Code Playgroud) 我正在创建一个简单的网站,其中nodejs使用快速框架,couchdb用于数据库,EJS用于模板化.有些时候我的某些JSON文档中的某些字段为null或未定义,我需要处理它.
<% if (typeof test !== 'undefined') { %>
<p><%= test %></p>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这段代码似乎处理'测试'字段未定义就好了,但下面的代码抛出一个错误,上面写着'测试未定义'
<% if (test) { %>
<p><%= test %></p>
<% } %>
Run Code Online (Sandbox Code Playgroud)
为什么javascript不能理解test是未定义的,然后在if子句中放入false?
我把以下ejs转换成玉器有麻烦:
<% if (message.length > 0) { %>
<div class="alert alert-danger"><%= message %></div>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这个块怎么看玉?
var app = express();
app.locals.current_time = utils.current_time();
Run Code Online (Sandbox Code Playgroud)
我可以为模板中的每个请求更改此变量的变量current_time吗?这个例子中的app.locals.current_time是常量,但我想使用函数.
我想把这两个变量加起来:
xValue 是2.00000000(正面)
yValue 是-0.00001250(负数)
<%= xValue.toFixed(8) + yValue.toFixed(8) %>
Run Code Online (Sandbox Code Playgroud)
输出正在变为: 2.00000000-0.00001250
但我需要看到这个:= 1.9999875
如果我提取变量:
<%= xValue.toFixed(8) - yValue.toFixed(8) %>
Run Code Online (Sandbox Code Playgroud)
没问题:= 2.0000125
我做错了什么?
我试图将数组从ejs传递到JavaScript。我可以获取ejs中的值,但不能从JavaScript中获取值。我一直都不确定,因为变量“ test”的内容是字符串而不是数组。
<script>
var test = '<%- level_tab %>';
alert(test);
function level(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if(s1.value == "level_0"){
var optionArray = test;
}
else if(s1.value == "level_1"){
var optionArray = ["test|test01", "test0|test02"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
Run Code Online (Sandbox Code Playgroud) 这是与ejs一起使用的代码:
<iframe width="660" height="371" src="<%= revive.reviveVideo %>"></iframe>
Run Code Online (Sandbox Code Playgroud)
哈巴狗相当于什么?试过这个,但它不起作用:
iframe(width='660', height='371', src='#{revive.reviveVideo}')
Run Code Online (Sandbox Code Playgroud)
如果我将变量更改为实际路径,它就可以正常工作......这是变量语法的一个问题......
这听起来像重复这个和其他几个,但那些栈给出的解决方案是没有帮助的。
我正在使用EJS模板创建HTML,但是在包含部分内容的同时,我收到以下错误:
throw new Error('Could not find include include file.');
Run Code Online (Sandbox Code Playgroud)
下面是项目结构
|
|
|-----index.js
|-----view
| |
| |----pages
| | |----mainTemplate.ejs
| |----partials
| | |----bodyTemplate.ejs
| |
Run Code Online (Sandbox Code Playgroud)
现在根据文档,include包含相对路径,因此我的mainTemplate.ejs中的代码包括如下的bodyTemplate
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample</title>
</head>
<body>
<!-- Insert Body here -->
<div class="container">
<div class="starter-template">
<% include ../partials/bodyTemplate.ejs%>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
而bodyTemlate.ejs中的代码是
<% console.log("#########################");%>
<h1>Hi there !! </h1>
Run Code Online (Sandbox Code Playgroud)
我收到消息找不到包含文件。 此错误不是关于在此处访问哪个路径的具体错误。
我试图从路径中删除..还是没有用?我的EJS应用程序中具有相同的项目结构,并且相同的代码片段可以正常工作吗?这是特定于表达的东西导致此类问题吗?
编辑
这是index.js
var fs = require('fs'),
ejs = require("ejs");
function ejs2html(path, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用nodejs,express,mysql和ejs使网页显示图表,但我显然不了解ejs/javascript等的工作原理.我需要一个运行脚本来设置图表(来自chart.js模块),但它不会输出任何类型的图表.
我尝试了什么:
下面的脚本将无法运行:
<canvas id="myChart" width="50%" height="100px"></canvas>
<script scr="map-access-data.js" type="text/javascript"></script>
<script id ="map-popularity" type="text/javascript">
var Chart = require('chart');
var ctx = document.getElementById("myChart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: getMapAccessNames(),
datasets:[{
label: "Map Selection Popularity",
data: getMapAccessData(),
backgroundColor: getMapColors(),
borderColor: getMapColors(),
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
在该文件的第一个脚本中引用的map-access-data.js文件:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : …Run Code Online (Sandbox Code Playgroud)