Build Profiles

多样化 build

当一个 Sencha 应用需要多样化,比如多个主题的时候,可以利用 Build Profiles 配置不同的构建参数。实现方式是在 app.json 中添加如下的 builds 键,如下:

"builds": {"classic": {"theme": "ext-theme-classic"},"crisp": {"theme": "ext-theme-crisp"},"neptune": {"theme": "ext-theme-neptune"},"neptune-touch": {"theme": "ext-theme-neptune-touch"}
}

上面的 builds 包含了4 种 构建配置,每种用了不同的主题。

利用类似 sencha app build classicsencha app build neptune 的命令即可 build 出不同主题的结果。

如果依次执行所有 builds(比如上面的 classic、crisp、neptune、neptune-touch),结果却只有 builds 中配置的最后一个。这是因为默认情况下,build 输出的文件名是 app.js, app.json, app.jsonp,所以后一次 build 会将前一次的结果覆盖掉。如下图:

(提示:app.json 是 manifest 清单文件)

不同的 build 输出到不同的目录下

理想的结果是每个 build profile 输出到不同的目录下。

我们可以配置 app.json,使最后 build 结果如下图:

如下修改 app.json

"bootstrap": {"base": "${app.dir}","manifest": "${build.id}.json", // 增加该配置"microloader": "bootstrap.js","css": "bootstrap.css"
},
.....
"output": {"base": "${workspace.build.dir}/${build.environment}/${app.name}","manifest": "${build.id}.json", // 增加该配置"framework": "${build.id}/framework.js", // 增加该配置(如果开启了split.mode会有framework.js)"appCache": {"enable": false},"js": {"path": "${build.id}/app.js", // 增加该配置"filter": "all" //all/minimum}
},

如上配置之后,不同的 build 会输出不同名字的 manifest(清单)文件,app.js 会输出到不同的目录下。

locales 多语言

app.json 中有一个 locales 配置键。如果要支持英文和简体中文,可以如下配置:

"locales": ["en","zh_CN"
]

当然,需要先 requires 引入多语言的包 locale

"requires": ["locale"
]

这样,执行 sencha app build [profile]的时候,会依次将 m 个 build profile 和 n 个 locale 交叉输出 m*n 个结果。比如上面的例子中,会生成 classic-en, classic-zh_CN, crisp-en, crisp-zh_CN, neptune-en, neptune-zh_CN, neptune-touch-en, neptune-touch-zh_CN 共 8 个结果。

打开 index.html 时加载不同的 profile 和 locale

浏览器访问 build 输出的 index.html,默认是加载 app.json 这个清单文件。但是 配置了 buildslocales 之后的输出结果中已经没有了 app.json 文件了,所以我们要改变 index.html 加载清单文件的逻辑。

修改项目下的 index.html (不是 build 后的)

<!DOCTYPE HTML>
<html manifest="">
<head><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta charset="UTF-8"><title>Demo</title><!-- 增加下面这段代码 --><script>var getSearchParam = function (name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");var r = window.location.search.substr(1).match(reg);if (r != null) return unescape(r[2]);return null;}window.Ext = window.Ext || {};Ext.beforeLoad = function (tags) {var locale = getSearchParam('locale') || 'zh_CN'; // 如果没有 locale 参数,则默认加载 zh_CNvar profile = getSearchParam('profile') || 'classic'; // 如果没有 profile 参数,则默认加载 classicExt.manifest = profile + "-" + locale;};</script><!-- The line below must be kept intact for Sencha Cmd to build your application --><script id="microloader" data-app="2cb3beca-1639-4cd6-b904-2ed6ef0a86bc" type="text/javascript" src="bootstrap.js"></script>
</head>
<body>
</body>
</html>

最后,通过 http://.../index.html?profile=classic&locale=en 这种地址就可以访问不同的 profile 和 locale 了。

Sencha 项目多语言和多主题的 build 配置相关推荐

  1. 开源:Angularjs示例--Sonar中项目使用语言分布图

    在博客中介绍google的Angularjs 客户端PM模式框架很久了,今天发布一个关于AngularJs使用是简单示例SonarLanguage(示例位于Github:https://github. ...

  2. 开源:Angularjs示例--Sonar中项目使用语言分布图(CoffeeScript版)

    关于SonarLanguage是什么东东,这里就不在描述了,如果你对它感兴趣的话,请移步到上篇随笔开源:Angularjs示例--Sonar中项目使用语言分布图.这里是最近学习CoffeeScript ...

  3. 实训项目——多语言学习app 总结报告

    文章目录 实训项目--多语言学习app 总结报告 1. app 介绍 1. 运行app 2. 界面效果 2. 开发过程 1. 开发环境 2. 项目结构 3. 欢迎界面 4. 用户与学习界面 5. 语言 ...

  4. [Phonegap+Sencha Touch] 移动开发71 Sencha项目开发、调试方法建议

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50171151 一.开发时的调试 方法1:不开启任何服务器 因为Sencha项目在开发状 ...

  5. vscode安装使用(含安装包)、更改语言、更换主题和背景、设置模板、更改字体大小

    目录 一 下载安装 二 更改语言 三  更换主题和背景 四 设置模板 五 更改字体大小 一 下载安装 VSCode中文网 - Visual Studio Code中文官网 VS Code编辑器中文网站 ...

  6. hexo博客matery主题的个性化配置

    文章目录 一.matery主题的下载与安装 二.基本配置 1.根目录下的 `_config.yml` 1.1. title 1.2. deploy与theme 2.themes目录下的`_config ...

  7. Python 小白从零开始 PyQt5 项目实战(1)安装与环境配置

    本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始. 不跳过一个细节,不漏掉一行代码,不省略一个例图. ...

  8. vue项目没有router文件夹_Vue路由(vue-router)配置实战——动态路由,重定向,工程非根目录...

    1. 前言 (1) 资料 (2) 需求 本文是在上篇<使用vue-i18n实现多语言>功能的引申.需要实现的功能如下: 多语言需要反映在url上,英文.简体中文.繁体中文页面需分别为/en ...

  9. NexT的主题设定与配置

    本篇文章将介绍NexT的主题设定与配置 在Hexo 中有两份主要的配置文件,其名称都是_config.yml.其中,一份位于站点根目录下,主要包含 Hexo本身的配置:另一份位于主题目录下,这份配置由 ...

最新文章

  1. 小学六年级能用计算机器,小学六年级信息技术测试题
  2. 2017年06月07号课堂笔记
  3. QQ目录里哪个文件是记录系统消息的?
  4. java内存块_JVM上的并发和Java内存模型之同步块笔记
  5. mini2440使用jlink烧写superboot到norflash
  6. spring mvc教程_Spring MVC教程
  7. NodeMailer
  8. 用JAI实现对TIF(TIFF)格式图片的合并
  9. 公司新来了一个质量工程师,说团队要保证 0 error,0 warning
  10. JDK+SDK 环境变量记录
  11. GDAL源码剖析(四)之命令行程序说明二
  12. 花体字转换器微信小程序源码支持多种花样字体不同风格
  13. 20幻读是什么,幻读有什么问题
  14. 力扣刷题-题目以及答案
  15. poj java_POJ 3083 java实现
  16. 【XA.DAY.4】网络安全体系与模型
  17. 台式机没声音怎么样才能解决
  18. os.path.abspath() 和 os.path.realpath() 区别
  19. 产品经理笔试技巧:产品设计题
  20. 川崎机器人示教盒维修_川崎机器人维修

热门文章

  1. YOLOv4论文(中文版)
  2. php上传文件并存储到mysql数据库的方法
  3. Spring Data JDBC、引用和聚合
  4. opencv分别显示彩色图片各通道图片
  5. linux卸载带输入法,Ubuntu删除自带的输入法之后设置不见了
  6. BiliBili2020校招笔试题
  7. 原生JS实现各种运动之匀速运动
  8. 基于asyncio编写一个telegram爬虫机器人
  9. Bert:Pre-training of Deep Bidirectional Transformers forLanguage Understanding
  10. 2021-10-19 SAP 创建会计凭证 BTE替代利润中心