Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法将ejs文件的文件扩展名保持为.html?_Javascript_Node.js_Express_Ejs_Embedded Javascript - Fatal编程技术网

Javascript 有没有办法将ejs文件的文件扩展名保持为.html?

Javascript 有没有办法将ejs文件的文件扩展名保持为.html?,javascript,node.js,express,ejs,embedded-javascript,Javascript,Node.js,Express,Ejs,Embedded Javascript,我正在使用ejs模板引擎开发一个expressjs应用程序。但是我想使用像home.html一样保留ejs文件的扩展名,而不是使用home.ejs。原因是我正在使用VisualStudio进行开发,而VisualStudio不支持ejs文件。因此,代码暗示格式化和突出显示不起作用 var express = require("express"); var app = express(); app.set("view engine", "ejs");//setting ejs view eng

我正在使用ejs模板引擎开发一个expressjs应用程序。但是我想使用像home.html一样保留ejs文件的扩展名,而不是使用home.ejs。原因是我正在使用VisualStudio进行开发,而VisualStudio不支持ejs文件。因此,代码暗示格式化和突出显示不起作用

var express = require("express");
var app = express();


app.set("view engine", "ejs");//setting ejs view engine
app.set("views", "./views");

app.get("/", function (req, res) {
    res.render("home");
});

app.listen(3000, function () {
    console.log("Server is listening on port 3000");
})
使用
app.engine('.html',require('ejs')。\uuu express):

app.engine('.html', require('ejs').__express);
app.set('view engine', 'ejs');

我在使用VisualStudio处理ejs文件时遇到了类似的问题。我认为,最好的方法是配置Visual Studio,通过进入菜单-工具-->选项-->文本编辑器-->文件扩展名,并根据html编辑器添加ejs文件扩展名,将ejs文件解释为html。 您可以使用

使用顶部附近的视图引擎和视图设置设置以下内容:

app.engine('html', require('ejs').renderFile);
然后,当调用
res.render
时,唯一的区别是需要指定扩展名:

app.get('/',function(req,res){
    res.render("home.html", { myString: "I'm a normal string!" });  
});

您会发现,
是按照您在.ejs文件中所期望的方式处理的。

我正在设法解决这个问题,我的代码类似于@homam answer,但我会更完整地编写代码

const http = require('http');
const path = require('path');
const express = require('express');
const engine = require('ejs');
const app = express();

app.engine('html', engine.__express);
app.set('views', path.join(__dirname, './views'));
app.set('view engine', 'html');

//this route will open profil.html in folder ./views
app.get('/', (req, res) => {
  //render file profil.html
  res.render('profil', {
    name: 'Danang Ponorogo'
  });
});

var server = http.createServer(app);
server.listen(3001, () => {
  console.log('Server is running at port 3001');
});

希望能有所帮助。谢谢。

为什么要这样做而不是配置Visual Studio,使其知道
。ejs
文件应被视为
.html
?这似乎是问了一个错误的问题。我认为@loganfsmyth是对的,你需要将你的VS配置为确认.ejs文件,这样它就被视为一个html文件。你知道我们是否可以对js文件做同样的处理,因为
app.engine('.js',require('ejs')。\uu express)似乎不起作用`当我在index.html文件中使用一个小ejs时,它似乎对我不起作用,比如:
hello

嵌入式JavaScript模板