浏览器或服务器版本的模块

时间:2013-08-07 10:18:32

标签: dependencies requirejs shared amd

使用requirejs和javascript模块,我想在服务器和浏览器之间共享代码,有四种情况。

1 /仅适用于服务器的模块

define([], function() {
   if(typeof window != 'undefined') return null; // only for server
   //module code
})

2 /仅适用于浏览器的模块

define([], function() {
   if(typeof window == 'undefined') return null; // only for browser
   //module code
})

3 /模块共享

define([], function() {
   //module code
})

4 /模块与服务器/浏览器的不同代码

define(['require'], function(require) {
   if(typeof window == 'undefined') // server version
   {
      return require('nodejs module');
   }

   // browser version
})

我想要解决的更好的方法是包含浏览器的模块代码,现在我必须通过浏览器版本的整个代码。 Nodejs需要同步,它可以工作。但在浏览器中我必须使用类似

的东西
define(['require'], function(require) {
   if(typeof window == 'undefined') // server version
   {
      return require('nodejs_module');
   }

   require(['module_for_browser'], function(module_for_browser) {
      return module_for_browser;
   })
}

但我无法退货!

大多数库都有相同的代码并管理这个内部检查窗口,但有些不是。现在我想为服务器要求使用相同的eventemitter api('events')。EventEmitter和浏览器这个兼容的版本https://github.com/hij1nx/EventEmitter2

0 个答案:

没有答案