module.exports客户端

时间:2012-09-24 19:39:30

标签: javascript node.js browser module requirejs

我创建了一个节点模块,它本质上只是一些有用的JS,也可以在客户端使用。我知道require.js可以加载common.js组件,但我不一定要求使用我的模块客户端的每个人都需要require或common.js等。我也不想强迫他们删除文件底部的module.exports = ...。别人怎么解决这个问题?你刚创建2个版本,还是2个“编译”版本? module.exports到处工作吗?

3 个答案:

答案 0 :(得分:19)

这是underscore.js的作用:

if (typeof exports !== 'undefined') {
  if (typeof module !== 'undefined' && module.exports) {
    exports = module.exports = _;
  }
  exports._ = _;
} else {
  root['_'] = _;
}

答案 1 :(得分:5)

我发现这更简单:

<div class="container-fluid login-container">
    <div class="row">
        <form (ngSubmit)="login('da')">
            <div class="col-md-4">
                    <div class="login-text">
                        Login
                    </div>
                    <div class="form-signin">
                            <input type="text" class="form-control" placeholder="Email" required>
                            <input type="password" class="form-control" placeholder="Password" required>
                    </div>
            </div>
            <div class="col-md-4">
                <div class="login-go-div">
                    <input type="image" src="../../../assets/images/svg/login-go-initial.svg" class="login-go"
                         onmouseover="this.src='../../../assets/images/svg/login-go.svg'"
                         onmouseout="this.src='../../../assets/images/svg/login-go-initial.svg'"/>
                </div>
            </div>
        </form>
    </div>
</div>

此文件可以包含在浏览器和node.js中。

答案 2 :(得分:4)

这对我有用(CoffeeScript)。假设'Namespace'是您要在客户端window范围内声明的内容

(module ? {}).exports = @Namespace =
  my: 'cool'
  module: '!'

然后您可以在Node.js中使用require('namespace').my === 'cool'或在浏览器中使用Namespace.my === 'cool'。这转化为JS为

(typeof module !== "undefined" && module !== null ? module : {}).exports = this.Namespace = {
  my: 'cool',
  module: '!'
};