javascript - 以编程方式切换到网页的生产源

标签 javascript html css

我有一个网站元素,在 index.html 的主体末尾包含几个 JavaScript 文件,一些来自第 3 方库,其余的是我写的:

<html>
  ...
  <body>
  ...
  <script src="lib/lib1.js"></script>
  <script src="lib/lib2.js"></script>
  <script src="js/js1.js"></script>
  <script src="js/js2.js"></script>
  ...
  </body>
</html>

对于生产,我自然想要一组优化的包含。首先,作为更大构建过程(使用 Maven)的一部分,所有非库 JavaScript 都被组合、优化和缩小。我还想使用缩小的库文件(可能来自 CDN):

<html>
  ...
  <body>
  ...
  <script src="lib/lib1.min.js"></script>
  <script src="//cdn/lib2.min.js"></script>
  <script src="js/combined.min.js"></script>
  ...
  </body>
</html>

我们的 CSS 使用了类似的过程。

所以,我的问题是:人们使用什么技术来完成脚本/CSS 集之间的这种切换?

因为我的生产构建过程已经使用了 Maven,所以我愿意接受涉及 Maven 插件的建议,例如 this one .但是,出于工作流程的原因,我想保持 index.html 干净(例如,我不想用 token 代替脚本包含,它需要在没有进一步处理的情况下工作。)

最佳答案

我想出了一个很好的基于 Maven 的解决方案,使用 maven-replacer-plugin .在我的 HTML 文件中,我使用注释来阻止我的开发和生产代码:

<!-- DEVELOPMENT -->
<script src="lib/lib1.js"></script>
<script src="lib/lib2.js"></script>
<script src="js/js1.js"></script>
<script src="js/js2.js"></script>
<!-- /DEVELOPMENT -->
<!-- PRODUCTION
<script src="lib/lib1.min.js"></script>
<script src="//cdn/lib2.min.js"></script>
<script src="js/combined.min.js"></script>
/PRODUCTION -->

然后,我为 Maven 插件使用以下配置 block :

<configuration>
    <file>index.html</file>
    <replacements>
        <replacement>
            <token>&lt;!-- DEVELOPMENT --&gt;</token>
            <value>&lt;!-- DEVELOPMENT</value>
        </replacement>
        <replacement>
            <token>&lt;!-- /DEVELOPMENT --&gt;</token>
            <value>/DEVELOPMENT --&gt;</value>
        </replacement>
        <replacement>
            <token>&lt;!-- PRODUCTION</token>
            <value>&lt;!-- PRODUCTION --&gt;</value>
        </replacement>
        <replacement>
            <token>/PRODUCTION --&gt;</token>
            <value>&lt;!-- /PRODUCTION --&gt;</value>
        </replacement>
    </replacements>
</configuration>

运行后,开发代码被关闭,生产代码被打开:

<!-- DEVELOPMENT
<script src="lib/lib1.js"></script>
<script src="lib/lib2.js"></script>
<script src="js/js1.js"></script>
<script src="js/js2.js"></script>
/DEVELOPMENT -->
<!-- PRODUCTION -->
<script src="lib/lib1.min.js"></script>
<script src="//cdn/lib2.min.js"></script>
<script src="js/combined.min.js"></script>
<!-- /PRODUCTION -->

显然,您可以轻松地删除开发代码。

关于javascript - 以编程方式切换到网页的生产源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627451/

相关文章:

javascript - 如何使联系表格提交对电子邮件的回复?

html - 如何使 <h3> 在已定义的 <a> 标签中工作?

php - CKEditor 获取选定的编辑器

Javascript:访问对象的引用变量

javascript - 将 div 与响应式设计对齐

html - Safari 中不显示 Div

javascript - zIndex 和显示属性不正常

html - 单击时更改 CSS 中的背景图像

javascript - 在 html 中创建按钮,将元素 (ul) 添加到 html 文件

javascript - 使用 Bootstrap Carousel 和 Chartkick 时如何正确渲染图表?