我想在一天结束的时候,我正在寻找相当于旧的ExtJS“建立你自己的”。我知道这已经被sencha“皱眉”了,他们认为这不是创建应用程序的方式,但我的要求不适合这个。
基本上,我有一个非常大的企业应用程序。将加载到每个单独客户端的js将根据其用户配置文件,安全访问等而变化。这是J2EE应用程序,用户配置存储在数据库中。
此外,为防止加载大量未使用的javascript,每个单独配置所需的脚本会在用户请求“页面”时即时加载。由于各种原因,这对我们很有用,尤其是具有较低安全权限的用户不会将脚本加载到他们无法使用的浏览器中 - 服务器端可以管理哪些用户可以下载单个脚本,这可以防止不值得信任的用户检查脚本寻找漏洞。
我们在低带宽和/或移动连接的远程位置也有许多用户,因此ext-all.js初始加载的大小正在成为一个问题。
Sencha cmd对我们不起作用。它不适合我们的模型,因为它无法扫描所有依赖项的代码,我需要将ExtJS代码与应用程序代码分开。
所以最终我正在寻找一种方法,通过删除我们不使用的部分来合理地减少ext-all.js的大小。我还想构建自定义版本,服务器端代码可以根据用户配置文件和要求动态选择(即移动设备上的那些版本与sys管理员的全脂版本相比)。我很高兴必须维护某种依赖列表/脚本,然后我可以通过Sencha Cmd或yui-compressor来创建构建文件但是真的想知道最好的方法。必须有一个构建脚本,它提供了ext-all.js - 这是我可以改变和减少以满足我的需求的东西吗?
或者有一种方法可以配置Sencha Cmd为虚拟“app”生成一个单独的ext.js文件,其中我为我需要的extjs功能添加了框架代码,它将生成干净的ext.js文件,而不是包含虚拟应用程序代码?这样,如果我在生产代码中使用新的extjs功能,我可以在虚拟应用程序中添加对此的引用,并重新生成一个新的ext.js版本。
答案 0 :(得分:1)
我想我可能误解了你的问题,但这不是Sencha Command已经应该工作的原因吗?通过将requires
配置添加到类中,您可以说明它依赖于另一个类来操作。 Sencha Command了解这一点并将为您构建一个包含仅这些依赖项的文件。但是,如果您有部分构建(因为您似乎表明您将其作为安全措施),那么这将变得更加复杂。
Cmd允许您进行自定义构建,您可以在此处查看部分方法:
http://docs.sencha.com/cmd/5.x/advanced_cmd/cmd_compiler_reference.html
IMO这一切都非常复杂,很少有人需要,但至少它在那里。在您的情况下,在该页面的底部,您可以看到提及" if指令",听起来它可能满足您的要求,至少部分。你能否在if指令中包含某些代码来指示某种"访问级别"?
然而正如你所说,你可以手动维护所有依赖项 - 这会很痛苦,但我认为可以做到。由于Ext JS将所有源代码捆绑在单独的文件中,因此您可以通过这种方式生成自定义构建。您可以使用Cmd的能力生成各种类型的元数据来帮助实现这一目标:
http://docs.sencha.com/cmd/5.x/advanced_cmd/cmd_metadata.html
查看"导出文件名"允许您获取包含应用程序所依赖的类的文件列表的部分。您可以使用Cmd或其他版本进一步处理这些文件。
答案 1 :(得分:1)
您可以在此处使用三种基本方法:
如果不同用户基本上拥有自己的应用版本,则可以按照the Sencha CMD docs使用标记(如Colin Ramsay的回答中所述)。这将允许您生成应用程序的多个版本,每个版本都缩小并完成相应的子集。然后,您可以在用户登录时将其指向相应的版本。
如果只有偶尔使用的重要功能,并且您不想每次都下载它,您可以使用Sencha CMD Packages创建捆绑的&缩小文件。然后可以使用Ext.Loader
动态下载这些内容。请注意,在这种情况下,您需要注意包所需的内容,因为默认情况下不包含它。
ext.js
文件,并依赖Ext.requires
功能动态加载自定义代码。这可以通过制作一个需要大多数常见UI小部件的小应用程序来增强。许多模块共有的数据。