Skip to content

Commit

Permalink
Enhance seajs.require to support executing module. close seajs#944
Browse files Browse the repository at this point in the history
  • Loading branch information
lifesinger committed Sep 16, 2013
1 parent 35657fd commit 7d70d9a
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 12 deletions.
6 changes: 5 additions & 1 deletion dist/sea-debug.js
Original file line number Diff line number Diff line change
Expand Up @@ -854,7 +854,11 @@ data.fetchedList = fetchedList
data.cid = cid

seajs.require = function(id) {
return (cachedMods[Module.resolve(id)] || {}).exports
var mod = Module.get(Module.resolve(id))
if (mod.status < STATUS.EXECUTING) {
mod.exec()
}
return mod.exports
}


Expand Down
2 changes: 1 addition & 1 deletion dist/sea.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion src/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,10 @@ data.fetchedList = fetchedList
data.cid = cid

seajs.require = function(id) {
return (cachedMods[Module.resolve(id)] || {}).exports
var mod = Module.get(Module.resolve(id))
if (mod.status < STATUS.EXECUTING) {
mod.exec()
}
return mod.exports
}

3 changes: 3 additions & 0 deletions tests/specs/module/require-global/combo.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
define('combo-a', ['combo-b', 'combo-c'], { name: 'a' });
define('combo-b', [], { name: 'b' });
define('combo-c', [], { name: 'c' });
31 changes: 22 additions & 9 deletions tests/specs/module/require-global/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,32 @@ seajs.config({
})


define(function(require) {
define(function(_require) {

var test = require('../../../test')
var test = _require('../../../test')

require('a')
require('b')
require('biz/c')
_require('a')
_require('b')
_require('biz/c')

test.assert(seajs.require('a') === require('a'), 'a')
test.assert(seajs.require('b') === require('b'), 'b')
test.assert(seajs.require('biz/c') === require('biz/c'), 'c')
test.assert(seajs.require('a') === _require('a'), 'a')
test.assert(seajs.require('b') === _require('b'), 'b')
test.assert(seajs.require('biz/c') === _require('biz/c'), 'c')

test.next()

if (typeof require === 'function') {
require('./combo.js')
done()
} else {
seajs.request('./require-global/combo.js', done)
}

function done() {
test.assert(seajs.require('combo-a').name === 'a')
test.assert(seajs.require('combo-b').name === 'b')
test.assert(seajs.require('combo-c').name === 'c')
test.next()
}

})

0 comments on commit 7d70d9a

Please sign in to comment.