web部署css/js等地址转换的问题

我现在本地开发时web网页的css/js都是相对于本地的
如:

<link rel="stylesheet" href="/css/passport.css"/>

但是上线的时候我需要将这些css/js地址转换成单独css/js静态文件服务器的地址
如用阿里云的oss地址:

<link rel="stylesheet" href="http://xxx-public.oss-cn-beijing.aliyuncs.com/css/passport.min.css" />

现在问题是:

每次我本地页面修改后,如果要将本地的web页面传到服务器,都需要去手动改动css/js等地址。传输到服务器后还需要改回来。(抱歉抱歉,,我现在就是用这么愚蠢的方法。)

请问有聪明的方法吗?万分感谢!

(我用的是Node.js,express模板引擎。)

阅读 3.1k
2 个回答

这个肯定是要区分开发环境和生产环境的,一个办法是将静态文件的域名做为配置参数放到配置文件中,再通过指定环境变量来使用不同的参数。

具体的做法可以参考这篇文章,里面介绍的很全面了。

你需要一个前端自动化编译工具

比如使用FIS3

下面是一个例子:
目录结构:

clipboard.png

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
    
</body>
</html>

fis-conf.js fis配置

fis.match('*.css', {
    domain: 'http://cdn.baidu.com/'
});

我们执行编译命令 fis3 release -d ./output
在当前目录下生成编译结果到output文件夹中

clipboard.png

output/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="http://cdn.baidu.com//index.css">
</head>
<body>
    
</body>
</html>

FIS3 domain配置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题