gpt4 book ai didi

javascript - 编写适用于客户端 javascript 和服务器端 NodeJs 模块的 javascript 代码

转载 作者:搜寻专家 更新时间:2023-11-01 00:13:12 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com