我如何在我的node.js-后端以及我的前端使用一个单独的js文件中的函数
How can I use a function in a separate js file in my node.js-Backend as well as in my frontend?
在我的Web应用程序中,我在一些js文件中有一些数学函数。为了能够在我的node .js-后端中需要它,我必须使用module.exports在上述文件中导出上述函数。
//Needed for Usage in the Back-end
module.exports = {
calculate: calculate
};
当我现在想在前端使用这个文件时,它仍然包含上面的代码片段,这不是致命的,但有点不方便。
有没有更好的方法来使用一个js文件在前面和后面没有重复的代码?
问候,Claas m .
检查module.exports
是否存在
if (typeof module !== 'undefined' && module.exports) {
module.exports = {
calculate: calculate
};
} else {
window.calculate = calculate;
}
你总是可以检查你是否在Node.js中,如果不是,只是使用不同的函数
if(typeof process !== 'undefined' && process.argv[0] === "node") {
// this is node
}
您可以使用external,它将取代浏览器端节点的require
。
在这种情况下,我的首选是Browserify。
通过一些代码修改,你也可以尝试RequireJS.
在脚本文件末尾使用:
var Ducky = {
quak: function quak() {
return "Quack!";
}
};
if (exports !== undefined && exports !== null) {
exports.Ducky = Ducky;
} else if (module !== undefined && module !== null &&
module.exports !== undefined && module.exports !== null) {
module.exports.Ducky = Ducky;
} else if (window !== undefined && window !== null) {
window.Ducky = Ducky;
}
编辑:
您可能希望将这些内容打包到(function(){})()
表达式中,这样Ducky就不会是全局变量。
如果您的服务器端模块中没有任何require
,但只有module.exports
,那么您可以保留服务器端代码原样,并在加载任何此类模块之前将一小段代码放入客户端页面:
客户端JavaScript
window.module = {
set exports (obj) {
for(p in obj) {
obj.hasOwnProperty(p) && (window[p] = obj[p]);
}
}
};
这段代码将把任何在服务器端代码中定义的导出函数用module.exports
导出到window
。这样,你就不需要通过添加冗余的东西来修改所有的共享代码,而只需要为你的客户端添加一小段代码。
恰好
http://plnkr.co/edit/2fWlNN5w7R4Mcdv9VJ5T?p =
预览支持所有从IE9开始的现代浏览器:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set相关文章:
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- AdBlock阻止了我的一个页面
- AngularJS / Ionic Framework - 为什么我的一个模板值没有被替换
- 我的一个媒体查询没有响应
- 为什么我的一个顶级菜单项在 ONLY ie10 中未对齐
- AngularJS-can't读取变量's在我的一个方法中更改了值,它返回旧的valud
- 在我的一个网站上,一个文件显示为404,但文件在那里
- 我的一个变量是在initMap中设置的,但是当我在脚本中调用另一个函数时,同一个变量突然没有定义
- 我的一个JavaScript变量似乎在jQuery调用后被重置
- 条件语句只检查我的一个元素jQuery
- i .removeClass('active')如何为我的一个<元素与jQuery
- Jquery没有将我的一个单选按钮注册为选中
- AngularJS没有为我的一个页面加载
- 我的一个“{{link to}}”助手正在触发页面重新加载.我如何才能弄清楚是什么导致该页面完全重新加载