Requirejs Grunt任务,可选择为不同环境包含AMD模块
我正在为AMD开发一个web应用程序,使用Require.js和amplify.request来抽象我的AJAX调用。amplify.request的另一个优点是,我定义了一个替代模块,其中包含我的请求的模拟版本,可以用于测试目的。目前,我只需在main.js文件中注释/取消注释模块引用,就可以在请求模块的两个版本之间切换 我想做的是使用Grunt创建我的应用程序的不同版本,这取决于我想要包含的模块。我也可以用它来做一些事情,比如打开或关闭调试模式。我正在描绘类似的东西,只用于JavaScript内部的引用,而不是HTMLRequirejs Grunt任务,可选择为不同环境包含AMD模块,requirejs,gruntjs,Requirejs,Gruntjs,我正在为AMD开发一个web应用程序,使用Require.js和amplify.request来抽象我的AJAX调用。amplify.request的另一个优点是,我定义了一个替代模块,其中包含我的请求的模拟版本,可以用于测试目的。目前,我只需在main.js文件中注释/取消注释模块引用,就可以在请求模块的两个版本之间切换 我想做的是使用Grunt创建我的应用程序的不同版本,这取决于我想要包含的模块。我也可以用它来做一些事情,比如打开或关闭调试模式。我正在描绘类似的东西,只用于JavaScrip
任何人都知道这样做的插件,或者对我如何使用Grunt做这件事有什么建议?在我们当前的项目中,我们有一些不同的环境。对于每一个,我们都可以为requirejs构建指定不同的配置设置。 为了区分这些不同的环境,我使用了一个参数
target
您只需将它附加到您的调用中即可将其传递给grunt,如
grunt --target=debug
您可以使用grunt.option
在GrunFile中访问此参数,如
var target = (grunt.option('target') || 'debug').toLowerCase();
上面的行将默认为debug
。然后,您可以使用requirejs的路径
配置设置将构建指向正确的模块。下面是示例代码
requirejs: {
compile: {
options: {
paths: {
"your/path/to/amplify/request": target === "debug" ? "path/to/mock" : "path/to/real",
}
}
}
}
在我们当前的项目中,我们有几个不同的环境。对于每一个,我们都可以为requirejs构建指定不同的配置设置。 为了区分这些不同的环境,我使用了一个参数
target
您只需将它附加到您的调用中即可将其传递给grunt,如
grunt --target=debug
您可以使用grunt.option
在GrunFile中访问此参数,如
var target = (grunt.option('target') || 'debug').toLowerCase();
上面的行将默认为debug
。然后,您可以使用requirejs的路径
配置设置将构建指向正确的模块。下面是示例代码
requirejs: {
compile: {
options: {
paths: {
"your/path/to/amplify/request": target === "debug" ? "path/to/mock" : "path/to/real",
}
}
}
}
这真的很有帮助,完全可以让我根据环境使用/不使用特定的模块。有没有在我的代码中编辑特定变量的想法(例如,打开/关闭调试设置?)。我想我可以创建一个单独的模块,用不同的方式设置变量,但如果可能的话,我宁愿动态设置它。定义一个包含开关变量的设置模块怎么样?根据目标变量,您可以加载到另一个模块中,该模块包含这些开关值的不同值。在我们的项目中,我们有这样一个模块(AppSettings),但是我们没有加载到另一个模块中,而是使用requirejs.Wow的
onBuildWrite
选项覆盖设置,onBuildWrite
是我不知道的一个非常强大的选项。我想这肯定符合要求,或者我可以按照你的建议,把整个模块换掉。谢谢这真的很有帮助,完全可以让我根据环境使用/不使用特定的模块。有没有在我的代码中编辑特定变量的想法(例如,打开/关闭调试设置?)。我想我可以创建一个单独的模块,用不同的方式设置变量,但如果可能的话,我宁愿动态设置它。定义一个包含开关变量的设置模块怎么样?根据目标变量,您可以加载到另一个模块中,该模块包含这些开关值的不同值。在我们的项目中,我们有这样一个模块(AppSettings),但是我们没有加载到另一个模块中,而是使用requirejs.Wow的onBuildWrite
选项覆盖设置,onBuildWrite
是我不知道的一个非常强大的选项。我想这肯定符合要求,或者我可以按照你的建议,把整个模块换掉。谢谢