我希望能够使用Express和EJS向客户端发送消息.我看了一遍,但仍然找不到示例或教程.有人能告诉我闪烁消息的最简单方法吗?
谢谢!
我正在使用Node.JS,Express,MongoDB和EJS.我有一个关于一个数据库下的多个MongoDB集合的问题,并调用它们在前端使用.我有3个集合,经过大量研究后未发现如何调用多个集合而没有错误.
我知道将一切存储在一个集合下并不是一个问题,但我觉得最好的方法是按类别将它们分开.这是我的db/collection调用:
app.use(express.bodyParser());
var MongoClient = require('mongodb').MongoClient;
app.get('/', function(req, res){
MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
if(!err) {
console.log("We are connected");
}
db.collection("portfolio", function(err, collection) {
collection.find().sort({order_num: 1}).toArray(function(err, result) {
var portfolio = [];
if (err) {
throw err;
} else {
for (i=0; i<result.length; i++) {
portfolio[i] = result[i];
}
res.render('index.html', {portfolio: portfolio});
}
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
我怎么能多次调用其他集合,例如"约"集合等?我尝试添加另一个......
db.collection("about", function(err, collection) {
Run Code Online (Sandbox Code Playgroud)
...内...
MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
Run Code Online (Sandbox Code Playgroud)
...但它在终端控制台日志中给出了错误.
提前致谢.
编辑:
这是我正在尝试做的,这给了我一个错误:
app.get('/', function(req, res){
MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
if(!err) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试为一个简单的项目建立一个基本的单元测试环境,但是我遇到了一个奇怪的障碍,经过数小时的研究后我无法克服这个障碍.
出于某种原因,我Error: NETWORK_ERR: XMLHttpRequest Exception 101直接从EJS返回尝试使用XHR加载模板,但只是偶尔使用一次.
案例很简单,我有一个骨干应用程序,实例化一个呈现EJS模板的骨干视图.这看起来像这样:
BackboneView = Backbone.View.extend({
initialize: function() {
this.template = new EJS({url: '/app/views/root/root.template.ejs'});
}
});
Run Code Online (Sandbox Code Playgroud)
要设置grunt-contrib-jasmine,我的Gruntfile中有以下代码段:
jasmine: {
cms: {
src: "app/**/*.js"
options: {
specs: "tests/fe/spec/*Spec.js",
vendor: [
"vendor/jquery/dist/jquery.js",
"vendor/underscore/underscore.js",
"vendor/backbone/backbone.js",
"vendor/ejs/ejs.js",
],
keepRunner : true,
outfile : "tests/fe/_SpecRunner.html",
host : "http://0.0.0.0:8000"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我大部分时间都可以运行我的测试套件:
$ grunt jasmine
Running "jasmine:cms" (jasmine) task
Testing jasmine specs via PhantomJS
log: came in request!, /app/views/root/root.template.ejs
log: 200
log: /app/views/root/root.template.ejs
website.header
header.test()
- test should return …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个格式化我的ejs文件的包.我已经找到"html-css-js prettify"并将"ejs"设置为allowed_file_extensions,但这不起作用.当我在其他选项中使用de default配置时,所有表达式语言都破坏了.当我在数组"unformatted"中设置"%"时,忽略表达式语言旁边的所有代码.
你们有另一个ideia或插件与sublimeText 3一起使用吗?
我使用Sails.js和默认模板引擎(EJS).我有一个直接从routes config定义的视图:
配置/ routes.js
'/': {
view: 'homepage'
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在homepage.ejs中访问环境?我需要这样的东西:
views/homepage.ejs(下一个不起作用,所以我需要一个有效的解决方案)
...
<span>Hello you are on <%= sails.env %> environment</span>
...
Run Code Online (Sandbox Code Playgroud)
呈现为:
Hello you are on production environment
Run Code Online (Sandbox Code Playgroud)
请不要建议我为此创建控制器.
我希望有办法直接从视图或路线中的当地人那里得到它,但是如何,这就是问题.
目前我正在搞乱Node和EJS模板.
但是我遇到了问题.我建立了一个由多个组件组成的页面,我将这些组件调用到索引页面,如下所示:
<% include components/header.ejs %>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将数据(json)传递给特定的包含?
我希望能够重用组件,以显示来自json的不同内容.
谢谢
我想使用在javascript文件中声明的变量到ejs文件.
JavaScript的:
var express = require('express');
var app = express();
var myVar = 1;
Run Code Online (Sandbox Code Playgroud)
在ejs文件中,我想在几个if语句中使用该变量,我必须再次声明它才能使用它.
ejs文件:
var myVar = 1;
if ( my Var ) ....
Run Code Online (Sandbox Code Playgroud)
我怎么能避免这种情况?或者有没有办法创建一个可以从javascript和ejs访问的配置文件?
我也试过用:
app.locals.myVar = 1
但它在ejs文件中未定义.
-------更新--------------------------
在我的代码我正在使用:
app.get('/', function (req, res) {
res.render('index', { user : req.user, message: [] });
});
Run Code Online (Sandbox Code Playgroud)
使用app.locals后:
app.get('/', function (req, res) {
res.render('index', { user : req.user, message: [] });
res.render('user_info.ejs');
Run Code Online (Sandbox Code Playgroud)
});
即使代码运行正常,我收到:
ReferenceError: ....user_info.ejs:18
>> 18| height:60px;
user is not defined
at eval (eval at <anonymous> (...node_modules/ejs/lib/ejs.js:464:12), …Run Code Online (Sandbox Code Playgroud) 看起来如果图像标记在我的index.ejs模板中,我缺少在webpack配置中加载图像的设置.
我的项目中的html文件中的所有图像都在我的构建过程中被正确地重命名并加载,但.ejs文件中的图像标记被忽略.
即在我的.ejs中,如果我有<img src="../../home.png">它仍然是这样,但在正常的HTML文件中它改变为<img src="12345677.png">
我目前的装载机:
loaders: [
//HTML Files
{
test: /\.html$/,
loader: 'html'
},
//Transpile ES6 to ES5
{
test: /\.js$/,
include: path.join(__dirname, 'src'),
exclude: /node_modules/,
loader: 'babel',
query: {
presets: [
["es2015", {"module": false}]
]
}
},
//Extract Normal CSS
{
test: /\.css$/,
loader: ExtractTextPlugin.extract({ loader : 'css?sourceMap!autoprefixer', publicPath: "../"})
},
//Bundle Less into CSS Code
{
test: /\.less$/,
loader: ExtractTextPlugin.extract({ loader : 'css?sourceMap!autoprefixer!less?sourceMap', publicPath: "../"})
},
//Images
{
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
loader: 'file'
} …Run Code Online (Sandbox Code Playgroud) 是否可以在节点/ ejs模板中使用console.log?当我尝试时,它似乎什么也没做,甚至是简单的事情:
<% console.log('test') %>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<%= console.log('test') %>
Run Code Online (Sandbox Code Playgroud)
控制台中什么都没有显示。
我能得到的最接近的是客户端下载它们.它将下载正确的ejs文件.
它让我发疯,因为我觉得它应该有效,但事实并非如此.如果我把html文件放在那里他们服务就好了.这有点乱,因为我一直在尝试各种各样的事情.
var application_root = __dirname;
var express = require('express');
var vhost = require( 'vhost' );
var https = require('https');
var http = require('http');
var fs = require('fs');
var path = require("path");
var forceSSL = require('express-force-ssl');
//do something
var app = express();
var credentials = {};
var config = require('./config.json')[process.env.NODE_ENV || 'dev'];
//Use ejs?
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
//Ensure all are going to www.
app.all(/.*/, function(req, res, next) {
var host = req.header("host");
if (host.match(/^www\..*/i)) {
next();
} else …Run Code Online (Sandbox Code Playgroud) ejs ×10
node.js ×7
javascript ×6
express ×4
collections ×1
console ×1
ecmascript-6 ×1
json ×1
mongodb ×1
phantomjs ×1
sails.js ×1
sublimetext3 ×1
unit-testing ×1
vhosts ×1
webpack ×1