76 lines
3.2 KiB
Markdown
76 lines
3.2 KiB
Markdown
# RequireJS
|
|
|
|
RequireJS loads plain JavaScript files as well as more defined modules. It is
|
|
optimized for in-browser use, including in
|
|
[a Web Worker](http://requirejs.org/docs/api.html#webworker), but it can be used
|
|
in other JavaScript environments, like Rhino and
|
|
[Node](http://requirejs.org/docs/node.html). It implements the
|
|
[Asynchronous Module](https://github.com/amdjs/amdjs-api/wiki/AMD)
|
|
API.
|
|
|
|
RequireJS uses plain script tags to load modules/files, so it should allow for
|
|
easy debugging. It can be used
|
|
[simply to load existing JavaScript files](http://requirejs.org/docs/api.html#jsfiles),
|
|
so you can add it to your existing project without having to re-write your
|
|
JavaScript files.
|
|
|
|
RequireJS includes [an optimization tool](http://requirejs.org/docs/optimization.html)
|
|
you can run as part of your packaging steps for deploying your code. The
|
|
optimization tool can combine and minify your JavaScript files to allow for
|
|
better performance.
|
|
|
|
If the JavaScript file defines a JavaScript module via
|
|
[define()](http://requirejs.org/docs/api.html#define), then there are other benefits
|
|
RequireJS can offer: [improvements over traditional CommonJS modules](http://requirejs.org/docs/commonjs.html)
|
|
and [loading multiple versions](http://requirejs.org/docs/api.html#multiversion)
|
|
of a module in a page. RequireJS also has a plugin system that supports features like
|
|
[i18n string bundles](http://requirejs.org/docs/api.html#i18n), and
|
|
[text file dependencies](http://requirejs.org/docs/api.html#text).
|
|
|
|
RequireJS does not have any dependencies on a JavaScript framework.
|
|
It is dual-licensed -- new BSD or MIT.
|
|
|
|
The standard require.js file is around 5.5KB when minified via Closure Compiler
|
|
and gzipped.
|
|
|
|
RequireJS works in IE 6+, Firefox 2+, Safari 3.2+, Chrome 3+, and Opera 10+.
|
|
|
|
[Latest Release](http://requirejs.org/docs/download.html)
|
|
|
|
## Directories
|
|
|
|
* **dist**: Scripts and assets to generate the requirejs.org docs, and for
|
|
generating a require.js release.
|
|
* **docs**: The raw HTML files for the requirejs.org docs. Only includes the
|
|
body of each page. Files in **dist** are used to generate a complete HTML page.
|
|
* **tests**: Tests for require.js.
|
|
* **testBaseUrl.js**: A file used in the tests inside **tests**. Purposely
|
|
placed outside the tests directory for testing paths that go outside a baseUrl.
|
|
* **updatesubs.sh**: Updates projects that depend on require.js Assumes the
|
|
projects are siblings to this directory and have specific names. Useful to
|
|
copy require.js to dependent projects easily while in development.
|
|
|
|
## Tests
|
|
|
|
This repo assumes some other repos are checked out as siblings to this repo:
|
|
|
|
git clone https://github.com/requirejs/text.git
|
|
git clone https://github.com/requirejs/i18n.git
|
|
git clone https://github.com/requirejs/domReady.git
|
|
git clone https://github.com/requirejs/requirejs.git
|
|
|
|
So when the above clones are done, the directory structure should look like:
|
|
|
|
* domReady
|
|
* i18n
|
|
* text
|
|
* requirejs (this repo)
|
|
|
|
You will need to be connected to the internet because the JSONP and
|
|
remoteUrls tests access the internet to complete their tests.
|
|
|
|
Serve the directory with these 4 siblings from a web server. It can be a local web server.
|
|
|
|
Open requirejs/tests/index.html in all the browsers, click the arrow button to run all
|
|
the tests.
|