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