[英]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
现在:
在创建服务器以便从那里运行我的应用程序之前,脚本文件像往常一样简单地包含在 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.