尝试在. uses
_requires
app.js
请注意,如果控制器需要一些视图,您可以在 的 require 部分中省略该视图app.js
,因为当 sencha 工具解析您的控制器时,它将被包含在内。
uses
在将文件添加到/requires
部分时尝试使用完整路径app.js
。也就是说,写MyApp.controller.pages.Home
orMyApp.store.users.List
但现在pages.Home
or users.List
。
您可以在 sencha 工具的 YUI 最小化阶段开始之前使用-before-build
Ant-after-build
目标来修改您的 app.js。
在我的情况下,我最终搜索app/controller
文件夹内的所有控制器并将它们的名称添加uses
到app.js
. 这已经足够了,因为我的控制器中需要其他需要的类。
为了能够找到 app.js 的使用部分,我使用了特殊注释
/*ant-generated-content-start*/ /*ant-generated-content-end*/
我的app.js
Ext.application({
name: 'MyApp',
appFolder: 'app',
controllers: [
"main.App"
],
uses: [
/*ant-generated-content-start*/ /*ant-generated-content-end*/
],
autoCreateViewport: true,
});
我的build.xml
<?xml version="1.0" encoding="utf-8"?>
<project name="MyApp" default=".help">
<import file="${basedir}/.sencha/app/build-impl.xml"/>
<target name="-before-build">
<echo message="Collecting all controllers in application class property ... "/>
<fileset id="app_controllers" dir="${app.dir}/app/controller" casesensitive="yes">
<include name="**/*.js"/>
</fileset>
<pathconvert pathsep="," property="app_controller_names" refid="app_controllers" targetos="unix">
<chainedmapper>
<globmapper from="${app.dir}/app/*" to="${ant.project.name}/*" casesensitive="no" handledirsep="yes"/>
<chainedmapper>
<regexpmapper from="^(.*)\.js$$" to='"\1"'/>
<filtermapper>
<replacestring from="/" to="."/>
<replacestring from="\" to="."/>
</filtermapper>
</chainedmapper>
</chainedmapper>
</pathconvert>
<echo message="Collected controllers: ${app_controller_names}"/>
<echo message="Injecting into app.js ..."/>
<replaceregexp file="${app.dir}/app/app.js"
match="/\*ant-generated-content-start\*/(.*)/\*ant-generated-content-end\*/"
replace="/*ant-generated-content-start*/ ${app_controller_names} /*ant-generated-content-end*/"
byline="true"
/>
</target>
<target name="-after-build">
<echo message="Reverting to original app.js ..."/>
<replaceregexp file="${app.dir}/app/app.js"
match="/\*ant-generated-content-start\*/(.*)/\*ant-generated-content-end\*/"
replace="/*ant-generated-content-start*/ /*ant-generated-content-end*/"
byline="true"
/>
</target>
</project>