多年来我一直在使用网络,但今天我开始使用一个基本的 Angular 应用程序来做一些非常简单的事情,我只是使用 Angular 文件和一个 html 文件作为我的基础。
在做所有 Angular 事情之前,我基本上只是让骨架运行,我注意到浏览器找不到 app.js 文件的相对路径。它可以找到 .css 文件,但不能找到 .js。
所以我放了一张图片进行测试,它也找不到!下面是我的代码:
<!DOCTYPE html>
<html ng-app="ecsApp">
<head>
<title>Client Services Support | Elite Chat</title>
<link rel="stylesheet" href="public/stylesheets/foundation.min.css">
<link rel="stylesheet" href="public/stylesheets/main.css">
<base href="/">
</head>
<body ng-view>
<img src="public/images/clock.jpg">
TEST
<script src="app_client/app.js"></script>
</body>
</html>
这是我的文件夹结构:
project
> index.html
> app_client
> app.js
> public
> images
> clock.jpg
> stylesheets
> main.css
我可以使用图像的绝对路径(系统路径,IE c:\user\blah\folder\project\public\images\clock.jpg)它会显示。但显然系统路径是完全愚蠢的,不能使用。
为什么我不能做像显示图像这样简单的事情?我什至将图像放在与 index.html
相同的位置提交一个试过的 <img src="clock.jpg">
它仍然不会显示图像。
最佳答案
所以这个故事的寓意是,当做任何比静态 HTML 站点更复杂的事情时,使用某种网络服务器。
如果您查看原始问题中的 HTML,您会在 <head>
中看到本节:<base href="/">
.当在本地编辑文件并且不使用网络服务器(例如 node.js 或 xampp 或任何您想要的)时,基本路径(浏览器中的 url)类似于
file:///C:/Users/person/folder/project/index.html#/
因此浏览器将尝试在 <base>
之后加载文件基于疯狂文件路径的标签(哈哈,双关语)。这就是为什么此时以下内容为真:
不工作
<img src="public/images/clock.jpg">
工作
<img src="file:///C:/Users/person/folder/project/public/images/clock.jpg">
重要:
现在,如果我想修复这个问题,我可以运行一个 node.js 服务器并将这些文件扔进去或上传到网络以使用相对测试/查看所需的输出em> src
属性。否则,我将不得不使用系统文件路径。
关于javascript - 基本(本地)HTML 不加载图像或 js 但加载 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39882237/