我们可以在服务器的节点模块中提供静态文件吗?
Can we serve static files in a node module for a server?
我是初学者,如果这个问题看起来很愚蠢,我很抱歉,但我正在开发一个 NodeJs 服务器,我目前正在使用它(在 backend/server.js 中)让我的 public文件:
app.use(express.static(Path.join(__dirname, '..', 'public')));
但我想知道我是否可以在我的路径中添加一个节点模块的包,例如:
app.use(express.static(Path.join(__dirname, '..', 'node_modules/fuelsdk-node')));
我的目录是这样设置的:
我应该如何导入我的节点模块?
我可以同时使用两者吗?还是我必须以其他方式进行?谢谢!
不建议直接调用node_modules文件夹中的静态文件。相反,一个好的做法是使用重定向。想法是有一个 link 将从 node_modules 文件夹调用静态资源。
app.use("link", "physical address");
在您的情况下,它将类似于:
app.use("/", express.static(Path.join(__dirname, '..', 'public')));
app.use("/fuelsdk-node", express.static(Path.join(__dirname, '..', 'node_modules/fuelsdk-node')));
现在您可以通过与link相关的方式调用您的静态文件了。
为了更好地理解,请参阅 node_modules
中的用法示例 bootstrap
npm install jquery
npm install bootstrap
server.js 文件
// grab express
var express = require("express");
// create an express app
var app = express();
// CONFIGURE THE APP
// ==================================================
// tell node where to look for site resources
app.use('/', express.static(__dirname + '/public'));
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap
app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect JS bootstrap
app.use('/jquery', express.static(__dirname + '/node_modules/jquery/dist')); // redirect JS jquery
// create an express route for a homepage
// http://localhost:8080/
app.get('/', function(req, res){
res.sendfile('/index.html');
});
app.listen(8080);
console.log('Server has started');
public/index.html
<!DOCTYPE html>
<html>
<head>
<title>Static Files</title>
<link rel='stylesheet' href='/css/bootstrap.min.css' />
<script type="text/javascript" src="/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
</head>
<body>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>It works</strong> Static files from node_modules. css & javascript are connected by redirected link
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<script type="text/javascript">
$('.alert').alert();
</script>
</body>
</html>
我是初学者,如果这个问题看起来很愚蠢,我很抱歉,但我正在开发一个 NodeJs 服务器,我目前正在使用它(在 backend/server.js 中)让我的 public文件:
app.use(express.static(Path.join(__dirname, '..', 'public')));
但我想知道我是否可以在我的路径中添加一个节点模块的包,例如:
app.use(express.static(Path.join(__dirname, '..', 'node_modules/fuelsdk-node')));
我的目录是这样设置的:
我应该如何导入我的节点模块? 我可以同时使用两者吗?还是我必须以其他方式进行?谢谢!
不建议直接调用node_modules文件夹中的静态文件。相反,一个好的做法是使用重定向。想法是有一个 link 将从 node_modules 文件夹调用静态资源。
app.use("link", "physical address");
在您的情况下,它将类似于:
app.use("/", express.static(Path.join(__dirname, '..', 'public')));
app.use("/fuelsdk-node", express.static(Path.join(__dirname, '..', 'node_modules/fuelsdk-node')));
现在您可以通过与link相关的方式调用您的静态文件了。
为了更好地理解,请参阅 node_modules
中的用法示例 bootstrapnpm install jquery
npm install bootstrap
server.js 文件
// grab express
var express = require("express");
// create an express app
var app = express();
// CONFIGURE THE APP
// ==================================================
// tell node where to look for site resources
app.use('/', express.static(__dirname + '/public'));
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap
app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect JS bootstrap
app.use('/jquery', express.static(__dirname + '/node_modules/jquery/dist')); // redirect JS jquery
// create an express route for a homepage
// http://localhost:8080/
app.get('/', function(req, res){
res.sendfile('/index.html');
});
app.listen(8080);
console.log('Server has started');
public/index.html
<!DOCTYPE html>
<html>
<head>
<title>Static Files</title>
<link rel='stylesheet' href='/css/bootstrap.min.css' />
<script type="text/javascript" src="/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
</head>
<body>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>It works</strong> Static files from node_modules. css & javascript are connected by redirected link
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<script type="text/javascript">
$('.alert').alert();
</script>
</body>
</html>