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

标签 javascript node.js express

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/

相关文章:

java - RC4 实现之间的差异

javascript - req.body.content 给出 undefined - Express JS

javascript - 使用 CommonJS 进行 Rollup,使用 Treeshaking 进行导入和导出

javascript - 将多个文本区域保存到可下载的 .txt 文件中并保持格式

javascript - 等待组件在自定义 svelte 指令中准备就绪

javascript - Jquery UI 中可排序元素之间的不可排序元素

c - 将 c-library 功能公开给 Node

node.js - MongoDB准确地每2小时10分钟减速一次

javascript - JS - Express - Mongoose 在发送响应之前执行所有 Mongoose 的 promise

mysql - Express.js 没有添加到 mysql