Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在requirejs中document.ready之前执行代码_Javascript_Requirejs - Fatal编程技术网

Javascript 在requirejs中document.ready之前执行代码

Javascript 在requirejs中document.ready之前执行代码,javascript,requirejs,Javascript,Requirejs,我看到require.js支持在触发document.ready()时执行代码。见: 我只是想知道有没有办法在调用document.ready()之前让它100%执行代码?例如,代码main.js是否在document.ready()事件之前执行?谢谢。您的请求没有纯RequireJS解决方案。从本质上讲,您要求的是: 我希望a)异步加载模块,但b)我希望同步加载模块 需求a是由您正在使用RequireJS这一事实引起的。RequireJS是一种设计用于加载AMD模块的加载程序。AMD代表异步模

我看到
require.js
支持在触发
document.ready()
时执行代码。见:


我只是想知道有没有办法在调用
document.ready()
之前让它100%执行代码?例如,代码main.js是否在document.ready()事件之前执行?谢谢。

您的请求没有纯RequireJS解决方案。从本质上讲,您要求的是:

我希望a)异步加载模块,但b)我希望同步加载模块

需求
a
是由您正在使用RequireJS这一事实引起的。RequireJS是一种设计用于加载AMD模块的加载程序。AMD代表异步模块定义。如果您使用RequireJS,您必须接受它异步运行的事实。因此,它不能保证在文档准备就绪之前加载并执行任何模块

要求“b”是由您的要求引起的,即在文档准备就绪之前执行代码。这只能通过强制同步执行模块来实现。(我已经考虑了一些延迟
ready
事件的方法,但我认为这通常是不可能的。像
jQuery.holdReady
这样的解决方案并不是真正延迟事件,而是只延迟使用
jQuery.ready
设置的处理程序。只要浏览器决定事件发生,该事件仍然会发生。)t处理程序稍后会被触发。并且只有jQuery处理程序会受到影响,其他的不会受到影响。)

您可以使用
script
元素(不使用
async
属性)加载代码,但这样就不会使用RequireJS


一个类似于RequireJS的解决方案是使用。您的代码必须构建到单个包中。您可以同步加载此捆绑包。它本质上与使用
script
元素具有相同的效果,但仍然可以从模块化中获益。注意,Almond有一系列的限制。你必须自己决定这些限制是否是你的问题。我已经解释了如何同步使用Almond。

所有全局代码都将在发送ready事件之前执行。RobG但是require.js的思想是远离全局代码。reequire.js的方法是什么?我只想在dom.ready()之前做一些引导等工作?您想摆脱全局代码,但同时希望在文档准备好之前执行一些代码。这与执行全局代码基本上是一样的吗?检查一下Nasir Mahmood,我想要一个require.js解决方案。我应该将代码放在require.js模块的何处。