到目前为止,我们一直在使用默认的classic构建描述符进行开发,以构建用于 table 面的动态网页。

现在,我们需要在同一个应用程序上使用移动设备,但在 table 面或移动设备负载上不必具有相同的主页。

用户使用 table 面浏览器访问http://example.com页面。然后他看到了 table 面的 View 布局
用户使用移动浏览器访问http://example.com页面。然后,他会看到移动设备的 View 布局(可能是一个完全不同的 View 文件)

我们在文档内部发现此页面没有太多帮助:https://docs.sencha.com/extjs/6.0/core_concepts/tablet_support.html

实际上,当切换到Chrome模拟器(例如设置Apple iPad模拟器)时,当前在 table 面上完全可以正常运行的页面在控制台中出现以下错误:

extjs - 如何设置当前为桌面构建的Sencha ExtJS项目也适用于移动设备?-LMLPHP

我们需要一些正确设置它所必需的步骤。

最佳答案

在ExtJS 6中创建全新的应用程序时,需要访问sencha cmd并调用:“sencha生成应用程序NameApp ../folderApp”

然后,创建以下结构:Click here to see the structure

我不知道您的代码创建的结构,但是为了在台式机和移动设备上工作,它必须处于由sencha cmd生成的结构中。

在获得这种结构(生成一个新的应用程序是一种更好的做法)之后,您需要牢记“extjjs 6.0的严格模型”。 ExtJS允许MVC或MVVM体系结构。 MVC体系结构基本上由一个大型 Controller 控制,该 Controller 可以控制应用程序的所有组件。另一方面,MVVM体系结构为每个 View 都具有一个 Controller -在实例化 View 时实例化该 Controller ,在销毁 View 时销毁该 Controller 。在ExtJS中,尤其是在最新版本中,建议使用此体系结构。

现在,您必须将实际应用中完成的代码转移到新的应用程序和体系结构中。将所有 View 结构放入NameApp> classic> src> view。为每个 View 打开一个新文件夹。该文件夹应包含该 View 以及该 View 的 Controller 。例如,让我们创建一个 ListView :

NameApp>经典> src> View >列表> List.js

NameApp>经典> src> View >列表> ListController.js

等等...

现在,您可以按照与classic中相同的模型,在mobile> src> view文件夹上创建移动 View 和分开的 Controller ,但是您当然必须使用移动工具包中的组件。

到这里为止,您将使用相同的代码将单独的移动应用程序和经典应用程序分开。但是您可以通过扩展app文件夹中的泛型类来使用ExtJS 6的功能,以优化代码。例如,您可以为特定 View 创建通用 Controller ,该 Controller 将在经典和现代文件夹中进行扩展:

NameApp>应用程序> View >列表> ListControllerGeneric.js

Ext.define('NameApp.app.view.list.ListControllerGeneric', {
    extend: 'Ext.app.ViewController',
    //here you put code using in modern and classic both
});

NameApp>经典> src> View >列表> ListController.js
Ext.define('NameApp.app.view.list.ListController', {
    extend: 'NameApp.app.view.list.ListControllerGeneric',
    //here you put code using in classic only
});

NameApp>现代> src> View >列表> ListController.js
Ext.define('NameApp.app.view.list.ListController', {
    extend: 'NameApp.app.view.list.ListControllerGeneric',
    //here you put code using in modern only
});

避免崩溃的一件事很重要,就是即使您实际上没有在移动设备上使用它们,也要从经典文件夹创建所有 View 到现代文件夹。另外,在同时使用台式机和移动设备时,您需要使用sencha应用程序现代版来测试经典版和现代版,但是需要使用sencha应用程序构建版来进行构建(或使用sencha应用程序构建版来进行特定构建)。

我希望这个解释对您有用。
谢谢

关于extjs - 如何设置当前为桌面构建的Sencha ExtJS项目也适用于移动设备?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34219346/

10-12 00:30
查看更多