Files
sentcms/public/static/libs/requirejs-plugins/README.mdown
2019-07-06 16:59:35 +08:00

149 lines
4.0 KiB
Markdown

# RequireJS plugins
Small set of plugins for [RequireJS](http://requirejs.org). Some plugins may
also work on other AMD loaders (never tested it).
For more plugins check [RequireJS Wiki](https://github.com/jrburke/requirejs/wiki/Plugins).
## Install
You can use [bower](http://bower.io/) to install it easily:
```
bower install --save requirejs-plugins
```
## Plugins
- **async** : Useful for JSONP and asynchronous dependencies (e.g. Google Maps).
- **font** : Load web fonts using the [WebFont Loader API](https://code.google.com/apis/webfonts/docs/webfont_loader.html)
(requires `propertyParser`)
- **goog** : Load [Google APIs](http://code.google.com/apis/loader/)
asynchronously (requires `async!` plugin and `propertyParser`).
- **image** : Load image files as dependencies. Option to "cache bust".
- **json** : Load JSON files and parses the result. (Requires `text!` plugin).
- **mdown** : Load Markdown files and parses into HTML. (Requires `text!`
plugin and a markdown converter).
- **noext** : Load scripts without appending ".js" extension, useful for
dynamic scripts.
### Other
- **propertyParser** : Just a helper used by some plugins to parse
arguments (not a real plugin).
## Documentation
check the `examples` folder. All the info you probably need will be inside
comments or on the example code itself.
## Basic usage
Put the plugins inside the `baseUrl` folder (usually same folder as the main.js
file) or create an alias to the plugin location:
```js
require.config({
paths : {
//create alias to plugins (not needed if plugins are on the baseUrl)
async: 'lib/require/async',
font: 'lib/require/font',
goog: 'lib/require/goog',
image: 'lib/require/image',
json: 'lib/require/json',
noext: 'lib/require/noext',
mdown: 'lib/require/mdown',
propertyParser : 'lib/require/propertyParser',
markdownConverter : 'lib/Markdown.Converter'
}
});
//use plugins as if they were at baseUrl
define([
'image!awsum.jpg',
'json!data/foo.json',
'noext!js/bar.php',
'mdown!data/lorem_ipsum.md',
'async!http://maps.google.com/maps/api/js?sensor=false',
'goog!visualization,1,packages:[corechart,geochart]',
'goog!search,1',
'font!google,families:[Tangerine,Cantarell]'
], function(awsum, foo, bar, loremIpsum){
//all dependencies are loaded (including gmaps and other google apis)
}
);
```
## Removing plugin code after build
[r.js](https://github.com/jrburke/r.js/blob/master/build/example.build.js)
nowadays have the `stubModules` setting which can be used to remove the whole
plugin code:
```js
({
// will remove whole source code of "json" and "text" plugins during build
// JSON/text files that are bundled during build will still work fine but
// you won't be able to load JSON/text files dynamically after build
stubModules : ['json', 'text']
})
```
## Notes about the Markdown plugin
The Markdown plugin was created mainly to be used to compile the markdown files
into HTML during the build step, if you set `pragmasOnSave.excludeMdown=true`
it will remove the `Markdown.Converter.js` and `mdown.js` files from the build.
Example build settings:
```js
({
baseUrl : './',
pragmasOnSave : {
excludeMdown : true
},
paths : {
mdown : 'lib/requirejs/mdown',
text : 'lib/requirejs/text',
markdownConverter : 'lib/Markdown.Converter'
},
modules : {
name : 'main'
}
})
```
If `excludeMdown=true` you won't be able to load markdown files dynamically
after the build.
## Writing your own plugins
Check [RequireJS documentation](http://requirejs.org/docs/plugins.html) for
a basic reference and use other plugins as reference. RequireJS official
plugins are a good source for learning.
Also be sure to check [RequireJS Wiki](https://github.com/jrburke/requirejs/wiki/Plugins).
## Author
[Miller Medeiros](http://blog.millermedeiros.com/)
## License
All the plugins are released under the MIT license.