classic
到目前为止,我们一直在使用默认的构建描述符进行开发,以构建用于桌面的动态网页。
现在,我们需要在同一个应用程序上使用移动设备,但在桌面或移动设备负载上不必具有相同的主页。
用户使用桌面浏览器访问http://example.com页面。然后,他将看到桌面的视图布局
。用户使用移动浏览器访问http://example.com页面。然后,他会看到移动设备的视图布局(可能是一个完全不同的视图文件)
我们在文档内部发现此页面没有太多帮助:https : //docs.sencha.com/extjs/6.0/core_concepts/tablet_support.html
实际上,当切换到Chrome模拟器(例如设置Apple iPad模拟器)时,当前在桌面上完全可以正常运行的页面在控制台中出现以下错误:
我们需要一些正确设置它所必需的步骤。
在ExtJS 6中创建全新的应用程序时,需要访问sencha cmd并调用:“ sencha生成应用程序NameApp ../folderApp”
然后,创建以下结构:单击此处查看结构
我不知道您的代码创建的结构,但是为了在台式机和移动设备上工作,它必须处于由sencha cmd生成的结构中。
在获得这种结构(生成一个新的应用程序是一种更好的做法)之后,您需要牢记“ extjjs 6.0的严格模型”。ExtJS允许MVC或MVVM架构。MVC体系结构基本上由一个大型控制器控制,该控制器可以控制应用程序的所有组件。另一方面,MVVM体系结构为每个视图都具有一个控制器-在实例化视图时实例化,在销毁视图时销毁。在ExtJS中,尤其是在最新版本中,建议使用此体系结构。
现在,您必须将实际应用中完成的代码转移到新的应用程序和体系结构中。将所有视图结构放入NameApp> classic> src> view。为每个视图打开一个新文件夹。该文件夹应包含该视图以及该视图的控制器。例如,让我们创建一个列表视图:
NameApp>经典> src>视图>列表> List.js
NameApp>经典> src>视图>列表> ListController.js
等等...
现在,您可以按照mobile经典>相同的模型,在mobile> src> view文件夹上创建移动视图和分开的控制器,但是您当然必须使用移动工具包中的组件。
直到这里,您都使用相同的代码将移动应用程序和经典应用程序分开。但是您可以通过扩展app文件夹中的泛型类来使用ExtJS 6的功能,以优化代码。例如,您可以为特定视图创建通用控制器,它将在经典和现代文件夹中扩展:
NameApp>应用程序>视图>列表> 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>视图>列表> 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>视图>列表> ListController.js
Ext.define('NameApp.app.view.list.ListController', {
extend: 'NameApp.app.view.list.ListControllerGeneric',
//here you put code using in modern only
});
避免崩溃的一件重要事情是将所有视图从经典文件夹创建到现代文件夹,即使您实际上并未在移动设备上使用它们也是如此。此外,在同时使用台式机和移动设备时,您需要使用sencha app watch modern来测试经典版和现代版,但是需要使用sencha app build来构建两者(或使用sencha app build来构建特定版本)。
我希望这个解释对您有用。谢谢
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句