Sencha 项目多语言和多主题的 build 配置
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 classic
、sencha 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
这个清单文件。但是 配置了 builds
和 locales
之后的输出结果中已经没有了 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 配置相关推荐
- 开源:Angularjs示例--Sonar中项目使用语言分布图
在博客中介绍google的Angularjs 客户端PM模式框架很久了,今天发布一个关于AngularJs使用是简单示例SonarLanguage(示例位于Github:https://github. ...
- 开源:Angularjs示例--Sonar中项目使用语言分布图(CoffeeScript版)
关于SonarLanguage是什么东东,这里就不在描述了,如果你对它感兴趣的话,请移步到上篇随笔开源:Angularjs示例--Sonar中项目使用语言分布图.这里是最近学习CoffeeScript ...
- 实训项目——多语言学习app 总结报告
文章目录 实训项目--多语言学习app 总结报告 1. app 介绍 1. 运行app 2. 界面效果 2. 开发过程 1. 开发环境 2. 项目结构 3. 欢迎界面 4. 用户与学习界面 5. 语言 ...
- [Phonegap+Sencha Touch] 移动开发71 Sencha项目开发、调试方法建议
原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50171151 一.开发时的调试 方法1:不开启任何服务器 因为Sencha项目在开发状 ...
- vscode安装使用(含安装包)、更改语言、更换主题和背景、设置模板、更改字体大小
目录 一 下载安装 二 更改语言 三 更换主题和背景 四 设置模板 五 更改字体大小 一 下载安装 VSCode中文网 - Visual Studio Code中文官网 VS Code编辑器中文网站 ...
- hexo博客matery主题的个性化配置
文章目录 一.matery主题的下载与安装 二.基本配置 1.根目录下的 `_config.yml` 1.1. title 1.2. deploy与theme 2.themes目录下的`_config ...
- Python 小白从零开始 PyQt5 项目实战(1)安装与环境配置
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始. 不跳过一个细节,不漏掉一行代码,不省略一个例图. ...
- vue项目没有router文件夹_Vue路由(vue-router)配置实战——动态路由,重定向,工程非根目录...
1. 前言 (1) 资料 (2) 需求 本文是在上篇<使用vue-i18n实现多语言>功能的引申.需要实现的功能如下: 多语言需要反映在url上,英文.简体中文.繁体中文页面需分别为/en ...
- NexT的主题设定与配置
本篇文章将介绍NexT的主题设定与配置 在Hexo 中有两份主要的配置文件,其名称都是_config.yml.其中,一份位于站点根目录下,主要包含 Hexo本身的配置:另一份位于主题目录下,这份配置由 ...
最新文章
- 小学六年级能用计算机器,小学六年级信息技术测试题
- 2017年06月07号课堂笔记
- QQ目录里哪个文件是记录系统消息的?
- java内存块_JVM上的并发和Java内存模型之同步块笔记
- mini2440使用jlink烧写superboot到norflash
- spring mvc教程_Spring MVC教程
- NodeMailer
- 用JAI实现对TIF(TIFF)格式图片的合并
- 公司新来了一个质量工程师,说团队要保证 0 error,0 warning
- JDK+SDK 环境变量记录
- GDAL源码剖析(四)之命令行程序说明二
- 花体字转换器微信小程序源码支持多种花样字体不同风格
- 20幻读是什么,幻读有什么问题
- 力扣刷题-题目以及答案
- poj java_POJ 3083 java实现
- 【XA.DAY.4】网络安全体系与模型
- 台式机没声音怎么样才能解决
- os.path.abspath() 和 os.path.realpath() 区别
- 产品经理笔试技巧:产品设计题
- 川崎机器人示教盒维修_川崎机器人维修
热门文章
- YOLOv4论文(中文版)
- php上传文件并存储到mysql数据库的方法
- Spring Data JDBC、引用和聚合
- opencv分别显示彩色图片各通道图片
- linux卸载带输入法,Ubuntu删除自带的输入法之后设置不见了
- BiliBili2020校招笔试题
- 原生JS实现各种运动之匀速运动
- 基于asyncio编写一个telegram爬虫机器人
- Bert:Pre-training of Deep Bidirectional Transformers forLanguage Understanding
- 2021-10-19 SAP 创建会计凭证 BTE替代利润中心