When you add "dojo / domReady!" to the require () module block, you instruct Dojo to wait for the callback you pass before the DOM loads to complete. This way, you know that with the DOMContentLoaded event all HTML codes are complete.
Between "dojo/ready" and "dojo/domReady!" there is a subtle difference: dojo / ready "allows you to pass it a callback to a function that will only be called after all the other calls have been loaded. This is extremely useful for modules that depend on other loadable modules.
Also "!" in dojo/domReady just tells you that it is a custom plugin and not a specific plugin.
Layke source share