经常有新手同学抱怨说sencha touch的项目加载速度为什么这么慢,经常要10秒左右的时间甚至更多,

  大家都知道,sencha touch开发的项目中引用了大量的js文件,当我们打开项目时,st的项目会一个一个地加载这些js文件,这样就造成了项目加载速度慢,如果是web远程访问,还会产生大量的http请求影响加载速度,增加服务器压力。

  所以,我们的项目需要使用sencha cmd来进行打包压缩,通过sencha cmd打包压缩的项目,其中引用到的js(app.json中配置的或是项目中通过models、views、controls、requires这些方式引用的js文件)全部合并压缩成一行js代码,并且会对代码中的变量也进行压缩,大幅度降低js文件的大小,加快js的加载速度,减少http请求,同时它也会对css文件进行压缩.

  不过要使用sencha cmd工具来打包压缩项目,前提是你的项目是通过sencha cmd工具创建出来的,因为cmd工具压缩项目的时候要读取项目生成时的一些配置文件,当然你也可以手动去配置这些文件,下面我们以sencha touch 入门系列 (三)sencha touch 项目创建中创建的项目为例,

我们具体讲解下如何打包压缩sencha touch的项目:

  1.首先打开指令窗口,将路径定位到你的项目中去,我的项目为MyFirst, 如图所示:

  

  接着,我们来执行sencha cmd的打包指令就可以了,

  sencha cmd有4个打包指令,所有的打包命令执行后,默认都会在项目的build文件夹下生成一个对应的文件夹,下面我们来看下指令

  1. sencha app build testing:

  通过指令名称的testing,大家应该猜到了,这个指令是用来打包测试的,这个指令会将所有的js文件压缩到app.js中去,但是并不做压缩处理,用来让开发者在执行代码压缩前调试代码用的,指令执行后,会在项目的build文件夹下生成一个testing文件夹,里面即生成的压缩测试项目

  2.sencha app build package:

  这个指令只对项目进行打包压缩处理,指令执行后,会将所有的js压缩合并并进行变量转换,所有的js文件的代码会被压缩成一行放置在app.js中,并在build文件夹下生成一个package文件夹,里面即生成的压缩项目。

  3.sencha app build production 或者 sencha app build:

  这两个指令的效果是一样的,跟package不同,生成的production主要是用来发布webapp的,除去压缩了js跟css文件外,它还配置了浏览器的离线缓存,只要你的项目访问了一次,以后每次访问都是读取的离线缓存中的内容

  4.sencha app build native:

  这个指令是用来将项目打包原生安装程序的,不过打包前需要配置下项目目录下的packager.json文件,如果配置错误或没有配置该文件,将不会生成安装程序,且不会报错,对于打包安装程序,一般就是sencha cmd方式的打包跟使用phonegap进行打包,后面我们会详细讲解,这里就不做多余的讲解了

以上就是打包的4种方式,这里给大家简单介绍下,希望大家知道自己的项目为什么会加载缓慢,后面我们还会有更加详细的教程

sencha touch 入门系列 扩展篇之sencha touch 项目打包压缩的更多相关文章

  1. sencha touch 入门系列 (五)sencha touch运行及代码解析(上)

    由于最近项目比较忙,加之还要转战原生开发,所以很久没更新了,今天我们接着上一次的内容往下讲: 首先我们打开index.html,这是我们整个程序的访问入口,也是整个项目的引入地: <!DOCTY ...

  2. sencha touch 入门系列 (二)sencha touch 开发准备

    这是本人第一次写博客教程,没什么经验,文笔也不是很好,写这教程一方面为了巩固自己这段时间的学习成果,一方面帮助大家解决问题,欢迎大家多提建议,指出问题.接下来我们就开始我们的sencha touch开 ...

  3. sencha touch 入门系列 (六)sencha touch运行及代码解析(下)

    接着上一讲,通过index.html里development.js对app.json里js资源文件的解析,app.js便被index.html引入了, app.js是整个项目的程序入口,在项目完成时使 ...

  4. sencha touch 入门系列 (四)sencha touch 新建项目目录结构解析

    通过上一章节的操作,我们的项目已经创建完成了, 大家通过http://127.0.0.1/MyFirst/应该都已经访问到了自己的应用, 接下来,我们展开我们项目,如图所示: 一.目录结构 1. .s ...

  5. sencha touch 入门系列 (三)sencha touch 项目创建

    通过上一章节的学习,我们的开发环境已经配置好了,接下来我们开始创建第一个sencha touch的项目,网络上很多sencha touch的教程都是手动搭建项目的, 不过手动搭建的项目缺少一些senc ...

  6. sencha touch 入门系列 (一)sencha touch 简介

    参考链接:http://mobile.51cto.com/others-278381.htm Sencha touch 是基于JavaScript编写的Ajax框架ExtJS,将现有的ExtJS整合J ...

  7. sencha touch 入门系列 (八)sencha touch类系统讲解(下)

    接着上一讲,我们通过一组代码来讲解一下st的类的一些属性: Ext.define("MyConfig",{ config:{ website:"http://127.0. ...

  8. sencha touch 入门系列 (九)sencha touch 视图组件简介

    对于一个普通用户来说,你的项目就是一组简单的视图集合,用户直接通过跟视图进行交互来操作你的应用,对于一个开发人员来说,视图是一个项目的入口,虽然大部分时候最有价值的部分是在model层和control ...

  9. sencha touch 入门系列 (七)sencha touch 类系统讲解(上)

    在mvc结构的基础上,sencha touch又使用了sencha公司为extjs4开发出来的类系统,在面向对象的编程语言中,类是对对象的定义,它描述了对象所包含的大量属性和方法. 跟面向对象语言类似 ...

随机推荐

  1. 官网下载到离线的Adobe Acrobat Reader DC

    Adobe 官方 FTP :ftp://ftp.adobe.com/ Adobe Acrobat Reader DC 下载目录:ftp://ftp.adobe.com/pub/adobe/reader ...

  2. EMS快递单号生成算法

    <?php function emsnum($ems, $num) { $fri = substr($ems, 2, 8); $head = substr($ems, 0, 2); $tail ...

  3. 如果你不知道这11款常见的Web应用程序框架 就说明你out了

    本文推荐了11款常见的Web应用程序框架,并列出了相关的学习资料和下载文档.如果对这些项目还不熟悉,就赶紧学起来吧~ Rails Rails是Ruby on Rails的简称,是一款开源的Web应用框 ...

  4. Hibernate 注解中CascadeType用法汇总

    这两天,参加一个课程设计,同时这个项目又作为一个模块镶嵌到其他项目中,考虑如此,应与原先的架构相同,因牵扯到留言和相互@功能,故数据库之间OneToOne,OneToMany,ManyToMany之风 ...

  5. Hibernate注解关系映射

    Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid)   1)一对一外键关联映射(单向) @O ...

  6. C++函数类型

    继续上一篇 #include <iostream> using namespace std; void swap1(int &v1, int &v2); typedef v ...

  7. struct iphdr中的__LITTLE_ENDIAN_BITFIELD和__BIG_ENDIAN_BITFIELD

    __LITTLE_ENDIAN_BITFIELD表示小端序,__BIG_ENDIAN_BITFIELD表示大端序. /usr/include/linux/ip.h中有一段代码定义了ip首部的结构体,例 ...

  8. CentOS系统安装后的基础优化

    在运维工作中,我们发现Linux系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行. 下面我就为大家简单讲解几点关于Linux系统安装后的基础优化操作. 注意:本次优化都是基 ...

  9. 【Java集合的详细研究6】Java 数组

    Java 语言中提供的数组是用来存储固定大小的同类型元素. 声明数组变量 double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法 创建 ...

  10. HTML input只能输入数字

    onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" onafterpaste="this.value=this.v ...