繁体   English   中英

Node.js 和 Express:如何将脚本文件添加到 ejs 文件

[英]Node.js and Express: How to add script file to ejs file

这是我第一次使用 node.js 和 Express。 我有以下项目结构:

Project/
|-- app/
|   |-- script.js
|
|-- public/
|   |-- css/
|       |-- style.css
|   |
|   |-- resources/
|
|-- views/
|   |-- index.ejs
|
|-- app.js
|-- package.json
|-- package-lock.json

现在:

  • app.js -> 启动服务器
  • index.ejs -> 包含 html 代码
  • style.css -> 有样式
  • script.js -> 包含我的应用程序的前端功能

在创建服务器以便从那里运行我的应用程序之前,脚本文件像往常一样简单地包含在 index.html(现在是 index.ejs)中,并且一切正常。 但是现在仅仅在 ejs 中包含脚本文件是不够的。 实际上,页面只是在服务器上加载,但没有任何功能。

我已经尝试在我的 script.js 文件中添加以下内容,因为我在这里找到了一些东西,但它不起作用:

const express = require("express");
path = require('path');

const script = express();
script.use(express.static(path.join('../views', 'index')));

我需要做什么才能将我的 script.js 文件与 node.js 链接并表达,而无需开发 RESTful 应用程序

您使用express.static错误。

首先,您真的,真的不想公开您的 ejs 文件供其他人下载。 这样做可以让人们看到您的服务器的源代码(即使它只是模板),从而为他们提供更多信息以对您的应用程序进行逆向工程。 所以删除这个:

script.use(express.static(path.join('../views', 'index')));

其次,您希望人们能够下载您的前端脚本、css 和图像。 要允许这样做(这是您问题的直接答案),您需要使用express.static

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

一旦你设置好了,你可以简单地在你的 ejs 文件中包含你的前端脚本:

<script src="/script.js">

浏览器将为您执行 rest。


补充回答:

如果您希望从/app路径而不是/提供脚本,您可以在 Express 中设置路径:

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

然后可以用作:

<script src="/app/script.js">

你需要告诉 express 使用的是 ejs


// set view engine to ejs
script.set("view engine", "ejs");
// you need to specify views folder too because your script.js is not in // root folder.
app.set('views','../views');
// serve public folder so you can include .css .js in your .ejs file.
app.use("/public", express.static("../public"));

//render you index file
app.use("/", (req,res)=>{
 return res.render("index");
});


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM