我如何访问URL参数在Javascript异步加载由require.js


How can I access URL parameters in Javascript loaded asynchronously by require.js?

我使用RequireJS来加载我的应用程序中的模块。我需要传递一个URL参数,我得到在index.php到主模块。有几种方法可以做到这一点,但我更希望索引中的唯一内容仍然是这样的:

<script type="text/javascript" data-main="scripts/main" src ="scripts/require-jquery.js"></script>

因为RequireJS说它更适合优化。我目前的解决方法是将原始的require调用放在索引文件中,并使用URL参数。有没有更好的办法?

作为参考,我在服务器端使用PHP,如果有帮助的话。

要将参数从GET传递到脚本,您有三个选项:

使用$_SESSION存储值并动态编辑主js文件这将导致非常大的开销,并增加许多不必要的复杂性(更多的复杂性=>更多的bug)

添加此代码 http://www.onlineaspect.com/2009/06/10/reading-get-variables-with-javascript/到主模块,通过javascript检索参数。

用PHP生成一个小的java脚本(使用$_GET)来设置值这在理论上比其他选项更快。

选项2和选项3之间的速度应该没有明显差异,所以只选择符合您需求的。

如果主模块是一个经常更新的第三方组件,我会选择第三个选项,因为这样你就不必每次拉新版本时都更改主模块。

如果你想设置一个基于用户的默认值,你应该坚持使用选项3,以便更容易访问你的数据库和用户设置。

我希望这对你有帮助。

编辑:如果你的主模块在加载所有脚本之前不需要该参数,你可以在额外的模块中使用选项2中的脚本来设置主模块中的值。这也可以解决更新问题。