Ionic3x笔记之目录分析、创建组件、页面跳转、Tab页面


ionic = Cordova + Angular + ionic CSS
Ionic 是完全基于谷歌的 Angular 框架,在 Angular 基础上面做了一些封装,
让我们可以更快 速和容易的开发移动的项目。Ionic 调用原生的功能是基于 Cordova,
Cordova 提供了使用 JavaScript 调用 Native 功能,ionic 自己也封装了一套漂亮的 CSS UI 库。

文档:https://ionicframework.com/docs
ionic安装
  1.需要安装 nodejs
  2.安装 npm install -g cordova ionic
  3.创建项目: ionic start myApp tabs
  4.cd 到刚才创建的项目
  5.ionic serve 运行项目

Ionic3.x 目录结构分析:
   hooks:编译 cordova 时自定义的脚本命令,方便整合到我们的编译系统和版本控制系统中
   node_modules :node 各类依赖包
   resources :android/ios 资源(更换图标和启动动画)
   src:开发工作目录,页面、样式、脚本和图片都放在这个目录下
   www:静态文件
   platforms:生成 android 或者 ios 安装包路径( platforms\android\build\outputs\apk:apk
   所在位置)执行 cordova platform add android 后会生成 plugins:插件文件夹,里面放置各种 cordova 安装的插件
   config.xml: 打包成 app 的配置文件
   package.json: 配置项目的元数据和管理项目所需要的依赖
   tsconfig.json: TypeScript 项目的根目录,指定用来编译这个项目的根文件和编译选项
   tslint.json:格式化和校验 typescript
   src 工作目录:
      app:应用根目录
      assets:资源目录(静态文件(图片,js 框架。。。)各
      pages:页面文件,放置编写的页面文件,包括:html,scss,ts。
      theme:主题文件,里面有一个 scss 文件,设置主题信息。

Ionic3.x src 下面文件分析:
   app.components.ts:根组件(每一个组件对应一个.ts,.html,.scss文件)
   app.module.ts:根模块,告诉inonic如何组装应用
   main.ts:入口文件


根模块解读:
   //根模块 告诉ionic如何组装应用

   //引入 angular 以及ionic的系统模块
   import { NgModule, ErrorHandler } from '@angular/core';
   import { BrowserModule } from '@angular/platform-browser';
   import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';

   //引入components模块
   import { ComponentsModule } from '../components/components.module';

   //引入根组件
   import { MyApp } from './app.component';

   //页面 自定义的组件
   import { AboutPage } from '../pages/about/about';
   import { ContactPage } from '../pages/contact/contact';
   import { HomePage } from '../pages/home/home';
   import { TabsPage } from '../pages/tabs/tabs';

   //ionic打包成app以后配置启动画面 以及导航条的服务  (不用管)
   import { StatusBar } from '@ionic-native/status-bar';
   import { SplashScreen } from '@ionic-native/splash-screen';

   @NgModule({
     declarations: [   /*申明组件*/
       MyApp,
       AboutPage,
       ContactPage,
       HomePage,
       TabsPage
     ],
     imports: [  /*引入的模块 依赖的模块*/
       BrowserModule,
       ComponentsModule,
       IonicModule.forRoot(MyApp)
     ],
     bootstrap: [IonicApp],  /*启动的模块*/
     entryComponents: [   /*配置不会在模板中使用的组件*/
       MyApp,
       AboutPage,
       ContactPage,
       HomePage,
       TabsPage
     ],
     providers: [   /*配置服务*/
       StatusBar,
       SplashScreen,
       {provide: ErrorHandler, useClass: IonicErrorHandler}
     ]
   })
   export class AppModule {}

创建组件:
   1、cd 到我们的项目目录
   2、通过 ionic g component 组件名称   来创建组件
   3、创建完成组件以后会在 src 目录下面多一个 components 的目录,
      这个目录里面有我 们用命令创建的所有的组件。
   4、如果我们要使用这些组件必须在 app.module.ts 里面注册我们的模块,注册完成后就可
      以在 pages 里面的其页面里面使用这些组件。如:

      //引入components模块
      import { ComponentsModule } from '../components/components.module';

   组件源码:

      import { Component } from '@angular/core';

      @Component({
        selector: 'actionsheet',//在其他页面可以通过这个名字来引用该组件
        templateUrl: 'actionsheet.html'
      })
      export class ActionsheetComponent {

        text: string;
        public list=[];

        constructor() {  /*初始化触发*/
          console.log('Hello ActionsheetComponent Component');
          this.text = 'Hello World';
          for(var i=0;i<15;i++){
            this.list.push('这是第'+i+'条数据');
          }
        }
      }

    5,在page中引用该组件:
     <ion-content padding>
         <actionsheet></actionsheet>
     </ion-content>

     注意要先在对应的components.module.ts中引入,如:
     import { ActionsheetComponent } from './actionsheet/actionsheet';


Ionic3.x 创建页面以及页面跳转
   1,ionic  g pages news  //创建一个news页
   2,app.module.ts 引入声明组件
   3,如果要跳转到这个页面,需要在源页面页面引入这个组件,跳转this.navCtrl.push(xxx);


Ionic3.x页面跳转
    可以通过this.navCtrl.push(页面)来跳转。
    如:home.html文件
    <button ion-button (click)="goNews()">跳转到新闻页面</button>

    home.ts文件:
    import { NewsPage } from '../news/news';//引入要跳转到的页面(要先在app.modules.ts中注册、申明)

    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })
    export class HomePage {
      constructor(public navCtrl: NavController) {
      }

      goNews(){
        // this.navCtrl.push(页面)
        this.navCtrl.push(NewsPage);
      }
    }


Ionic3.x Tabs页面
   1,重新创建一个项目
      ionic start ionicdemo02 tabs
      cd ionicdemo02
      ionic serve
   2,重新创建两个页面(组件)
      ionic g page news
      ionic g page newsinfo
   3,在 app.module.ts 引入组件,注册组件、申明组件

      //引入新闻组件
      import { NewsPage } from '../pages/news/news';
      import { NewsinfoPage } from '../pages/newsinfo/newsinfo';

      import { StatusBar } from '@ionic-native/status-bar';
      import { SplashScreen } from '@ionic-native/splash-screen';

      @NgModule({
        declarations: [
          MyApp,
          AboutPage,
          ContactPage,
          HomePage,
          TabsPage,
          NewsPage,   /*申明组件*/
          NewsinfoPage
        ],
        imports: [
          BrowserModule,
          // IonicModule.forRoot(MyApp)

          IonicModule.forRoot(MyApp,{
            tabsHideOnSubPages: 'true', //隐藏全部子页面 tabs
            backButtonText: '返回' /*配置返回按钮*/
          })
        ],
        bootstrap: [IonicApp],
        entryComponents: [
          MyApp,
          AboutPage,
          ContactPage,
          HomePage,
          TabsPage,
          NewsPage,   /*申明组件*/
          NewsinfoPage
        ],
        providers: [
          StatusBar,
          SplashScreen,
          {provide: ErrorHandler, useClass: IonicErrorHandler}
        ]
      })
      export class AppModule {}

   4.在 tabs.ts 页面引入组件,配置组件

      import { Component } from '@angular/core';

      import { AboutPage } from '../about/about';
      import { ContactPage } from '../contact/contact';
      import { HomePage } from '../home/home';

      //引入新闻组件
      import { NewsPage } from '../news/news';


      @Component({
        templateUrl: 'tabs.html'
      })
      export class TabsPage {

        tab1Root = HomePage;
        tab2Root = AboutPage;
        tab3Root = ContactPage;
        tab4Root = NewsPage; //申明

        constructor() {

        }
      }

      tabs.html文件:
      <ion-tabs>
        <ion-tab [root]="tab1Root" tabTitle="首页" tabIcon="home"></ion-tab>
        <ion-tab [root]="tab2Root" tabTitle="关于我们" tabIcon="information-circle"></ion-tab>
        <ion-tab [root]="tab3Root" tabTitle="联系我们" tabIcon="contacts"></ion-tab>
        <ion-tab [root]="tab4Root" tabTitle="新闻" tabIcon="apps"></ion-tab>
      </ion-tabs>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值