在react-native

时间:2015-08-06 09:56:12

标签: javascript react-native amdefine

我有一些Web应用程序模块(我将其视为对象类),我想在react-native中重用它们。

然而 define 不起作用。我尝试了 amdefine 但无处可去。 我得到的错误是“define is undefined”。有什么想法吗?

一个例子:

THE CALLER(index.ios.js):

var React = require('react-native');
var ExampleClass = require('./app/ExampleClass');
....

THE DEFINITION:

define('ExampleClass', [
    // imports
    'ParentClass',
    'ExampleImport',
    'ExampleImport2',
], function(ParentClass, ExampleImport, ExampleImport2) {

    /**
     * @class ExampleClass
     */
    var ExampleClass = ParentClass.extend('ExampleClass');

    ExampleClass.prototype.init = function() {
        ParentClass.prototype.init.call(this);
        var oExampleImport = new ExampleImport();
        oExampleImport.doStuff();
    };


    ExampleClass.prototype.doSomething = function(oData, oStatus) {
       .....
       var oExampleImport2 = new ExampleImport2();
       oExampleImport2.doMoreStuff();
    };

    return ExampleClass;
});

1 个答案:

答案 0 :(得分:0)

经过一番调查后,我想出了一个解决方案(我仍然需要这样做:p):

  • 将共享模块隔离为通用节点模块

    'use scrict';
    
    let Module2 = require('../app/modules/Module2');
    
    let Module = {};
    
    Module.prototype.init = function() {
       let m2 = new Module2();
       m2.doSomething();
    };
    
    module.exports = Module;
    

    我当然可以使用class结构等来制作更多ES6

  • 使用 browserify webpack 等内容打包项目:

    这将允许Web应用程序能够使用共享模块(例如,因此它将此类代码理解为module.exports和ES6语法)。

    它也会像一个大包装。

  • 只有视图特定于目标平台(iOS,网络浏览器):

    每个视图类只需要require必要的子类。

欢迎评论。 :)