做web 到底用绝对路径还是相对路径?

2013-03-21 15:01:07 +08:00
 hr6r
有几个疑惑, 不知道大家通常是怎么做的.


比如, 我的tomcat 下跑两个webapp, /a 和 /b.

那么, 大家是写 href="/a/foo/bar"(绝对路径) 还是 "foo/bar"(相对路径)?


0, 在html 和js 里, 如果用相对路径("foo/bar"), ie 就不支持了.
1, 于是, 在/a 的html 里面加 <base href="/a/" />, 这样, html 里面的 "foo/bar"(相对路径) 就可以了.
2, 但是, js 里面的 "foo/bar"(相对路径) 还是不行(ie).
3, 于是, 在js里面给每个url 都加上一个$(base).attr('href')来组成绝对路径.

我觉得不是很优雅, 不知道各位都是怎么做的?
难道用绝对路径 ("/a/foo/bar")?
5178 次点击
所在节点    程序员
25 条回复
kstsca
2013-03-21 15:06:26 +08:00
这样写 xxxx.com/a/a
hr6r
2013-03-21 15:16:37 +08:00
@kstsca
谢谢, 不过, 难道这两个网站上线后, url 是这样的?
aaa.com/a/foo/bar
bbb.com/b/foo/bar
kstsca
2013-03-21 15:20:37 +08:00
是的,就应该这样的。

在本地的话 可以做127.0.0.1 host指向 调试
hr6r
2013-03-21 15:28:10 +08:00
@kstsca
-_-!!!

不应该这样把?

这样才对把?
aaa.com/foo/bar
bbb.com/foo/bar
momou
2013-03-21 23:25:28 +08:00
不是/foo/bar ?
Sdhjt
2013-03-22 00:57:02 +08:00
跨项目用绝对路径就好,方便省事。
chunshuai
2013-03-22 09:43:37 +08:00
这个要跟当前项目状况 决定的
hr6r
2013-03-22 09:49:49 +08:00
@momou 这个在ie 下会变成 aaa.com/foo/bar , 而app context 是 aaa.com/a/, 所以访问不到.
hr6r
2013-03-22 09:53:49 +08:00
@Sdhjt 绝对路径修改起来麻烦啊, 比如开发时 context 是 /a, 上线后想做去 /demo, 那岂不是要全部改动?
hr6r
2013-03-22 09:54:02 +08:00
@chunshuai 愿闻其详
momou
2013-03-22 10:05:27 +08:00
66beta
2013-03-22 10:07:29 +08:00
<head>里写死呢
hr6r
2013-03-22 10:09:54 +08:00
@momou 上线前呢....
hr6r
2013-03-22 10:14:19 +08:00
@66beta 嗯, 你是指那些 script/ style 吧?
我指的是还有其他页面中的链接要怎么处理比较好.
66beta
2013-03-22 10:16:16 +08:00
@hr6r 我想说的是<base>,个人不是很喜欢这个东西
momou
2013-03-22 10:19:34 +08:00
@hr6r tomcat没用过,但肯定是要配合HOST设置aaa.com指向/a,bbb.com指向/b,调试的时候分别访问aaa.com/bbb.com,而不是127.1
hr6r
2013-03-22 10:25:22 +08:00
@66beta 嗯, base 可以解决html 中的问题, 但是js 里面如果写相对路径还是不行(ie).
hr6r
2013-03-22 10:28:03 +08:00
@momou ok, so 还是用绝对路径, 但是不带context...
hmm... 我想想...
jiazhoulvke
2013-03-22 12:52:08 +08:00
在配置文件里用变量保存绝对路径的地址不就好了?
greatghoul
2013-03-22 13:21:40 +08:00
我通过都是写一个动态的 js 文件,里面定义了常用的一些路径

SITEENV = {
ROOT: '<% ... %>',
...
};

然后 js 中引用。

项目上线时,给这个文件做个缓存。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/63614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX