2016-01-08 33 views
11

Bu mümkün mü? Örneğin, myOpenGL bir paket ve openGL bir uygulama.ExtJS - Bir uygulamada sınıfları genişleterek bir paket oluşturma

Böyle bir şey yapmak istiyorum:

Ext.define('myOpenGL.view.Qxga',{ 
    extend: 'openGL.view.Uxga', 
    alias: 'widget.qxga', 
    itemId: 'qxga', 
    requires: [ 
      'openGL.view.Uxga', 
      'myOpenGL.view.QxgaController' 
    ], 
    controller: 'QxgaController' 
}); 

Bu dosyalar organize edilmesidir (açıklık için atlanmış çoğu dosyayı):

workspace/ 
    packages/ 
     myOpenGL/ 
      .sencha/ 
      src/ 
       view/ 
        qxga.js <--- the file defining QXGA 
      package.json 
      build.xml 
    openGL/ 
     .sencha/ 
      app/   <--- errors are being generated from here?    
     app/ 
      view/ 
       uxga.js <--- the file with the class I want to extend 
     app.json 
     build.xml 
     ... 

Şu anda çözülmemiş bağımlılık hataları olsun

[ERR] Failed to resolve dependency openGL.view.Uxga for file myOpenGL.view.Qxga 
[ERR] 
[ERR] BUILD FAILED 
[ERR] com.sencha.exceptions.ExNotFound: Unknown definition for dependency : openGL.view.Uxga 
[ERR] 
[ERR] Total time: 6 seconds 
[ERR] The following error occurred while executing this line: 
C:\Users\«username»\Applications\Sencha\Cmd\5.1.0.26\plugins\ext\current\plugin.xml:403: The following error occurred while executing this line: 
C:\Users\«username»\Documents\workspace\openGL\.sencha\app\build-impl.xml:378: The following error occurred while executing this line: 
C:\Users\«username»\Documents\workspace\openGL\.sencha\app\init-impl.xml:303: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : openGL.view.Uxga 
: ama (sadece The following error... sonra bakınız) pakete karşı uygulamasından çıkış üreten gibi görünüyor 0

Bazı sorular:

  • workspace\openGL\.sencha\app neden hata üretiyorsunuz? Oluşturmaya çalışıyorum packages\myOpenGL. Hataları iletmek için packages'dan beklerim.
  • openGL/app'u değiştiremiyorum, olduğu gibi kullanılmalı, ancak packages öğesinde herhangi bir şeyi değiştirebilir. Ayrıca openGL hareket edemiyorum ama packages içinde bir kısayol oluşturabilir veya openGL/overrides içinde geçersiz kılmalar oluşturabilirsiniz. Bunu bilmek, bunu işe alabilmek için bir yol var mı?

cevap

2

Genellikle, yüksek bir düzeyde, oluşturma işlemi şu şekildedir: paketler, sonra geçersiz kılmaları paketler, sonra uygulamalar, daha sonra uygulama geçersiz kılar. Paketiniz uygulama kodunda çekiyorsa, teoride, bağımlılıklar nedeniyle tüm uygulamayı çekerek, oluşturma sürecini karıştırıyor olabilir. Belki de bu yüzden uygulamadan kaynaklanan hatalar görüyorsunuz. Bir çözüm, ihtiyaç duyduğunuz uygulama kodunu paketinize kopyalamak, ad alanını değiştirmek, bağımlılıkları sınırlamak ve bu şekilde kullanmaktır.

Başka bir çözüm, uygulama sağlayıcısını, paket olarak ihtiyaç duyduğunuz işlevselliği yeniden düzenlemesini sağlamaktır! Yani, yeniden kullanılabilir olanı yeniden kullanılabilir hale getirin. Her iki durumda da, bu çok iş, ama kötü tasarım her zaman sizi ısırmak için geri geliyor!