【问题标题】:How to include bootstrap file in my ejs files?如何在我的 ejs 文件中包含引导文件?
【发布时间】:2018-05-10 03:21:52
【问题描述】:

所以我已经使用 npm -bootstrap@3 安装了引导程序,但是当我尝试在我的应用程序中包含来自 node_modules 的 bootstrap.min.css 文件时,它会在我的控制台中显示此错误:

错误信息

在网络标签中显示

在引导源中找不到 404。

以下是我的项目结构中的一些图片:

项目文件夹结构

包含引导文件的 ejs 代码

这里有什么问题?

【问题讨论】:

    标签: javascript css node.js twitter-bootstrap ejs


    【解决方案1】:

    我在学习本教程后遇到了同样的问题。您可以通过 express.static 内置中间件功能解决此问题。

    1. 创建一个名为 public 的目录
    2. 将以下代码添加到您的 app.js 文件中

      app.use(express.static('public'))

    3. 现在您可以将引导文件放在此目录(或子目录)中,并将它们链接到公共目录。

    您可以在此处找到更多信息。 https://expressjs.com/en/starter/static-files.html

    【讨论】:

      【解决方案2】:

      看起来您正在根据您的 ejs 文件的位置构建相对路径,实际上您需要做的是查看 ejs 视图的映射路径,并且您需要将其设为相对形式。 在您的情况下,它的 header.ejs 并假设您从根页面提供它应该是 ../node_modules 但如果您这样做,它将在不同的页面中中断,例如 /posts/foo 所以解决问题的最佳方法是保留您在 /public/css 文件夹中的 css 文件并将公用文件夹添加为您的静态文件夹并使用 /css/bootstrap.min.css 之类的路径

      【讨论】:

      • 但是如果我想在不运行节点服务器的情况下预览我的ejs,这个文件不能访问bootstrap.min.css
      • 是的,但是 EJS 是用于 SSR 的,所以如果你没有运行 Node 服务器,它没有多大意义
      【解决方案3】:

      为什么不从 CDN 使用?

      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
      

      【讨论】:

      • 引导 cdn 链接在我的办公室笔记本电脑上被阻止(显示连接隧道错误),所以我正在尝试使用 npm 包以艰难的方式做到这一点
      • 将它们添加到视图文件夹中,您可以使用 ../bootstrap.min.css 访问
      【解决方案4】:

      因为您尝试从服务器访问静态文件,而您的 bootstrap.min.css 是一个静态文件,我们知道如果您使用 Express,nodejs 提供了一种提供静态文件的方法。 例如,您可以使用以下代码在名为 public 的目录中提供图像、CSS 文件和 JavaScript 文件:

      app.use(express.static('public'))
      

      你应该知道:

      Express 查找相对于静态目录的文件,因此 静态目录的名称不是 URL 的一部分。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,并决定试一试 express.static() 之类的中间件。

        警告:当我声明 express.static("public") 时,我将它放在 app.js 文件的底部,但它对我不起作用。所以我把它移了上去,它可以工作了..这里是例子

        "use strict"; 
        
        const express       = require("express"),
        app                 = express();
        const layouts       = require("express-ejs-layouts");
        
        app.set("view engine", "ejs");
        app.set("port", process.env.PORT || 3000);
        app.use(
        express.urlencoded({
                extended: false
            })
        );
        
        app.use(express.json());
        app.use(layouts);
        app.use(express.static("public")); 
        
        app.get("/", (req, res) => {
            res.render("index"); 
        });
        
        app.listen( app.get("port"), () => {console.log(`Server running at http://localhost:${app.get("port")}`);
        });
        

        然后在公共文件夹(我的 css、js、图像所在的位置)中,我将 boostrap.css 放在那里 在 layout.ejs 我有 html 文件并将其称为

        <!DOCTYPE html>
        <html>
        
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=0.8, maximum-scale=1">
            <title>School of business</title>
        
            <link rel="stylesheet" href="/css/bootstrap.css"> <!-- BOOTSTRAP -->
            <link rel="stylesheet" href="/css/main.css"> 
        </head>
        
        <body>
        

        …………

        enter image description here

        【讨论】:

          【解决方案6】:

          这对我有用,使用 Bootstrap CDN

          head.ejs

          > <!-- views/partials/head.ejs --> <meta charset="UTF-8" /> <title>Super
          > Awesome</title>
          > 
          > <!-- Latest compiled and minified CSS --> <link   rel="stylesheet"  
          > href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
          > integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
          > crossorigin="anonymous" />
          

          将其包含在 index.ejs

          <!DOCTYPE html>
          <html>
            <head>
              <%- include ('../partials/head') %>
            </head>
            <body>
              <div class="jumbotron">
                <%- include ('../partials/form') %>
              </div>
            </body>
          </html>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-02-17
            • 1970-01-01
            • 2018-01-02
            • 2018-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多