如何使JavaScript与客户端和服务器端兼容?

问题描述

| 我知道如何在NodeJS中制作模块(这很简单)。但是,如果我想做一些在服务器和客户端环境中都可以使用的东西,那能做到吗? 假设您要创建一个Model类型(\“ class \”)。假设您有一个名为
Lib.define()
的类创建函数。所以,你这样写:
Lib.Model = Lib.define({
    init: function() {
        // constructor...
    },save: function() {
        // saves the model.
    }
});
上面的代码将使Lib.Model成为代表可实例化类型的对象。但是,您将如何编写它使其也兼容NodeJS?如果尝试要求上述文件
require(\'Model.js\')
),则由于对
export
没有分配,它不会做任何事情。但是,如果我这样做了,那我应该只是在客户端环境中有一个无用的“ 3”对象吗? 除了要求可以简单地加载和解析JS并在全局工作以使上述代码全局变量
Lib
生成
Model
成员之外,还有其他方法可以做到这一点吗? 我现在正在研究vm,但不确定如何正确使用它。我确实有一个文件/类加载器,可以像Dojo一样解析路径并加载脚本。我是否应该在那里写一些在客户端上正常工作的逻辑(放置脚本标签),对于NodeJS,它只读取文件内容和“ 7”?     

解决方法

        JSHint只是检测是否有一个
exports
符号,如果有则添加它。他们的支票看起来像这样:
// Make JSHINT a Node module,if possible.
if (typeof exports == \'object\' && exports)
    exports.JSHINT = JSHINT;
那会检查
exports
是否是一个对象,然后检查它是否不是
null
(通过
&& exports
)。似乎是一种合理的方法,尽管它当然是特定于CommonJS模块系统(Node使用的系统)。