对于新入门的移动开发者而言,摆在面前的移动应用开发有三种口味

Native App: 本地应用程序(原生App)

Web App:网页应用程序(移动web)

Hybrid App:混合应用程序(混合App)

Hybrid App兼具了Native App良好用户体验的优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。目前已经有众多Hybrid App开发成功应用,比如美团、爱奇艺、微信等知名移动应用,都是采用Hybrid App开发模式,今天实训邦带你学习利用Ionic+angular如何快速开发混合应用App。

分享目录

概念介绍

开发环境及搭建

项目文件目录结构

技术模型及动态数据请求流程图

Ionic组件及storage本地缓存

一、 概念介绍

1.1 Ionic介绍

2013年第一个版本,目前已经发布到了4.0 Beta 也是发展比较快的一个

开发框架。Ionic以AngularJS和ApacheCordova为基础,使用Node.js进行模块管理,使用Html5、Css(SASS)和Javascript技术进行APP开发。

1.2 Node.js与npm简单介绍

Node.js(http://nodejs.cn/download/)是基于Chrome’sV8 Javascript engine 构建的一个Javascript runtime(Javascript运行时),特点是事件驱动、非阻塞等。

npm(https://www.npmjs.com/)是Node.js中的Javascript包管理。

1.3 相关资料

Ionic文档:https://ionicframework.com/docs/v3/

Ionic Github: https://github.com/ionic-team/ionic

Ionic Cli:https://github.com/ionic-team/ionic-cli

Ionic Icons: https://ionicframework.com/docs/v3/ionicons/

Ionic 开发博客: https://www.joshmorony.com/

二、 开发环境搭建

2.1 开发环境

2.1.1、Node.js不管是Window|Mac系统,都需要Node.js

2.1.2、代码编辑器,如VsCode、Sublime等

2.1.3、开发IOS需要Mac系统,安装Xcode即可,上架需开发者证书

2.1.4、 开发Android,推荐Android Studio

2.2 Node.js搭建

2.2.1、安装Node.js(Windows下安装)

2.2.2、下载地址:https://nodejs.org/en/download/

2.2.3、安装后命令行下执行:node --version出现版本号表示安装成功

2.3npm安装

2.3.1、执行:npminstall npm -g 命令

2.4 Cordova、Ionic 安装

2.4.1、资源包下载地址:http://ionicframework.com/docs/overview/#download

2.4.2、命令行下执行:npminstall -g cordova ionic 命令进行安装

2.4.3、 设置npm 淘宝镜像(GFW,导致很多插件下载失败) :npm install -g cnpm --registry=https://registry.npm.taobao.org 命令进行设置

2.4.4、创建应用实例:ionicstart 应用名称 初始类型, 有 blank、tabs、sidemenu3 种类型可选(例如:ionic start myApp tabs)

2.4.5、试运行看是否安装成功(需要进入到myApp目录):ionic serve(浏览器运行调试)

                  http://localhost:8100/tabs/tab1

2.4.6、帮助

· 指定版本安装: npm install -g ioniccordova@beta

· npm install -g ionic@beta

· 升级到最新版本命令: npm install --save-dev–save-exact ionic@latest

· cordova卸载命令:npm uninstall cordova -g

· ionic卸载命令: npm uninstall ionic -g

· 浏览器调试技巧:http://localhost:8100/?ionicplatform=android | ios

三、项目文件目录结构

myapp/

|- node_modules 依赖包文件 包括ionic框架本身

|– platforms/ 生成android或者ios安装包需要的资源—(cordova platform add android后会生成)

| |– android/

| |– ios/

|– plugins/ 插件文件夹,里面放置各种cordova安装的插件

| |– cordova-plugin-device/

| |– ionic-plugin-keyboard/

| |– cordova-plugin-ionic-webview/

| |– cordova-plugin-splashscreen/

| |– cordova-plugin-whitelist/

| |– android.json

| |– fetch.json

|- resources android/ios 资源(更换图标和启动动画)

| |– android/

| |– ios/

|- src (ionic4.x中开发工作目录,页面、样式、脚本和图片都放在这个目录下)

| |– app/

| | |– app.component.ts/ 表示前端的逻辑,可以理解为typeScript或者js逻辑控制层;

| | |– app.html/ 核心文件(http拦截器、全局加载动画等)

| | |– app.module.ts/ 应用的根组件,每创建一个页面都要在这里注册申明才可以使用

| | |– app.scss/ 用于声明在应用中全局使用的样式

| | |– main.ts/ 申明根模块的位置

| |– assets/ 静态资源文件夹

| |– pages/ 创建的页面组件都在此目录之下

| |– providers/ 共享的服务组件

| |– theme/ 关于主题的文件 全局样式定义

| |– mainfest.json/

| |– index.html App的主要入口,这个文件主要是用设置css样式和引入js脚本,程序的启动也是在这里进行的

| |– service-work.js

|– .gitignore git配置文件

|– config.xml 打包成app的配置文件,可以配置app的id,名称、描述起始页等

|– ionic.config.json ionic配置文件

|– package.json 配置项目的元数据和管理项目所需要的依赖

|– tsconfig.json TypeScript项目的根目录,指定用来编译这个项目的根文件和编译选项

|– tslint.json :格式化和校验typescript

|– www/ ionic4.x中静态文件,ionic build --prod 生成的单页面静态资源文件 编译文件夹

| |– assets/

| |– build/

| |– mainfest.json/

| |– index.html 引入资源的地方

| |– service-work.js

四、Ionic组件

4.1 Ionic生命周期

4.1.1 官方文档 (https://ionicframework.com/docs/v3/api/navigation/NavController/)

4.1.2 Ionic技术栈模型

4.1.3 Ionic动态登录流程图

4.2 tab控件

4.2.1 可分为,图标选项卡,顶部图标+文字选项卡,单文字。

<ion-tabs><ion-tab-barslot="bottom"><ion-tab-buttontab="tab1"><ion-iconname="flash"></ion-icon></ion-tab-button><ion-tab-buttontab="tab2"><ion-label>Tab Two</ion-label></ion-tab-button><ion-tab-buttontab="tab3"><ion-iconname="send"></ion-icon><ion-label>Tab Three</ion-label></ion-tab-button></ion-tab-bar></ion-tabs>

4.3 button按钮

<ion-button>Default</ion-button><ion-buttonhref="#">Anchorion</ion-button><ion-buttoncolor="primary">Primaryion</ion-button><ion-buttoncolor="secondary">Secondaryion</ion-button><ion-buttoncolor="tertiary">Tertiaryion</ion-button><ion-buttoncolor="success">Succession</ion-button><ion-buttoncolor="warning">Warningion</ion-button><ion-buttoncolor="danger">Dangerion</ion-button><ion-buttoncolor="light">Lightion</ion-button><ion-buttoncolor="medium">Mediumion</ion-button><ion-buttoncolor="dark">Darkion</ion-button><ion-buttonexpand="full">FullButtonion</ion-button><ion-buttonexpand="block">BlockButtonion</ion-button><ion-buttonshape="round">RoundButtonion</ion-button><ion-buttonexpand="full"fill="outline">Outline+ Fullion</ion-button><ion-buttonexpand="block"fill="outline">Outline+ Blockion</ion-button><ion-buttonshape="round"fill="outline">Outline+ Roundion</ion-button><ion-button><ion-iconslot="start"name="star"></ion-icon>Left Icon</ion-button><ion-button>Right Icon<ion-iconslot="end"name="star"></ion-icon></ion-button><ion-button><ion-iconslot="icon-only"name="star"></ion-icon></ion-button><ion-buttonsize="large">Largeion</ion-button><ion-button>Defaultion</ion-button><ion-buttonsize="small">Smallion</ion-button>

4.4 input按钮

<ion-input></ion-input><ion-inputvalue="默认值"></ion-input><ion-inputplaceholder="提示语"></ion-input><ion-inputclearInputvalue="可清空"></ion-input><ion-inputtype="number"value="数字类型"></ion-input><ion-inputvalue="禁用"disabled></ion-input><ion-inputvalue="只读"readonly></ion-input><ion-item><ion-label>Default Labelion</ion-label><ion-input></ion-input></ion-item><ion-item><ion-labelposition="floating">FloatingLabelion</ion-label><ion-input></ion-input></ion-item><ion-item><ion-labelposition="fixed">FixedLabelion</ion-label><ion-input></ion-input></ion-item><ion-item><ion-labelposition="stacked">StackedLabelion</ion-label><ion-input></ion-input></ion-item>

4.5 Loading组件

import{Component}from'@angular/core';import{LoadingController,AlertController}from'@ionic/angular';@Component({selector:'app-tab2',templateUrl:'tab2.page.html',styleUrls:['tab2.page.scss']})exportclassTab2Page{constructor(publicloadingController:LoadingController,publicalertController:AlertController) {}ionic3Loading(){letloading=this.loadingCtrl.create({content:"Pleasewait....",duration:1000,});loading.present(loading);}asyncpresentLoading() {constloading=awaitthis.loadingController.create({message:'Hellooo',duration:2000});returnawaitloading.present();}asyncpresentLoadingWithOptions() {constloading=awaitthis.loadingController.create({spinner:null,duration:5000,message:'Please wait...',translucent:true,cssClass:'custom-class custom-loading'});returnawaitloading.present();}}

4.6 Alert组件

import{Component}from'@angular/core';import{LoadingController,AlertController}from'@ionic/angular';@Component({selector:'app-tab2',templateUrl:'tab2.page.html',styleUrls:['tab2.page.scss']})exportclassTab2Page{constructor(publicloadingController:LoadingController,publicalertController:AlertController) {}ionic3Alert(){letalert=this.alertCtrl.create({title:'操作',message:'成功',buttons:['关闭']});alert.present();}asyncpresentAlert() {constalert=awaitthis.alertController.create({header:'Alert',subHeader:'Subtitle',message:'This is an alert message.',buttons:['OK']});awaitalert.present();}asyncpresentAlertMultipleButtons() {constalert=awaitthis.alertController.create({header:'Alert',subHeader:'Subtitle',message:'This is an alert message.',buttons:['Cancel','Open Modal','Delete']});awaitalert.present();}}

4.7 Toast控件

import{Component}from'@angular/core';import{LoadingController,ToastController,AlertController}from'@ionic/angular';@Component({selector:'app-tab2',templateUrl:'tab2.page.html',styleUrls:['tab2.page.scss']})exportclassTab2Page{constructor(publicloadingController:LoadingController,publicalertController:AlertController,publictoastController:ToastController) {}asyncpresentToast() {consttoast=awaitthis.toastController.create({message:'Your settings have been saved.',duration:2000});toast.present();}asyncpresentToastWithOptions() {consttoast=awaitthis.toastController.create({message:'Click to Close',showCloseButton:true,position:'top',closeButtonText:'Done'});toast.present();}}

4.8 Grid布局

<ion-content><divclass="floatMenu"><ion-grid><ion-row><ion-colcol-4text-center><div(tap)="gotoQuestion()"><ion-iconname="create"></ion-icon>提问</div></ion-col><ion-colcol-4text-center><div><spanclass="line-float-left">|</span><ion-iconname="albums"></ion-icon>回答</div></ion-col><ion-colcol-4text-center><div(tap)="gotoQuestion()"><spanclass="line-float-left">|</span><ion-iconname="share-alt"></ion-icon>分享</div></ion-col></ion-row></ion-grid></div></ion-content>

4.9 List控件

<ion-item-sliding><ion-item><ion-label>Item</ion-label></ion-item><ion-item-optionsside="end"><ion-item-option(click)="unread(item)">Unread</ion-item-option></ion-item-options></ion-item-sliding><ion-item-sliding><ion-item><ion-label>Item</ion-label></ion-item><ion-item-optionsside="end"><ion-item-option(click)="unread(item)">Unread</ion-item-option></ion-item-options></ion-item-sliding>

4.10 Navigation控件 路由导航

· ion-nav-pop 自动返回

· ion-nav-push 用于导航到指定的组件

· ion-nav-set-root 设置当前导航根源

· ion-nav 导航不绑定到一个特定的路由器

五、storage本地缓存

5.1 在app.module.ts中

5.2 在页面中的.ts中设置缓存内容

5.3 应用赋予GPS权限!

publicdoLogin(username,password): Observable<string> {returnthis.http.get(LOGIN_URL,{ params: {"username":username,"password":password}}).map(this.extractData).catch(this.handleError);}


到此本次分享就结束了,想学习更多移动开发技能,欢迎留言交流。

混合开发Ionic+angular快速开发App相关推荐

  1. 选择软件开发平台,“快速开发”是关键

    一.快速开发平台 传统代码级开发成本越来越高,软件的功能升级跟不上市场的变化,客户的满意度越来越低.造这方面的原因是多方面,最重要是人力成本大幅上升和企业对软件的要求越来越高,通用的软件产品已无法满足 ...

  2. 52abp框架asp.net core Angular快速开发实战视频教程

    课程标题 52abp框架asp.net core & Angular全栈开发实战视频课程 课程简介 从零开始学 52ABP企业开发框架,企业项目是如何开发和技术选型,代码如何管理,团队协同开发 ...

  3. 智能空调APP开发(一键快速开发)

    智能空调APP开发,智能空调APP一键快速开发.在我国高新科技水准不断提升,众多智能商品也发生在大家日常生活,给大家日常生活给予便捷,而智能家用电器也是司空见惯,但用户要想在日常生活中掌握智能家用电器 ...

  4. LeaRun快速开发平台,快速开发.net/java项目

    Learun软件快速开发平台是一款轻量化多语言可视化开发工具. 平台目前分为Java和.net(core)版本,内置有多套UI风格模板,核心功能基本相同,包括:向导式开发组件.BI可视化.拖拽式表单. ...

  5. python 开发版-MicroPython开发之物联网快速开发板

    Python的火热让其运行在MCU端的MicroPython也逐渐迎来了春天.MicroPython的出现让Python这种"胶水语言"成功引用到嵌入式领域,也使得Python控制 ...

  6. 织信Informat-低代码开发平台 JNPF快速开发平台可视化工具 3.3.3版本

    织信 织信为用户提供了两种不同方式来实现低代码编程扩展的功能: 自动化 针对不具备编程能力的普通用户,织信提供了可视化的自动化配置功能. 织信自动化是把脚本模块复杂的代码编程逻辑封装起来,并将织信平台 ...

  7. Android开发之简单快速对APP进行GIF动图生成

    前提: 1.在对APP进行GIF动图生成之前,需要配置ADB(Android Debug Bridge),具体百度,在这里就不做赘述了. 2.准备一个播放器,迅雷.暴风.QQ之类的.将adb命令录制的 ...

  8. php laravel 开发工具,Laravel 快速开发工具

    laravel 开发辅助工具 安装 composer require luffyzhao/laravel-tools 配置 添加服务提供商 将下面这行添加至 config/app.php 文件 pro ...

  9. 低代码开发-牛刀低代码和专业开发云 JNPF快速开发平台 最新版本 框架源码 大屏

    传统软件开发代码冗余复杂,很多开发思路也不适用于当下数字化转型.低代码采用模块化封装的方式,对封装好的代码模块进行拖拉拽来完成应用搭建. 开发商瞄准了企业转型的痛点,传统企业的经营模式和理念比较原始, ...

  10. 道一云七巧-低代码快速开发平台 JNPF快速开发平台 3.4 更新介绍说明

    道一云 道一云是业内领先的云计算公司,致力帮助政府和企业,在智能时代不断提升管理和营运水平,持续数字化创新,让工作更高效.道一云是中国新一代协同云产品领军企业.腾讯战略投资企业.腾讯生态核心合作伙伴. ...

最新文章

  1. linux terminal教程,Linux入门教程 - 如何记录和重放Linux终端会话
  2. 获取当前周一日期_Excel工作表中最全的日期、时间函数,效率办公必备!
  3. Red Hat Enterprise 5 server 上安装 memcached 的问题记录
  4. (带后台)苹果安卓APP下载页 app应用下载界面源码
  5. python求单链表的长度_709. 设计链表(Python)
  6. PyTorch 1.0 中文文档:torch.autograd
  7. httpclient+Jsoup总结
  8. 关于浏览器兼容的问题
  9. 2022年6月25日PMP考试通关宝典-4
  10. c语言 停车管理系统
  11. 腾讯地图路线规划 vue
  12. 百度地图 AK 申请 / 签名获取及使用方式
  13. 郭德纲家训--话糙理不糙
  14. 关于计算机的英语单词及例句,小学生必背英语单词及例句(四年级).doc
  15. 拜托,面试别再问我 TCC 分布式事务的原理了…
  16. ARP协议和NDP协议分析
  17. 500以内什么耳机好?盘点500元蓝牙耳机性价比之王
  18. 【10w字】超详细【百分百拿offer】的面试教程,集合5000多家软件测试公司面试题。
  19. 4438的代码分析一
  20. 300mm直径硅片湿洗槽出水口设计

热门文章

  1. 二级域名与不同的端口网站进行绑定
  2. 不确定性推理——主观贝叶斯方法matlab实现
  3. 如何理解虚拟DOM?
  4. 红外接收C语言实现 NEC 定时器
  5. python程序设计语言中的小于等于号_Python(matplotlib)小于或等于tex中的符号
  6. 20个常用教育心理学效应
  7. 美国成功企业竞争情报案例分析
  8. 逻辑删除和物理删除的区别
  9. Vue实现附件上传功能
  10. C语言简单编程之一元二次方程求解