嘿家伙我正在玩node.js并尝试渲染模板文件.我想出了如何呈现字符串:
var http = require('http');
var ejs = require('ejs');
var server = http.createServer(function(req, res){
res.end(ejs.render('Hello World'));
});
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
如何渲染模板文件?
我正在使用ejs在node.js(express)上工作,并且我无法将.css文件包含在it.i中尝试了与html-css二人组分开的相同的东西,它工作得很好...我怎么能包括相同的我的.ejs文件.我的app.js如此:
var express = require('express');
var app = express();
app.set('views', __dirname + '/views');
app.get('/', function(req, res){
res.render('index.ejs', {
title: 'My Site',
nav: ['Home','About','Contact']
});
});
app.get('/home', function(req, res){
res.render('index.ejs', {
title: 'My Site',
nav: ['Home','About','Contact']
});
});
app.get('/about', function(req, res){
res.render('about.ejs', {
title: 'About',
nav: ['Home','About','Contact']
});
});
app.get('/contact', function(req, res){
res.render('contact.ejs', {
title: 'Contact',
nav: ['Home','About','Contact']
});
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
和index.ejs文件:
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div>
<h1> <%= title %> </h1>
<ul>
<% for (var i=0; …Run Code Online (Sandbox Code Playgroud) 我最近开始了一个节点项目,我正在使用的两个模块是express和EJS.但默认我通常使用eclipse作为我的IDE,它适用于java和适合html和javascript.但我遇到的一个问题是.ejs文件我得不到标记颜色编码,或任何形式的代码完成.它基本上只是一个普通文件.
有没有人知道如何让eclipse将.ejs文件解释为.html文件?我认为除了偶尔的嵌入标签之外它非常相似.或者推荐更适合node.js/html/ejs开发的IDE.
谢谢!
在Express的第3版中,删除了一些功能:
the concept of a "layout" (template engine specific now)
partial() (template engine specific)
Run Code Online (Sandbox Code Playgroud)
更改日志:https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
该partial()可以更改EJS叫自己的特点include,但什么是布局的选择吗?
我有登录和注册页面.当随机用户想要登录,并且登录成功时,我想将他重定向到另一个.ejs页面(例如UserHomePage.ejs),但是,到目前为止,我没有尝试过任何工作.
if (loggedIn)
{
console.log("Success!");
res.redirect('/UserHomePage');
}
else
{
console.log("Error!");
}
Run Code Online (Sandbox Code Playgroud)
我还想知道如何在点击按钮时重定向用户.
假设我在显示用户页面,我显示所有用户,然后"添加另一个使用的按钮".我怎么做?如何在onclick后将用户重定向到Register.js页面?
<h2>List of users</h2>
<ul>
<% uporabniki.forEach(function(user) { %>
<li>
<%= user.attributes.name %>
<%= user.attributes.last name %>
</li>
<% }); %>
</ul>
<h3>Add another user</h3>
<form method="post">
<input type="submit" value="Add user" />
</form>
Run Code Online (Sandbox Code Playgroud) 我正在探索在Node.JS中进行开发,并发现ExpressJS和RailwayJS(基于Express)是Node的框架.使用Jade/EJS的模板引擎似乎更适合HTML.我怎样才能生成JSON,例如.当我开发API时
我需要在一些EJS代码中使用Javascript变量(在前端定义),如下所示:
var selected = 1;
<% for (var i=0; i < supplies.length; i++) { %>
if (i == selected) {
console.log(supplies);
}
<% } %>
Run Code Online (Sandbox Code Playgroud)
我正在使用EJS,Express.js和socket.io.我可以通过向我的Node.js服务器实例发送消息将Javascript变量转换为EJS变量,但这有点傻......有没有办法在EJS中使用Javascript变量?
编辑:我想在用户从下拉菜单中选择一个项目后访问耗材,一个javascript数组.当他选择这个项目时,带有上述代码的javascript函数需要访问一些EJS.这就是我需要在EJS中使用普通Javascript变量的原因.
我的Express应用程序正在使用EJS,我的views目录如下所示:
./views
./contents
home.ejs
./includes
header.ejs
footer.ejs
layout.ejs
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据contents我的routes/index.js中命名的局部变量有条件地在layout.ejs视图中加载home.ejs .那个文件看起来像这样:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Home', contents: 'home.ejs' });
};
Run Code Online (Sandbox Code Playgroud)
理想情况下,我可以简单地写(在layout.ejs中):
<% include '/contents' + contents %>
Run Code Online (Sandbox Code Playgroud)
其中尾部"contents"是局部变量,其中包含要加载的正文文本的相对路径.
但是,似乎EJS总是按照include字面上的指令来解释文本,并且没有机会发生任何插值魔法.
我也试过无济于事:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
Run Code Online (Sandbox Code Playgroud)
有没有人有条件地包含基于路线中传递的变量的视图的创造性解决方案?
我在后端使用nodejs和mongodb作为我正在开发的应用程序.我正在使用express来测试应用程序,我正在尝试使用ejs来呈现我的html文件.但是,我遇到了我的默认视图引擎未定义的问题.
这是我的app.js:
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var conf = require('./conf');
var app = express();
var mongoose = require('mongoose');
, Schema = mongoose.Schema
, ObjectId = mongooseSchemaTypes.ObjectID;
var UserSchema = new Schema({})
, User;
// all environments
app.set('port', process.env.PORT || 3000);
app.set('view engine', 'ejs');
app.engine('.html', require('ejs').renderFile());
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) …Run Code Online (Sandbox Code Playgroud) 我将响应字符串以EJS格式存储在数据库中,并在Node中填写数据.我想要做的是能够使用我想要的任何属性,无论它来自哪个模型,然后在Node中,async /等待那些模型,一旦我有模板,基于所需的属性.
所以,如果我有一个模板,如:
"Hello <%=user.firstName%>."
Run Code Online (Sandbox Code Playgroud)
我希望能够查看该模板并提取以下内容:
ejsProperties = ["user", "user.firstName"]
Run Code Online (Sandbox Code Playgroud)
或类似的东西.