gpt4 book ai didi

Javascript requirejs 在开发中但在生产中编译

转载 作者:可可西里 更新时间:2023-11-01 01:42:24 24 4
gpt4 key购买 nike

我开始评估用于 javascript 模块化的 javascript 模块工具,例如 RequireJS。这似乎很有用,尤其是在开发过程中,因此我不需要将所有 js 文件重新编译为 mylib-<version>.js每当我更改其中一个依赖文件时。

我的应用程序分发了 html 和 javascript 文件,在生产中,我想使用 javascript 文件的编译版本。

所以在开发中,我的 html 文件可能看起来像

<html>
<head>
<script data-main="scripts/main" src="scripts/require.js"></script>
</head>
</html>

但在生产中,我希望它看起来更像

<html>
<head>
<script src="mylib-1.0.js"></script>
</head>
</html>

如果我分发一个编译文件,我不认为它应该有任何引用 requirejs 的需要。

有没有一种方法可以做到这一点,而无需在分发应用程序之前手动更改我的 html 文件?

最佳答案

RequireJs 有一个 optimization tool ,它可以帮助您缩小和连接您的模块。它有很多选项,并且可能难以使用,但是使用像 GruntJs 这样的构建工具会变得更容易。或(特别是)Yeoman ,它使用 GruntJs 来构建。

在两者中你都可以使用 rjs 任务(优化模块),但是 Yeoman 还是更容易一些,因为它有生成器会为你配置它:

// usemin handler should point to the file containing
// the usemin blocks to be parsed
'usemin-handler': {
html: 'index.html'
},
// rjs configuration. You don't necessarily need to specify the typical
// `path` configuration, the rjs task will parse these values from your
// main module, using http://requirejs.org/docs/optimization.html#mainConfigFile
//
// name / out / mainConfig file should be used. You can let it blank if
// you're using usemin-handler to parse rjs config from markup (default
// setup)
rjs: {
// no minification, is done by the min task
optimize: 'none',
baseUrl: './scripts',
wrap: true,
name: 'main'
},

index.html 中,您只需使用注释行来指定应将哪些 js 文件缩小/连接到哪个输出文件:

    <!-- build:js scripts/amd-app.js -->
<script data-main="scripts/main" src="scripts/vendor/require.js"></script>
<!-- endbuild -->

在上面的示例中,模块将连接到一个名为 amd-app.js 的文件中。

编辑:

这将通过从命令行执行 grunt 来完成。这将启动许多有用的任务,这些任务将在 dist 文件夹中构建项目,但这同样具有高度的适应性。

生成的 index.html 文件(在 dist 中)只有(如果需要)一个 javascript 文件:

<script src="scripts/15964141.amd-app.js"></script>

我的建议:使用 Yeoman 让生活更轻松(至少在处理缩小/连接方面)。

关于Javascript requirejs 在开发中但在生产中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com