1

使用 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;
   })
}

但我不能退货!

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

4

0 回答 0