Javascript 跨公共JS/浏览器开发的最佳实践

Javascript 跨公共JS/浏览器开发的最佳实践,javascript,node.js,cross-platform,commonjs,Javascript,Node.js,Cross Platform,Commonjs,目前,我通过Google Closure编译器使用了一些定义,大致是IS_CJS和IS_BROWSER,只是生成了不同的文件(BROWSER.myproject.js,CJS.myproject.js,等等) 这是做事情的标准方式吗?如果没有,它是什么?它的优点是什么?我在所有项目中都使用了以下序言,用于同时由浏览器和服务器代码加载的库: if (define === undefined) { var define = function(f) { require.

目前,我通过Google Closure编译器使用了一些
定义
,大致是
IS_CJS
IS_BROWSER
,只是生成了不同的文件(
BROWSER.myproject.js
CJS.myproject.js
,等等)


这是做事情的标准方式吗?如果没有,它是什么?它的优点是什么?

我在所有项目中都使用了以下序言,用于同时由浏览器和服务器代码加载的库:

if (define === undefined) {
    var define = function(f) {
            require.paths.unshift('.');
            f(require, exports, module);
        };
}

define(function(require, exports, module) {
    ...
    // main library here
    ...
    // use require to import dependencies
    var v = require(something);
    ...
    // use exports to return library functions
    exports.<stuff> = { some stuff };
    ...
});
虽然冗长,但无论您的执行环境是什么,它都非常灵活,而且简单有效。

您是否尝试过以下方法:

这是我正在采取的方法,而且效果非常好。代码中没有样板文件,您可以在服务器端和客户端运行相同的模块

您可以使用它通过模板系统将用AMD或CommonJS编写的模块转换为AMD、CommonJS或UMD

(可选)uRequire将您的整个捆绑包构建为一个
combinedFile.js
,在使用rjs optimizer和引擎盖下的所有环境(nodejs、AMD或无模块浏览器