将Mootools迁移到prime或primish /使用JavaScript类的最佳方式

时间:2013-12-05 22:45:11

标签: javascript class mootools

我想将项目从mootools迁移到prime或primish。

我需要继承类,获取选项并从父母或祖父母那里获取方法,Mootools课程允许我做的所有事情。

我认为对我来说最好的解决方案是使用primish和wrapup来发送类。

目前我的想法是:

服务器:

var wrup = require("wrapup")();

wrup.require('prime', __dirname + '/primish/prime.js')
    .require('options', __dirname + '/primish/options.js')
    .require('emitter', __dirname + '/primish/emitter.js')
    .require('Element', __dirname + '/public/UI/Element.js')
    .require('otherClass', __dirname + '/public/UI/otherClass.js')
    .up(function(err, js){
        fs.writeFileSync(__dirname + '/public/main.js', js);
    });

app.get('/', function(req, res){

    res.sendfile('index.html');

});

的index.html:

<script type="text/javascript" src="public/js/main.js"></script>

var el = new Element({
    options:{
        tag: 'div'
    }
});

Element.js:

var Element = prime({
    options: {
        tag: 'span'
    },
    some: function(){
        return;
    }
});

但是我做错了,我认为这是我宣布课程的方式,但我不知道该怎么办。

现在我该如何使用它?

对于谁需要Mootools课程的所有功能,最佳选择是什么?

出于表现的原因,有些事情已从素数中移除。

然后我的最后一个问题是谁想要在客户端和服务器端使用类开始一个新项目,这是最好的解决方案,考虑到性能。

我认为最好的解决方案是使用纯粹的JS,如this,“方法2”,并根据需要更改原型以复制对象属性。

很抱歉这么多问题,我正在试图找出在JS中实现类的最佳解决方案。

你有什么看法?

抱歉,我忘了实现:options和构造函数,但这不是问题,如果我像这样在索引中发送类:

<script type="text/javascript" src="public/UI/Element.js"></script>
<script type="text/javascript" src="public/UI/otherClass.js"></script>

运行良好,但我使用自整经发送类并且无法正常工作。

1 个答案:

答案 0 :(得分:2)

Prime可能永远不会涵盖MooTools所做的所有事情。这是一种完全不同的方法,您只需从npm(或任何其他来源)加载所需的模块,并使用最适合您的目的。 Primish是来自Dimitar Christoff的主要分支,它实现了一些MooTools类逻辑(以及其他一些东西,请看一下自述文件:https://github.com/DimitarChristoff/primish/)。

如果MooTools涵盖了所有用例,为什么要从MooTools切换到Prime / Primish?

关于您的代码问题: 您需要设置构造函数(在MooTools中初始化):

var Element = prime({

    implement: [options],

    constructor: function(options) {
        this.setOptions(options);
    },

    options: {
        tag: 'span'
    },

    some: function(){
        return;
    }
});

然后你可以像这样实例化你的类:

var el = new Element({
    tag: 'div'
});