编写和组织javascript插件的最佳实践是什么?

编写和组织javascript插件的最佳实践是什么?,javascript,node.js,plugins,organization,Javascript,Node.js,Plugins,Organization,因此,我有一个很好的代码块,它在许多不同的javascript文件中都是相同的,但由于路径更改或其他各种情况,我有时不得不更新它。现在,将其复制并粘贴到新文件中效果很好,但执行起来很烦人。有没有一种好方法可以用我的“插件”代码维护一个javascript文件,并让其他使用该插件的javascript文件可以访问它 我正在寻找一个好的nodejs解决方案和香草js解决方案。如果它们可以相互共享,那将是理想的,但无论如何都不需要。理想情况下,我希望在workspace/中托管我的工作区,并拥有一些文

因此,我有一个很好的代码块,它在许多不同的javascript文件中都是相同的,但由于路径更改或其他各种情况,我有时不得不更新它。现在,将其复制并粘贴到新文件中效果很好,但执行起来很烦人。有没有一种好方法可以用我的“插件”代码维护一个javascript文件,并让其他使用该插件的javascript文件可以访问它

我正在寻找一个好的nodejs解决方案和香草js解决方案。如果它们可以相互共享,那将是理想的,但无论如何都不需要。理想情况下,我希望在
workspace/
中托管我的工作区,并拥有一些文件夹,
workspace/front-end js/
workspace/back-end nodejs/
,能够在
workspace/plugins/
中运行插件代码,这样我就可以执行
MyPluginVar.Foo()之类的操作

我知道一些系统,比如节点的
var foo=require('bar')
和前端浏览器系列化版本,但确实不知道我的所有选项。编写和组织javascript插件的最佳方式是什么

--


编辑:我确实试图避免npm,但这可能是最好的选择。

您通常会将共享库和插件作为依赖项添加到项目的
package.json
文件中,并使用npm进行安装

,它们使用
模块。导出
对象和
要求
函数是目前事实上的标准

,它们使用
export
import
语句,是一种新兴的正式标准,但对它们的支持尚未普及。如果您的环境支持它们,那么它们是一个很好的选择

要在前端加载任何一种类型的模块,您需要使用诸如Webpack或Browserify之类的绑定器

较旧的javascript模块通常发布到全局范围(
窗口
),是前端代码的一个简单选项

如果愿意,还可以通过使用UMD(通用模块定义)包装器来支持多模块系统。以下是一个来自的示例,该示例在支持的情况下利用CommonJS,同时返回到全局浏览器:

(function (root, factory) {
    if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
        // CommonJS
        factory(exports, require('b'));
    } else {
        // Browser globals
        factory((root.commonJsStrictGlobal = {}), root.b);
    }
}(this, function (exports, b) {
    // b represents some dependency

    // attach properties to the exports object to define
    // the exported module properties.
    exports.action = function () {};
}));

这不是“插件”,而是“模块”。@Bergi感谢您的澄清+1。不过,我使用plugin这个词是为了更一般的意义。谢谢,但我正试图避免npm,因为我只想更新一个js文件,并让代码在所有其他文件中更新。基本上,我希望避免告诉依赖项进行显式更新,或者我也可以复制并粘贴新代码。例如,通过调用
var myplugin=require('../plugins/myplugin'),您可以从
workspace/back-end-js/index.js
workspace/plugins/myplugin.js
需要一个js文件