杰瑞科技汇

Sencha Touch教程如何快速上手开发?

Sencha Touch 教程:从零开始构建移动应用

第一部分:Sencha Touch 简介

1 什么是 Sencha Touch?

Sencha Touch教程如何快速上手开发?-图1
(图片来源网络,侵删)

Sencha Touch 是一个用于构建跨平台移动应用(iOS、Android、Windows Phone 等)的 JavaScript 框架,它使用 HTML5、CSS3 和 JavaScript 来创建具有原生应用体验和外观的 Web 应用。

  • 核心特点:
    • 基于 Web 技术: 使用 HTML5 构建 UI,CSS3 实现样式和动画,JavaScript 处理逻辑。
    • 原生体验: 提供了大量与原生应用相似的 UI 组件(如列表、表单、导航栏、选项卡等)和触摸手势支持。
    • 响应式设计: 自动适应不同尺寸的移动设备屏幕。
    • 数据绑定: Sencha Touch 引入了强大的数据绑定机制,使得数据与 UI 的同步变得非常简单。
    • MVC/MVVM 架构: 推荐使用 Model-View-Controller 或 Model-View-ViewModel 模式来组织代码,使应用结构清晰、易于维护。

2 为什么选择 Sencha Touch?

  • 快速开发: 丰富的组件库和强大的工具(如 Sencha Cmd)可以大大加速开发进程。
  • 跨平台一致性: 一套代码可以部署到多个移动平台,无需为每个平台单独开发。
  • 成熟稳定: Sencha Touch 是一个发展多年的框架,拥有广泛的社区支持和成熟的解决方案。

3 何时选择 Sencha Touch?

  • 需要构建一个功能复杂、交互丰富的移动 Web 应用。
  • 项目要求代码高度可维护和可扩展。
  • 团队熟悉或愿意学习 ExtJS/Sencha Touch 的开发模式。

第二部分:环境搭建

在开始之前,你需要准备以下工具:

Sencha Touch教程如何快速上手开发?-图2
(图片来源网络,侵删)
  1. 浏览器: 推荐使用 Google Chrome,因为它有强大的开发者工具,方便调试。
  2. 代码编辑器: Visual Studio CodeWebStorm 或 Sublime Text 等都是不错的选择。
  3. Sencha Cmd: 这是 Sencha 的命令行工具,用于创建项目、生成代码、编译应用等,它是 Sencha 开发的核心。

安装 Sencha Cmd:

  1. 访问 Sencha Cmd 官方下载页面
  2. 根据你的操作系统下载对应的安装包。
  3. 运行安装包,按照提示完成安装,安装后,你可以在命令行中输入 sencha 命令来验证是否安装成功。
sencha -version
# 应该会显示你安装的 Sencha Cmd 版本号

第三部分:创建你的第一个 Sencha Touch 应用

我们将使用 Sencha Cmd 来创建一个标准的项目结构。

步骤 1:创建新项目

打开你的终端或命令提示符,进入你希望存放项目的目录,然后运行以下命令:

Sencha Touch教程如何快速上手开发?-图3
(图片来源网络,侵删)
sencha -sdk /path/to/your/sencha-touch-2.4.2 generate app MyFirstApp /path/to/your/project/directory
  • -sdk /path/to/your/sencha-touch-2.4.2:指定 Sencha Touch SDK 的路径,你需要先从 Sencha Touch 下载页面 下载 SDK 并解压。
  • generate app:Sencha Cmd 的命令,用于生成一个新应用。
  • MyFirstApp:你的应用名称(同时也是命名空间)。
  • /path/to/your/project/directory:你希望创建项目的文件夹路径。

步骤 2:项目结构解析

创建成功后,你的项目目录会包含以下关键文件夹:

  • app/最重要的目录,包含你的应用源代码。
    • model/:存放数据模型。
    • store/:存放数据存储,是模型的数据集合。
    • view/:存放视图组件,如列表、面板等。
    • controller/:存放控制器,处理业务逻辑和事件。
    • Application.js:应用的入口文件。
  • index.html:应用的 HTML 入口点。
  • app.json:应用的配置文件,定义了应用的资源(如 CSS、JS、图片等)。
  • sencha.cfg:Sencha Cmd 的全局配置文件。
  • packages/:存放 Sencha Touch 框架的核心代码。

步骤 3:运行应用

进入你的项目目录,然后启动开发服务器:

cd /path/to/your/project/directory
sencha app watch

sencha app watch 命令会启动一个开发服务器,并监视文件变化,自动重新编译资源。

打开浏览器,访问 http://localhost:1841/(端口号可能会变,命令行会提示你),你应该能看到一个默认的 Sencha Touch 欢迎界面。


第四部分:核心概念详解

1 架构:MVC/MVVM

Sencha Touch 推荐使用架构模式来组织代码,最常见的是 MVC 和 MVVM。

  • Model (模型): 定义数据结构,一个 User 模型可以有 nameemailage 等字段。
  • Store (存储): 模型的集合,负责数据的加载、排序、过滤等操作,你可以把它想象成一个数据表。
  • View (视图): 用户界面,由各种组件(如 Ext.Container, Ext.List, Ext.Panel)组成,视图负责展示数据并响应用户交互。
  • Controller (控制器): 应用的“大脑”,它连接 Model 和 View,处理用户事件(如点击按钮),并调用相应的业务逻辑。
  • ViewModel (视图模型): 在 MVVM 模式中,ViewModel 是 View 和 Model 之间的桥梁,它封装了 View 所需的数据和逻辑,并通过数据绑定与 View 自动同步。

2 组件系统

Sencha Touch 应用是由组件树构建的,所有 UI 元素都是 Ext.Component 或其子类的实例。

  • 容器: 可以包含其他组件的组件,如 Ext.Container, Ext.Panel, Ext.NavigationView
  • 布局: 定义容器内部子组件的排列方式,常用布局有:
    • fit:子组件填满整个容器。
    • vbox:垂直排列子组件。
    • hbox:水平排列子组件。
    • card:子组件像卡片一样堆叠,一次只显示一个(常用于导航)。

第五部分:实战演练 - 构建一个简单的任务管理 App

我们将创建一个包含任务列表和添加任务功能的应用。

步骤 1:定义数据模型

app/model/ 目录下,创建一个 Task.js 文件:

// app/model/Task.js
Ext.define 'MyFirstApp.model.Task',
    extend: 'Ext.data.Model'
    config:
        fields: [
            { name: 'id', type: 'int' }
            { name: 'taskName', type: 'string' }
            { name: 'completed', type: 'boolean', defaultValue: false }
        ]

步骤 2:创建数据存储

app/store/ 目录下,创建一个 Tasks.js 文件,用于存储我们的任务数据:

// app/store/Tasks.js
Ext.define 'MyFirstApp.store.Tasks',
    extend: 'Ext.data.Store'
    config:
        model: 'MyFirstApp.model.Task'
        data: [
            { taskName: '学习 Sencha Touch' }
            { taskName: '构建一个 App' }
        ]
        proxy:
            type: 'memory' // 使用内存代理,数据只在当前会话中有效

步骤 3:构建主视图

我们将创建一个主视图,它包含一个任务列表。

  • 列表组件 (Ext.List):非常适合展示数据集合,它会自动与 Store 绑定。

app/view/ 目录下,创建一个 Main.js 文件:

// app/view/Main.js
Ext.define 'MyFirstApp.view.Main',
    extend: 'Ext.Container'
    config:
        title: '任务列表'
        layout: 'fit'
        items: [
            xtype: 'list'
            title: '我的任务'
            itemTpl: '<div class="{completed:task-completed}">{taskName}</div>'
            store: 'Tasks'
            onItemDisclosure: true # 显示一个箭头,方便以后添加点击事件
        ]
  • xtype: 'list':使用 Ext.List 组件。
  • itemTpl:列表项的 HTML 模板,这里我们简单显示任务名。
  • store: 'Tasks':将列表与 Tasks 存储绑定,Sencha 会自动将存储的数据渲染到列表中。
  • onItemDisclosure: true:在列表项右侧显示一个箭头。

步骤 4:创建应用主界面

现在我们需要一个容器来放置我们的主视图,并创建一个导航栏。Ext.TabPanel 是一个很好的选择。

打开 app/view/Main.js,修改它,让它继承自 Ext.TabPanel

// app/view/Main.js
Ext.define 'MyFirstApp.view.Main',
    extend: 'Ext.TabPanel' // 改为继承 TabPanel
    config:
        tabBarPosition: 'bottom' # 底部选项卡
        items: [
            # 第一个选项卡:任务列表
            title: '任务'
            iconCls: 'home'
            items: [
                xtype: 'list' # 这里的列表将作为第一个选项卡的内容
                title: '我的任务'
                itemTpl: '<div class="{completed:task-completed}">{taskName}</div>'
                store: 'Tasks'
                onItemDisclosure: true
            ]
        ]
  • iconCls:指定一个图标,Sencha Touch 提供了一套内置图标。

步骤 5:配置应用入口

打开 app/Application.js,确保主视图被正确加载:

// app/Application.js
Ext.define 'MyFirstApp.Application',
    extend: 'Ext.app.Application'
    name: 'MyFirstApp'
    views: [
        'Main' # 告诉应用加载 Main 视图
    ]
    onLaunch: function() {
        // 启动时显示主视图
        Ext.Viewport.add(Ext.create('MyFirstApp.view.Main'));
    }
  • views: ['Main']:在 requires 数组中声明视图,确保它们被正确加载。
  • onLaunch:当应用启动时,将主视图添加到 Ext.Viewport(一个全屏的容器)中。

步骤 6:添加样式

为了让完成的任务有不同的样式,我们添加一点 CSS,打开 app/resources/css/app.css,添加:

/* app/resources/css/app.css */
.task-completed {
    text-decoration: line-through;
    color: #999;
}

步骤 7:运行并查看结果

确保你的 sencha app watch 正在运行,然后刷新浏览器,你应该能看到一个底部有“任务”选项卡的界面,里面列出了我们之前在 Store 中定义的两个任务。


第六部分:进阶主题

1 添加新功能

  • 添加新任务: 你可以创建一个表单视图,并通过控制器来处理表单提交,将新数据添加到 Tasks Store 中。
  • 标记任务完成: 监听列表的 itemtap 事件,然后更新对应任务的 completed 字段,由于数据绑定,UI 会自动更新。
  • 删除任务: 可以在列表项上添加一个删除按钮,或者通过滑动操作来删除。

2 使用 Sencha Cmd 构建生产版本

当你完成开发后,需要将应用编译成优化过的、适合生产环境的版本:

sencha app build production

编译后的文件会生成在 build/production/MyFirstApp/ 目录下,你可以将这个目录下的所有文件部署到你的 Web 服务器上。

3 学习资源

  • 官方文档: Sencha Touch API Documentation 是最权威的参考资料。
  • Sencha Examples: Sencha Touch Examples 提供了大量可交互的示例代码,是学习组件用法的最佳途径。
  • Sencha Fiddle: Sencha Fiddle 是一个在线的 Sencha Touch/ExtJS 代码编辑器和沙盒,你可以用它来快速创建和分享代码片段。

第七部分:Sencha Touch 的现状与未来

重要提示: Sencha Touch 已经于 2025年 5月 停止维护和销售,这意味着它不会再有新的功能更新、安全补丁或官方支持。

对于新项目,你应该考虑以下替代方案:

  1. 原生开发: 使用 Swift (iOS) 和 Kotlin (Android) 开发性能最好、体验最原生的应用。
  2. 跨平台框架:
    • React Native:使用 JavaScript 和 React 构建原生 UI。
    • Flutter:使用 Dart 语言和 Skia 渲染引擎,提供高性能和高保真度的 UI。
    • Ionic/Angular:使用 Web 技术(HTML, CSS, JS)构建,然后封装在原生容器中。

Sencha Touch 是一个功能强大且设计优秀的移动 Web 开发框架,它深刻地影响了后来的前端框架(如 Vue.js、React 的响应式设计理念),虽然它已经停止维护,但学习其 MVC/MVVM 架构、组件化思想、数据绑定和布局系统 对于理解现代前端开发仍然非常有价值,如果你需要维护一个基于 Sencha Touch 的旧项目,这份教程将是一个很好的起点,对于新项目,请考虑使用目前更活跃和受支持的框架。

分享:
扫描分享到社交APP
上一篇
下一篇