在Express.js中的静态页面中获取URL值

时间:2018-03-07 06:01:21

标签: node.js express url-routing ejs

我是节点和表达的初学者。在我当前的应用程序中,页面使用以下代码显示:

var app = express();
app.use(serveStatic('static', {'index': ['index.html']}));

在静态文件夹中,有文件:

  

css,index和js文件

听3000端口正常工作。

但是如果我想要访问这样的网址

  

本地主机:3000 /名称= someName

我想在我的js文件中使用此name参数,该文件在静态文件夹中可用 或建议任何其他路由方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

如果要在.js文件中获取查询参数,可以完成。所以代码看起来像这样:

服务器(index.js)

"use strict";

var express = require("express");
var serveStatic = require('serve-static');

var app = express();
app.use(serveStatic('static', {'index': ['index.html']}));

app.listen(3000);

console.log("Static express server started");

HTML(/static/index.html)

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script type="text/javascript" src="test.js"></script>
</head>
    <body onLoad="readParameters()">
        <div>
            <h3 id="1" >Loading..</h3>
        </div>
     </body>
</html>

客户端JavaScript(/static/test.js)

var readParameters = function()
{
    console.log('Getting parameters..');
    let params = (new URL(location)).searchParams;
    console.log('Query parameters: ', params.toString());

    var html = 'Query parameters: ';
    for (let p of params) {
      html += "<br/>" + p.toString();
    }

    $("#1").html(html);
}

然后您可以输入以下内容进行测试:

http://localhost:3000/?test=value

进入您的浏览器。

您应该看到:

Query parameters: test=value

在索引页面上。

代码树应如下所示:

root
¦   index.js
¦
+---static
        index.html
        test.js

3个文件:

/index.js (Node server side code)
/static/index.html (HTML)
/static/test.js (Test JavaScript file)

答案 1 :(得分:0)

您可以定义如下路线,

auto

路由参数是命名的URL段,用于捕获在URL中的位置指定的值。我们可以使用'req.params'对象访问这些捕获的值。供参考https://expressjs.com/en/guide/routing.html