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