I have a backbone + requirejs app.
I am getting this No Define call for backbone
in IE8
I have enabled enforceDefine for app support in IE8
Require Config file
define([], function(){
require.config({
enforceDefine : true,
shim: {
"underscore": {
deps: [],
exports: "_"
},
"backbone": {
deps: ["jquery", "underscore"],
exports: "Backbone"
},
...
},
baseUrl : 'scripts/',
paths: {
backbone : '../libs/backbone/backbone',
jquery : '../libs/jquery/dist/jquery',
underscore : '../libs/underscore/underscore'
}
});
});
In your html file:
<doctype!>
<html>
...
<!-- You can load config ahead of require -->
<script type="text/javascript">
require.config({
enforceDefine : true, // +1 for this in IE 8!!
shim: {
"underscore": {
deps: [],
exports: "_"
},
"backbone": {
deps: ["jquery", "underscore"],
exports: "Backbone"
},
...
},
baseUrl : 'scripts/',
paths: {
backbone : '../libs/backbone/backbone',
jquery : '../libs/jquery/dist/jquery',
underscore : '../libs/underscore/underscore'
}
});
</script>
<script data-main="entry-point.js" src="path/to/require.js"></script>
In entry-point.js
define([deps1, deps2], function(Dep1, Dep2){
...
});
Additionally, it is worthwhile to take a look at various ways to separate config from main