我是nodejs和expressjs的新手,所以我试图构建简单的Web应用程序来掌握这两个框架。 在这里,我构建了一个具有以下架构的项目:
js
test.js
views
index.html
server.js
我的服务器文件如下所示:
var fs = require("fs");
var host = "127.0.0.1";
var port = 1337;
var express = require("express");
var ejs = require("ejs");
var server = express();
server.use(server.router);
server.use(express(__dirname));
server.set('view engine','html');
server.engine('html', require('ejs').renderFile);
server.get("*", function(request, response){
response.render('index.html');
});
server.listen(port, host);
和我的索引文件如下:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Starter Template for Bootstrap</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script language="javascript" src="/js/test.js" type="text/javascript"></script>
</head>
<body ng-app>
<div class="container">
<div class="starter-template">
some code
</div>
</div><!-- /.container -->
</body>
</html>
我的index.html文件正确加载但我无法加载test.js文件。我该如何解决这个问题?
答案 0 :(得分:2)
在Express中使用 express.static 内置中间件功能。
在server.engine之后添加此行。该机制应该允许提供静态文件,例如图像,javascripts,css
app.use(express.static(__dirname + '/js'));
现在你可以加载:
http://localhost:1337/js/test.js
答案 1 :(得分:0)
将render更改为sendfile并将js文件夹移动到公共文件夹,然后添加此中间件 server.use(表达(__目录名+ '/公共'));
答案 2 :(得分:0)
JS文件呈现为静态文件。 参考:https://expressjs.com/en/starter/static-files.html 首先创建一个文件夹“static”并在其中保留.js文件。 现在,在.ejs文件中更正这些.js文件的脚本标记。
答案 3 :(得分:0)
在nodejs方面:
var path = require("path");
app.use(express.static(path.join(__dirname + '/js')));//middleware
HTML页面中的:
<script src="./my_script.js"></script>