运行Flask时未添加外部JavaScript文件

80 投票
4 回答
84610 浏览
提问于 2025-04-17 14:50

我有一个叫做 showMap.html 的HTML文件:

<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <title>Map</title>
  <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
  </script>
  <script type="text/javascript" src="js/map.js"></script>
</head>

<body onload="showPosition()">
  <div id="map_canvas" style="width:500px;height:500px;"></div>
</body>

</html>

还有一个JavaScript文件 map.js,它放在同一个目录下的 js 文件夹里。

当我加载这个HTML文件时,代码运行得很好,但在服务器上运行时就不行了。

我使用Python的Flask框架进行后端编程,搞笑的是,如果我把JavaScript代码直接写在HTML文件里,它就能正常工作。唯一的问题就是外部的那个文件。

相关问题:

4 个回答

0

我也遇到了同样的问题,对于样式表来说,URL_FOR可以正常使用,但对于JavaScript就不行了。
我不得不写了下面的代码:

<script type="text/javascript" src="static/map.js"/>

这样就解决了我的问题。

16

第一步:在项目的根目录下创建一个名为 static 的文件夹。

第二步:把静态文件放到这个 static 文件夹里。

第三步:在模板中添加相关内容。

<script type="text/javascript" src="{{ url_for('static', filename = 'hello.js') }}"></script>
134

map.js 文件作为一个 静态资源 来提供:

  • 把这个文件移动到你的包的 static/ 子目录里

  • 在 Jinja2 模板中为它生成一个静态 URL,方法如下:

     <script type="text/javascript"
             src="{{ url_for('static', filename='map.js') }}"></script>
    

filename 参数需要一个相对路径;如果需要的话,你可以使用子目录。

撰写回答