如何让自己写的代码支持commonjs规范?

发布于 2022-09-03 00:55:21 字数 582 浏览 19 评论 0

图片描述

假如我有一个es.js 这个库一开始是个空对象,我让它支持commonjs规范,封装了一下。

然后我希望自己慢慢写插件 比如 es.Klass.js es.validate.js,

这些插件也想用commonjs规范封装,但是插件和插件之间有可能还有复用关系,应该怎么办呢?

就好比es.validate会用到es.Klass

然后我写代码的时候必须是
var es = require('es');
var Klass = require('es.Klass');
var Validate = require('es.Validate');
//上面三行代码该死的顺序还不能颠倒
new Validate();

我希望可以直接写成
var Validate = require('es.Validate');
new Validate();

请问如何实现代码的封装????

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故人爱我别走 2022-09-10 00:55:21

无语。你这插件明明用的AMD的规范,为什么标题要说是commonjs, - -!

借助requirejs,声明依赖关系就行了。如果两个模块引入顺序不同会造成不同的结果,那么一般来说是依赖关系造成的。

比如我要编写一个叫做demo.js的插件,demo1.js与demo2.js都是它的模块

// demo1.js 

define(function() {
    return {
    
        xxxx: 'hello'
    }
})
// demo2.js 依赖于demo1.js

define(function() {
    var d1 = require('./demo1.js');
    
    return {
        message: d1.xxxx + ' world!'
    }
})
// demo.js 依赖于demo2.js
// 声明依赖的另外一种写法
define(['./demo2.js'], function(d2) {
    return {
    
        getMessage: function() {
            return d2.message
        }
    }
})

也可以在代码中这样写

// commonjs
if(typeof module !== 'undefined' && module.exports) {
    module.exports = myPlugin;
}

// amd require
else if(typeof define !== 'undefined' && define.amd) {
    define('myPlugin', [], function() {
        return myPlugin;
    })
}

else {
    window.myPlugin = myPlugin
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文