[ExtJS5学习笔记]第三节 sencha cmd学习笔记 生成应用程序构建的内部细节

简介:

本文作者:sushengmiyan
-------------------------------------------------------------资源链接-----------------------------------------------------------------------
翻译来源  Sencha Cmd官方网站: http://docs.sencha.com/extjs/5.0.0/cmd/advanced_cmd/cmd_build.html

------------------------------------------------------------------------------------------------------------------------------------------------


       Sencha cmd提供的构造脚本是将足见绑定在一起并且是使许多低级命令(像编译)变得自动化,很少有出现适合一个工具满足所有需求的这样的解决方案,所以构造脚本提供了很多可以进行选择的选项让你去配置和客户化的定制这些行为,这个指引将要解释在构造脚本后面的规则以及你可能需要去修改来适应你需求的做法。

      阅读本文需要你阅读之前两章的内容

      1.introduction to sencha cmd

      2.using sencha cmd


工作空间介绍

-----------------------

本质上来讲,sencha app build 命令执行了基本的校验并且调用 apache ant  去构造,构造的脚本可以在”build.xml“文件中查看,该文件就在应用程序的根文件夹下。


特别的,它会调用脚本中的”build“目标,这意味着全部的过程都可以被检测扩展并且可以修改。

因为sencha app build 简单的调用了ant中”build.xml“中的”build“目标,你可以直接操作ant来达到相同的效果。这对于使用Eclipse或者netbeans的用户来说是很有帮助的

同样的,对于了解ant的来说,集成服务也是可持续的。

生成的”build.xml“ 是最小的一个ant脚本,可以使用ant的import功能来导入”.sencha/app/build-impl.xml“类似的文件任务。由于"build.xml"后期是可能会被修改的,但是”.sencha/app//*-impl.xml“文件是不会被修改的,这些文件会被sencha app upgrade程序给更新替换掉,除非必须否则不要修改这些文件。然而这些文件时非常优秀的,只是修改需要特别留意。


构造目标

---------------

下面的目标定义了应用程序构造的产生到结束的整个过程,除了init方法,其他目标都有一个属性可以设置为从1开始的数字。

init  refresh resolve js resources sass slice page native-package

除了init其他目标都可以通过前缀增加 skip.的方式来时目标无效。

比如 skip.slice = 1

如果只想更新一部分就可以只想这样的命令,比如只更新sass 可以执行 sencha ant sass就只会构造sass

配置你的工作空间

------------------------------

在sencha app build命令脚本后的许多方面是通过属性来控制的,这样说来,就有两种配置方式,1.通过配置属性来配置,2.通过构造属性来配置

  1.配置属性

  想要看当前配置的信息,可以执行如下命令  sencha diag show 

多数情况下,你可以通过前缀告诉他们从何而来。

  app. 参照 app,json 和.sencha/app/sencha.cfg

workspace. 参见workspace.json和.sencha/app/sencha.cfg

framework. 参考cmd/sencha.cfg在sencha cmd 安装目录中

cmd.可以再sencha cmd的安装目录看到

使用配置文件是使用比较广泛的也是被advanced sencha cmd推荐的。

  2.构造配置属性

  构造脚本定义了好多其他属性,这些属性都是以build.来结尾的

想看当前的值得话,在你应用程序目录下调用以下命令

sencha ant .props

设置这些build属性

许多方式可以配置你的构造,最简单的方方就是编辑他们的配置属性文件,决定要修改哪一个文件你最好知道这些文件什么时候被调用。

 ”local.properties“: 目前来说,是第一个载入的,这个文件的设计初衷就是给当前本地机器使用的。这个文件就不应该提交到版本控制中被别人使用,这些设置比其他任何文件优先级都高,

2.”.senche/app/${build.enviroment}.properties“--根基是build.enviroment属性文件,下方的一个会被载入,设置这些文件的属性可以让你从开始构建的时候获取不同的数值

    ”.sencha/app/native.properties“

     ".sencha/app/package.properties"

     ".sencha/app/production.properties"

     ".sencha/app/testing.properties"

3.".sencha/app/build.properties"

这些属性石在后期加载的,比build-enviroment-specific属性加载的晚一些的,这些属性是被所有的环境变量使用的,这些文件 是被设计为客户化定制使用的。

4.“sencha/app/defaults.properties” 这些属性最后被加载这些文件是被sencha cdm拥有的,并且当有新属性更高的时候这里会更新。这个文件服务了一些属性集,不应该被编辑的,可以修改其他的来达到你的目的。

自定义

----------

许多普遍的需求是通过构造需求的,但是了解所有的方式是不可能的。当配置选项的时候不能达到目的的时候下一个自定义的设置就可以实现了通过“build.xml”文件ant脚本来实现。

另外,对于import命令来说,build.xml包含了一些不同的扩展点,这些都是在可以选择的所有ant 目标和后期命名的过程中的,当你使用-before或者-after时。最常见的前缀扩展点如下:

init(-befor-init  -after-init)

refresh(-before-refresh  -after-refresh)

resolve(-before-resolve -after-resolve) 

js(-before-js  -after-js)

resources(-beifore-resources  -after-resources)

sass(-before-sass -after-sass)

slice(-befor-slice  -after-slice)

page(-befor-page -after-page)

native-package(-native-packege  -after-packege)

为了执行增加的before after处理步骤,给build.xml文件增加一个属性 这些目标可以在你的 ant执行的时候被调用

<target name="-after-page">
    <tstamp>
        <format property="THISYEAR" pattern="yyyy"/>
    </tstamp>

    <!--
    The build.classes.file property holds the full path to the "all-classes.js"
    file so we use that variable rather than hard-code the name.
    -->
    <move file="${build.classes.file}" tofile="${build.classes.file}.tmp"/>

    <concat destfile="${build.classes.file}">
        <header filtering="no" trimleading="yes">
/*
 * Copyright (C) ${THISYEAR}. All Rights Reserved.
 * My Company Name
 */
        </header>
        <fileset file="${build.classes.file}.tmp"/>
    </concat>

    <delete file="${build.classes.file}.tmp" />
</target>



相关文章
|
8月前
|
JSON 小程序 算法
uniapp小程序封装常用工具函数
类似的工具函数还有很多,这里暂时不一一列举了,上面提到的银行卡校验,还可以使用阿里公开的一个校验接口cardNo=银行卡号码&cardBinCheck=true这个接口会返回对应的银行简称银行卡类型,如果想要显示对应的银行logo的话,可以联系我,由于JSON数据太大,没办法全部放在这里。
126 0
|
6月前
|
XML JavaScript 前端开发
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
65 0
|
7月前
|
JavaScript
关于 Cypress 同界面元素交互的讨论
关于 Cypress 同界面元素交互的讨论
28 0
|
XML 存储 测试技术
soapUI 再谈SoapUI接口测试--文件组织与接口“布局”管理
soapUI 再谈SoapUI接口测试--文件组织与接口“布局”管理
55 0
|
前端开发 JavaScript 开发者
封装库/工具库中重要概念之UI框架
UI(User Interface)框架是前端开发中十分重要的一部分,它提供了各种组件和样式,用于构建页面和用户界面。在前端开发中,封装库/工具库可以帮助我们更加高效地使用 UI 框架。
147 0
|
JavaScript 前端开发 API
ReactJS 101:构建可重用组件、管理状态和创建实际应用程序的初学者指南
ReactJS 101:构建可重用组件、管理状态和创建实际应用程序的初学者指南
122 0
|
JSON 小程序 前端开发
微信小程序--》组成结构 文件作用 宿主环境
⚓经过web前端开发的学习,相信大家对于前端开发有了一定深入的了解,今天我开设了微信小程序,主要想从移动端开发方向进一步发展,而对于我来说写移动端博文的第一站就是小程序开发,希望看到我文章的朋友能对你有所帮助。
158 0
 微信小程序--》组成结构 文件作用 宿主环境
|
测试技术 C# 图形学
Unity C#代码封装dll文件完美教程(Chinar-开发者必经之路)
Unity C#代码封装dll文件完美教程(Chinar-开发者必经之路) 将脚本封装为DLL库,本文提供全流程,中文翻译。 助力快速完成 Unity C#脚本文件封装为 DLL 库文件 DLL (Dynamic Link Library) —— 中文:动态链接库
5204 0
|
存储 缓存 前端开发
【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81156178 ...
1599 0
|
JavaScript Apache Android开发
ExtJS6的中sencha cmd中自动创建案例项目代码分析
在之前的博文中,我们按照sencha cmd的指点,在自己win7虚拟机上创建了一个案例项目,相当于创建了一个固定格式的文档目录结构,然后里面自动创建了一系列js代码。 然后我们将整个项目,copy到win7服务器上部署好的apache服务器上,运行一下,果然可以使用。
2355 0