在SPA中加载外部脚本和样式文件
Load External Script and Style Files in a SPA
我有一种SPA类型,它使用API来获取数据。这个SPA有一些实例,它们都使用通用的样式和脚本文件。所以我的问题是,当我更改这些文件中的一行时,我必须打开每个实例并更新文件。这对我来说真的很耗时。
其中一种方法是将这些文件放在服务器的文件夹中,然后根据时间更改版本,但如果我使用这种解决方案,我将丢失浏览器缓存:
<link href="myserver.co/static/main.css?ver=1892471298" rel="stylesheet" />
<script src="myserver.co/static/script.js?ver=1892471298"></script>
ver值是根据时间生成的,我不能使用浏览器缓存。我需要一个从API更新这些文件的解决方案,然后所有的SPA都将被更新。
在head标签中,您可以添加以下代码:
<script type="text/javascript">
var xmlhttp = new XMLHttpRequest();
var url = "http://localhost:4000/getLatestVersion"; //api path to get the latest version
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var tags = JSON.parse(xmlhttp.responseText);
for (var i = 0; i < tags.length; i++) {
var tag = document.createElement(tags[i].tag);
if (tags[i].tag === 'link') {
tag.rel = tags[i].rel;
tag.href = tags[i].url;
} else {
tag.src = tags[i].url;
}
document.head.appendChild(tag);
}
}
};
xmlhttp.open("POST", url, false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
</script>
您的api路径应该允许来自处理上述代码的网站的"CORS"。您的api应该返回如下json数据:
var latestVersion = '1892471298'; //this can be stored in the database
var jsonData = [
{
tag: 'link',
rel: 'stylesheet',
url: 'http://myserver.co/static/main.css?ver=' + latestVersion
},
{
tag: 'script',
rel: '',
url: 'http://myserver.co/static/script.js?ver=' + latestVersion
}
];
//return jsonData to the client here
如果你更改了JS或CSS中的任何内容,那么你必须更新浏览器缓存,你所能做的就是更新特定的JS版本——不是所有版本,它应该反映在浏览器中。
在API中添加一个方法,返回文件的上次修改时间,然后将值插入"ver="后的"src"/"href"属性中
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- jQuery Mobile样式从另一个文件加载内容
- Rails 4-公用文件夹中的样式表
- 将样式表、javascript和图像分离到不同文件夹中的优势
- 共享javascript和样式表文件
- 用于检查JSX文件中的代码样式的工具
- 插件无法在文件夹中找到其 css 样式
- 带有 javascript 的样式输入类型文件
- 外部样式表或脚本文件前面的“$”
- 更改火狐输入文件标签中的光标样式
- 在浏览器中合并并保存加载的样式表到一个文件中
- 在谷歌地图样式中使用JSON文件
- 当样式使用相同的 id 时,如何在 KML 文件中重新着色多边形
- 包括带有Symfony和Twig javascript和样式的整个文件夹
- 将反应工具箱样式构建为单独的 css 文件
- 在拖动上更改所有放置区的样式表(文件上传)
- 有没有办法将样式表或javascript文件动态添加到包含插件的TYPO3页面
- 在添加页面时管理多个样式表和.js文件
- 将会话值添加到 js 样式文件
- 在SPA中加载外部脚本和样式文件