如何使用Express提供部分动态HTML页面?

5

好的,以下是我的问题:我有一个HTML页面,我很满意,但我希望它变得动态。我正在使用Node和Express,并且想知道是否有任何方法可以修改并呈现纯HTML。我不会使用Jade或任何其他模板引擎。

我的server.js文件:

var http = require('http');
var express = require('express');
var app = express()

var port = 3000;
var api_router = express.Router();

....

api_router.route('/webm/test/')
.get(function(req, res){
    res.sendFile(__dirname + "/test.html")
})

app.use('/api/', api_router);
app.listen(port);
console.log("NodeJS Backend API running.");

目前这个功能不可用(没有找到用于HTML的模板引擎)。它也不能满足我的需求:我希望根据GET请求在一个标签中设置"src='blah.webm'"。

这是我想要修改的页面:

<!DOCTYPE html>
<html>
    <head>
        <title>Index</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" type="text/css" href="../stylesheet.css">
        <link rel="stylesheet" type="text/css" href="stylesheet.css">
    </head>

    <body>
        <div id="header">
            <a href="../index.html"><p>../</p></a>
            <p>TrentV.net : Trent VanSlyke</p>
        </div>
        <div class="container" style="display: flex">
            <video id="player" src="CUSTOMIZE ME" controls></video>
            <div id="related">

            </div>

            <script src="webm.js" type="text/javascript"></script>
        </div>
    </body>
</html>
3个回答

5

您可以像这里所描述的那样使用Express视图模板。


虽然不完全符合我的要求,但现在EJS对我来说已经很好了。接受了。非常感谢 :) - Trent
没关系。祝你有美好的一天。问候。 - yeiniel
仍在使用ejs模板引擎。 - Rahul Kumar

0

然后使用ejs
创建一个名为templates的文件夹,在其中添加registermessage文件夹,并放置html.ejs作为HTML文件,style.ejs作为CSS文件,text.ejs作为文本响应。

var templateDir = path.join(__dirname, "../../../", 'templates', 'registermessage')

    var resetpassword = new EmailTemplate(templateDir)
        //var user = {name: 'Joe', pasta: 'spaghetti'}

// the dynamic variable to replace

    var locals = {

        message: message,
        email: email

    };


    resetpassword.render(locals, function (err, temp) {
        if (err) {
            console.log("error" + err + "results" + temp);
            //  console.log( temp.html);
            res.send(temp.html);
            //next(error, null);
        } else {
            //console.log(temp.html)
            res.send(temp.html);
            //  next(null, "email sent");
        }

    })
}

<%message %> 将会在 html.ejs 中动态地被替换

<html lang="en" ng-app="xenon-app">
<head>
</head>
<body class="page-background" >
<div class="login-container" >

      <!--  Your email id  email -->       
      <p style="font-family: Verdana, Geneva, sans-serif;font-size:13px;"><%=message %></p>

</div>
</body>

</html>

-1
You can use angular in node so that you can use like this ...
 make 
      <!DOCTYPE html>
        <html lang="en" ng-app="xenon-app">
        <head>
            <meta charset="utf-8">

           <script src="/assets/js/angular.js"></script>
            <script> 
             var app = angular.module( "xenon-app", [] );
             app.controller( "resetPasswordController",function($scope,$http,) {

        //some http calls of node and render that data in the page by $scope

    $http({
      method: 'GET',
      url: 'http://localhost:3000/someUrl'
    }).then(function successCallback(response) {
        // this callback will be called asynchronously

       $scope.name=response.name;
        // when the response is available
      }, function errorCallback(response) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
      });





        });

        </script>
        </head>
        <body ng-controller="resetPasswordController">
        <p>
        {{name}}
        </p>
        </body>
        </html>


        and render this page by
         res.sendFile(__dirname + "/test.html")

Angular 超出了这个项目的范围。 - Trent
使用ejs的唯一方法是我提供给您代码。 - Himanshu sharma
请查看上面有关ejs的答案。 - Himanshu sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接