Used to include and evaluate other scripts. Anything exported by a required script is then made available using require.
When require is called, the app engine first checks for the required script in the current directory. If a script with the specified name is not found, it will check the shared lib directory (which contains most predefined modules such as app, util, screen, etc.).
The first time a script is required in an app, it is evaluated and then the exports are returned. If that script is required somewhere else in the same app, a reference to the object created from the first require is returned rather than evaluating the script again.
As an example, see the following app, which is split into three scripts: example1.js, example2.js, and example3.js. The following is its app.json file:
- When the app is started, example1.js requires both example2.js and example3.js (and example3.js, in turn, also references example2.js). When example2.js is evaluated, its init() function assigns a value to the 'status' property of 'Status set by example2.init()'
- This value is saved to the variable 'foo' in example1.js
- example2.setStatus() is used to change the value of example2.status to 'Status reset by example1.js'
- When the 'bar' variable is set to the result of the example3.getStatus() function, you can see that the 'example2' object referenced in both example1.js and example3.js is actually the same object.