ionic2入门

最近公司准备使用angular4+ionic2开做移动端开发,因此我暂时放下了之前的vue,现在在学习ionic和angular,把自己总结的一些东西在此和大家分享一下

1、创建一个ionic的项目

1.1 安装环境

1) 安装node,地址为https://nodejs.org/en/ 下载后根据提示安装,这里主要是为了使用nodenpm包管理器

2) 安装android sdk到官网下载最新版本,地址为:https://developer.android.com/intl/zh-cn/sdk/index.html下载内容如:tools_r25.2.3-windows.zip,将其解压到硬盘上如:C:\ android-sdk-windows

 


 

配置环境变量 ANDROID_HOME C:\android-sdk-windows\

path             %ANDROID_HOME%\platform-tools;

path             %ANDROID_HOME%\tools;

验证android sdk是否成功,cmd中输入android,出现以下界面

 

继续输入adb,如果出现以下内容,则说明安装成功:


 

3) 安装jdk 到官网下载最新版本JDK,地址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html,下载完毕后,直接双击运行,按照安装向导指示安装即可。

4) 全局安装ioniccordova ,注意需要是新版本的

  npm install -g ionic cordova

5) 由于GFW,很多插件下载不下来,我们可以使用淘宝镜像来解决这个问题

npm install -g cnpm --registry=https://registry.npm.taobao.org

1.2 构建项目

ionic start MyIonicProject

· start 会告诉C L I创建一个新的应用程序。

· MyIonicProject 将是您的项目中的目录名称和应用程序名称。

Ionic有几个模板可用:

· tabs :一个简单的3选项卡布局

· sidemenu:侧面有可滑动菜单的布局

· blank一个单独的启动器

· super:启动项目超过14个可以使用的页面设计

· tutorial:一个引导启动项目

有多种形式可选,我们一般选择第一个tabs,是一个包含底部的tab栏切换的应用

2、分析项目的结构:


 

2.1项目根目录./

hooks:伴随Cordova的安装自动生成的文件夹,该文件夹有脚本可以定制Cordova命令。一般情况下,不对该文件夹中的文件进行更改。

tsconfig.json如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录。

 

config.xml:项目的配置文件,项目的包名、启动页的一些设置

ionic.config.json:打包运行的说明文件

node_modules:项目依赖的包

resources:应用的图标和应用的启动页。将icon.pngsplash.png两个文件放在该目录下,然后在项目路径下执行ionic resources 就会在ressources目录下生产AndroidiOS两个平台的iconsplash

$ ionic resources --icon

$ ionic resources splash

注:在运行ionic resources的时候

 

这个时候执行ionic cordova resources就可以了

Src文件夹:主要的工作目录,包含有我们写的未经过编译的代码

www文件夹:

 

当执行ionic serve创建web站点的时候,会根据src目录中的内容来生成www文件夹中的内容。

添加手机平台后,会有一个platforms目录,www下的文件会拷贝到该目录下面

2.2 ./src/目录

 

app文件夹:根组件的存放地址

assets文件夹:资源的存放地址,包括图片,字体图标

Pages:其他组件的存放地址

Theme:主题文件,可以在这里更改一些全局的样式

 

这些颜色都可以这样调用

 

declarations.d.ts:引入第三方js库的声明文件

Index.html 项目的入口文件

 

2.3 ./src/app/目录

 

2.3.1 main.ts

 

2.3.2 app.module.ts

app.module.ts 我们称为根模块,除非写超大型应用,一般情况只有唯一一个根模块,所有的模块都会注入到这个模块里,这就如同一个插线板

Angular2TypeScript组织代码的方式大致就像这个文件一样。

1.顶部使用import语句,导入模块或者组件需要使用的外部模块。
在模块中需要使用自己创建的组件或者其他服务、指令,也需要import

2.import语句之后,使用@NgModule()语句描述本模块的元数据。

² declarations声明属于本模块的组件(或者使指令和管道),每个组件必须在且仅在一个模块中声明。

² imports:引入本模块中用到的模块,该模块是处于import语句引入的模块中。

² providers:声明模块中使用的服务的提供者

² bootstrap:根模块中的引导组件,应用启动过程中,会创建这个数组中的组件并插入到index页面中,一般只有一个引导组件。

3.最后,使用export语句,创建模块的类并暴露出去。模块、组件只有暴露出去,其他的模块才能引用。

 

 

app.module.ts文件中我们设置一些默认样式,比如更改返回按钮默认的back文件,设置应用显示样式等等,具体的其他样式设置可以在ionic中搜索config

 

 

3、创建组件

3.1 创建一个页面

 ionic g page firstPage

 

3.2 组件详解

import语句导入需要的模块。

使用@Component()来描述本组件的元数据。

² selector:创建的组件的名字,就像HTML标签的名字一样当在一个页面里面遇到这个selector设置的标签时,就会初始化这个组件,渲染模板生成html显示到对应的标签里面,并应用样式。

² templateUrl: HTML模板,使用相对路径,./表示这个组件文件所在的当前目录

² providers: 在这个组件中调用了哪些服务需要在此声明。声明之后该服务的作用范围就是该组件以及该组件的孩子组件。在angular2中,服务的概念很宽泛,一般就是一些封装的(发送请求的)方法。

 最后,使用export创建组件的类并暴露出去。在类中,可以创建属性和方法。

3.3 页面导航

3.3.1 页面导航的介绍

Ionic 2的导航像一个简单的栈,我们使用push方法来导航到新页面,将其放在栈的顶部,并显示一个返回按钮。对于返回,我们使用pop方法将其从栈中移除。因为我们在构造函数中设置了this.navCtrl属性,我们可以调用this.navCtrl.push()方法,来导航到一个新的页面。我们还可以将一个object传递给将要导航过去的页面

页面导航使用之前需要先引入该组件

 

但是,如果是在根组件中需要使用导航页面,则不能使用这种方式进行引入,因为NavController导航控制器的任何组件都是根组件的子节点,因此它们不可用于注入到根组件中,需要使用viewChild来引入组件

 

如果页面中有<ion-navbar>并且该页面不是rootPage,那么将会自动显示一个后退按钮,hideBackButton可以用来隐藏后退按钮。这个后退按钮可以帮助我们返回上一个页面

如果没有使用NavBar,想要返回前一页的时候,可以把当前页面从栈中pop出去:

goBack() {

        this.navCtrl.pop();

    }

3.3.2 关于导航遇到的问题:

问题一:

解决页面跳转底部tabs导航栏一直存在的问题

步骤一:引入App

app是一个ionic的装饰器,它可以启动应用,是整个ionic应用的主入口

 

步骤二:声明初始化App对象

 

步骤三:调用getRootNav()方法,从根页面跳转页面

 

注:setRoot() push() 的差别:  使用setRoot()跳转的页面 是不允许返回的。没有返回按钮,而且也不能pop出去

问题二:

返回按钮返回到登录页不是首页

比如A页面跳到B页面(通过navCtrl.push(B)的方法),然后B页面再以同样的方法navCtrl.push(C))跳转到C页面,这个时候C页面上有一个ionic的返回按钮,那么该按钮会直接返回到A,而不是返回到B,这个时候需要在A跳转到B的时候这样写

 

然后在B跳转到C的时候这样写(这里的appCtrl如上也是需要引入App类)

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值