Browserify 和 lo-dash,做一些特别的事情。好的,但应该不受其他 vendor 库或 nodejs 模块的影响。我想编写可重用的代码。所以,...
我可以写一些 javascript 代码。另外,我可以编写 NodeJs 代码。好的:我可以为 NodeJs 编写一个模块,用于服务器端代码,但在某些时候我需要编写一个 NodeJs 代码来导出,例如,一个模块。
var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
但是,...这是一个 NodeJs 模块。如果我尝试将其包含在客户端页面中......
<script src="lib/myModule.js">
我会收到“ Uncaught ReferenceError :模块未定义”。为什么?也许吧,因为它是 NodeJs 代码,而不是 Javascript。好的,但是,...哪些是在客户端和服务器端与 NodeJs 共享相同代码的最佳实践。好的,我可以共享一个 javascript 文件,并在双方使用它。我如何编写一个模块,它与 javascript 代码一起工作,我也想在客户端使用它?
我正在寻找的是:
写一些javascript代码。 my_public_file.js:
console.log('I am a javascript snippet')
然后,我想编写一个使用相同代码的模块。 我的模块.js
var lib_public_code = require('some/public/path/my_public_file.js')
var MyModule = function () {
this.attribute = 666
}
module.exports = MyModule
而且,我还想编写一个使用相同代码的公共(public)网页 (index.html)
<script src="javascript/my_public_file.js">
最佳实践?我疯了吗?
最佳答案
要让它在客户端和服务器端都能工作,如果 module.exports
存在,只需导出它:
var MyModule = function () {
this.attribute = 666;
};
if (typeof module !== "undefined" && module.exports) {
module.exports = MyModule;
}
许多库都使用这种和类似的方式来使包能够在 CommonJS 和浏览器上使用(例如:jQuery)
关于javascript - 编写适用于客户端 javascript 和服务器端 NodeJs 模块的 javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685154/