【问题标题】:node js set style css page and fill data?node js设置样式css页面并填充数据?
【发布时间】:2017-04-07 10:51:01
【问题描述】:

这是我拥有的文件夹和文件的列表

public__
         |_generate-todo.js
         |_index.js
         |_style.css
views__
         |_404
         |main
users-data.json
server.js

问题 1: 我已经完成了视图,现在我想将 public 文件夹样式表和 js 文件分配给我的主把手页面生成更好的布局

问题 2: 我必须用 user-data.json 文件中的 json 数据填充我的主句柄下拉选择列表

我做了什么:

   var path = require('path');
   var express = require('express');
   var exphbs = require('express-handlebars');

   var app = express();
   var usersData = require('./users-data');
   var port = process.env.PORT || 3000;

   // Use Handlebars as the view engine for the app.
   app.engine('handlebars', exphbs({ defaultLayout: 'main' }))
   app.set('view engine', 'handlebars');

   // Define the port to run on
    app.set('port', 3000);

   app.get('/', function (req, res) {
   res.render('index-page');
   });

    app.use(function(req, res) {
      res.redirect('404-page');
     });

    var server = app.listen(app.get('port'), function() {
    var port = server.address().port;
        console.log('Magic happens on port ' + port);
    });

谁能帮我解决这些问题

【问题讨论】:

  • 在您的服务器app.use(express.static(path.join(__dirname, 'public'); 中设置包含样式、图像等的静态文件夹然后在您的文件中确保在调用它们时添加/,例如<link href="/style.css" rel="stylesheet" />
  • 我已经编辑了这个问题,这个问题已经由自己完成了,这就是我想问的问题
  • 您不能将问题编辑为全新的问题。您可以做的是恢复您的编辑,接受与原始问题相关的答案并解决原始问题。为一个新问题打开一个新问题!还要为每个问题打开一个新问题!
  • 实际上的问题是,我是新人,所以无法清楚地提及
  • 先生很高兴我又发帖了

标签: javascript node.js express handlebars.js


【解决方案1】:

以下答案与问题的先前版本有关。

Here you can see the original question

解决问题一:

您必须使用 express 服务您的 /public 文件夹。

您可以使用以下代码:

app.use(express.static(path.join(__dirname, '/public')));

然后您可以像往常一样从您的公共目录添加您的cssjs 文件。 (不要在你的 href 或 src 语句中使用/public。)

因此您可以将其添加到您的 html 文件中:

<link rel="stylesheet" href="/style.css" type="text/css">
<script src="/index.js" type="text/javascript"></script>
<script src="/generate-todo.js" type="text/javascript"></script>

查找 express.static() 文档以供参考:express.static() documentation

解决问题2:

您的server.js 中已经有一个用于您的json 文件的require 语句:

var usersData = require(./users-data.json);

您可以在 res.render() 方法中将其传递给您的模板:

// pass a local variable to the view
res.render('your-template', { usersData: usersData });

现在您可以在下拉选择的模板中将其用作usersData。 (例如{{ usersData.something }}

参考express.js res.render() documentation

【讨论】:

  • 但不渲染主车把的布局见以上 2 个问题,第二个是您的相关问题并关闭
  • 主把手栏作为布局
  • 是的,它的渲染主句柄视图,但为什么它没有添加像“ToDoIt ”这样的标题并且只添加错误“ToDoIt”
  • 先生头衔问题仍未处理
猜你喜欢
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 2021-09-09
  • 2019-10-09
  • 2019-06-25
相关资源
最近更新 更多