【发布时间】:2015-10-04 07:41:30
【问题描述】:
我问这个是因为现在有几次,我尝试使用$locationProvider.html5Mode(true) 命令和<base href="/"> 并在为我的项目调用脚本/样式/图像时遇到很多错误.我想一定是我做错了什么,但是您是否应该遵循某种文件夹结构,这样您就不会遇到这些错误?或者有没有我不太理解的base href 的具体工作方式?
最近,我想在一个非常非常小的应用程序上试用它。它实际上是一个静态网站,但我想利用 Angular 的路由来确保所有页面都可以立即加载。所以我的结构是这样的:
my-project
css
images
js
angular
app.js
app.routes.js
mainCtrl.js
views
home.html
about.html
contact.html
index.html
所以我知道这个文件夹结构不是很好,但我只会在这个项目中使用 Angular 进行路由,仅此而已,所以它符合我的需求。
我把<base href="/">放在头上,把ng-app和ng-controller放在身体里,在身体里的某个地方也放了一个<div ng-view>。
我添加了$locationProvider.html5Mode(true) 并试用了该应用程序。然后我的所有脚本都被加载为http://localhost:8888/script.js,这是不正确的。该项目位于一个文件夹中,因此index.html 位于http://localhost:8888/my-project/index.html 中。因此,它应该从http://localhost:8888/my-project/js/angular/app.js 加载脚本。
我对@987654334@ 有什么不明白的地方吗?最终我可能会在某个地方在线托管这个应用程序,所以我希望脚本等的 URL 都与文件真正相关。有人有什么想法吗?
好的,所以在base href 标记上方,我的CSS 样式将链接为css/style.css,在body 标记的底部,我将我的脚本加载为js/init.js 或js/angular/app.js例如。这将尝试加载它,就好像 js 文件夹直接位于 localhost:8888/js 一样。
【问题讨论】:
-
听起来你需要
<base href="/my-project/"> -
base href不仅是一个角度调用,而且还告诉您所有的相关链接从哪里开始。不过,您的 js 文件的加载位置与您的角度路由没有任何关系。你是如何加载它们的,你把基本 href 放在哪里? -
您能否展示您的
index.html文件的示例,尤其是<script>标签 -
我更新了我的答案以向您展示@Phil。我知道使用
base href可以工作,但我认为它应该使所有文件都与该索引文件相关?或者这不完全是如何工作的?例如,如果我要将这个应用程序放到服务器上供全世界查看,我将不得不再次更改 `href="/my-project/"。 -
@germainelol 是的。
<base>标记将根路径 / URI 设置为所有相对 URI 的基础。如果该路径根据其部署位置发生更改,则需要更改它
标签: javascript angularjs