如何处理作为ES6模块

时间:2017-08-29 16:21:19

标签: javascript browser-cache es6-modules

旧情况

以前,如果有新版本,我使用以下方法强制浏览器重新加载我的JavaScript文件。

<script src="common.js?version=1337"></script>
<script src="app.js?version=1337"></script>

我的HTML是自动生成的(例如使用PHP),因此很容易实现自动化。

新情况

现在我想使用ES6模块并导入我的公共代码。 我的HTML变为:

<script src="app.js?version=1337" type="module"></script>

app.js包含导入:

import {foo, bar} from './common.js';

问题

现在我的问题是:如何在新方案中影响common.js的缓存?

每次修改app.js时,我都不想手动编辑common.js。如果可能的话,我也不想动态生成/预处理我的任何JavaScript文件。

1 个答案:

答案 0 :(得分:0)

ES6模块可以导入输出有效JS的PHP文件。只要你也设置了正确的标题,你应该没问题。

因此,您的index.php文件将包含:

<script src="app.js.php?version=1337" type="module"></script>

您的app.js.php文件将包含:

<?php
  header("Content-Type: application/javascript");
  $version = 1337; // Probably imported form some config file;
?>
import {foo, bar} from './common.js.php?version=<?=$version?>';