Skip to content

ionic4+angular7搭建的app框架,你可以直接在这里进行你的开发,并且技术会持续更新

Notifications You must be signed in to change notification settings

mingmLiang/ionic4-base-app

Repository files navigation

ionic-base-app

该文档链接已放在有道云笔记

http://note.youdao.com/noteshare?id=047153a69ef0501a370e713d878a66e7

可点击跳转

该项目可以作为你的项目架构,进行你的项目开发。它拥有

  • rem的布局方式
  • 根据environments进行打包
  • 路径昵称(aliases)
  • http拦截器(异常返回的统一处理、全局loading)
  • 以及新建使用路由懒加载page(tabs切换方式、以及nav跳转方式)
  • 数字字典
  • 过滤器pipe
  • ionic的UI组件使用范例
  • ionic中Packaging Native 的使用(调取相机拍摄、获取版本号)
  • 使用响应式表单
  • 创建自定义组件库例子(自定义单选,应用于响应式表单的元素)
  • 以及打包发布安卓安装包。
  • 至于发布ios到app store,可能后续会用虚拟机搭建mac系统进行说明

该项目正在开发中,具体开发计划请查阅 任务计划.xlsx

  • 本项目采用ionic4+Angular7进项开发,使用了数据智汇中的微博的API。后续还会持续跟进官方发布,更新ionic和angular。

  • 目录

ionic-base-app/  
|– config/  
| | – webpack.config.js  webpack的配置文件
|– e2e  测试文件
|- node_modules  依赖包文件
|– platforms/  生成android或者ios安装包需要的资源---(cordova platform add android后会生成)
| |– android/  
| |– ios/ 
|– plugins/  插件文件夹,里面放置各种cordova安装的插件
| |– org.apache.cordova.console/  
| |– org.apache.cordova.device/  
|- resources android/ios 资源(更换图标和启动动画)
| |– android/  
| |– ios/  
|- src  ionic4.x中开发工作目录,页面、样式、脚本和图片都放在这个目录下
| |– app/  
| | |– core/  核心文件(http拦截器、全局加载动画等)
| |– assets/  静态资源文件夹
| |– environments/  环境变量
| |– shared/  共享的服务组件
| |– theme/  关于主题的文件
|– .gitignore  git忽略配置 
|– angular.json  angular配置文件
|– config.xml  打包成app的配置文件 
|– ionic.config.json  ionic配置文件
|– package.json  配置项目的元数据和管理项目所需要的依赖
|– tsconfig.json  TypeScript项目的根目录,指定用来编译这个项目的根文件和编译选项
|– tslint.json  :格式化和校验typescript
|– www/  ionic4.x中静态文件,ionic build --prod 生成的单页面静态资源文件
| |– css/  
| |– img/  
| |– js/  
|– index.html
  • master分支 为主分支
  • floor分支 该分支主要用于搭建项目的基础架构
  • R1.0.0 业务开发分支
  • 目录
  • 相关文件 ionic-reader-app\src\app\core\interceptor.module.ts
  • 目录
  • 相关文件

ionic-reader-app\src\environments

ionic-reader-app\angular.json

  • 如何使用

默认引用ionic-reader-app\src\environments\environment.ts

使用以下命令则引用environment.prod.ts

ionic build --prod
  • 相关文件

ionic-reader-app\config\webpack.config.js

ionic-reader-app\tsconfig.json

  • 使用方法

在.ts中,将原来的相对路径,可以替换为@...,例如

import { serverUrl, appKey } from '../../../environments/environment';

替换为
import { serverUrl, appKey } from '@env';

  • 添加位置

ionic-reader-app\src\environment

  • 如何使用

引入

import { serverUrl, appKey } from '@env';

使用

getType(): Observable < {} > {
  const url = `${serverUrl.portal}weibo/type`;
  return this.http.get(
    `${url}?appKey=${appKey}`
  );
}

该方法没有使用js,单纯使用scss就实现了rem布局。好处是当ionic的根的font-size改变的时候,只需要改变$vm_fontsize为该值的两倍即可。维护性高,不需要担心ionic的UI组件变形。

  • variable.scss (配置)
// 页面适配
// 根元素大小使用 vw 单位
$vm_fontsize: 32; // 为设计图宽度的时候,html的fontSize值.由于ionic4组件的1rem为16,为了让iphone7屏幕,font-size为16px,所以取2*16
$vm_design: 750; // 根据需要替换成设计稿的值

@function rem($px) {
  @return ($px / $vm_fontsize) * 1rem;
}
  • 在variables.scss添加
// 页面适配
@import "~variable.scss";
html {
  font-size: ($vm_fontsize / $vm_design) * 100vw; // 同时,通过Media Queries 限制根元素最大最小值
  @media screen and (max-width: 320px) {
    font-size: 14px; // 320*$vm_fontsize/$vm_design ~ 13.65
  }
  @media screen and (min-width: $vm_design+'px') {
    font-size: 32px; //$vm_fontsize
  }
}
  • 在组建中编写scss 引入variable.scss,当设计图中font-size值为20px的时候。
@import "~variable.scss";
.iconfont{
    font-size:rem(20);
}
  • 相关文件

ionic-reader-app\src\app\core\interceptor.module.ts

ionic-reader-app\src\shared\loading\loading.service.ts

封装了一个LoadingService类,达到全局loading只能显示一个的目的

ionic g page pages/tabs
ionic g page pages/user
ionic g page pages/collect

https://ionicacademy.com/ionic-routing-navigation/

  • 相关文件

ionic-reader-app\src\app\pages\tabs

  • 相关文件

ionic-reader-app\src\shared\constants\supporting-data.constants.ts

ionic-reader-app\src\shared\constants\constants.service.ts

ionic-reader-app\src\shared\shared.module.ts

  • 使用方法

在.page.ts中,引入并且注入ConstantService,就可以使用

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

import { ConstantService } from '@shared/constants/constants.service';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
  providers: [ConstantService]
})
export class HomePage  {
  TypeArr = this.constantService.getSupprotingData('TypeArr'); // 获取数据字典数据
  constructor(private constantService: ConstantService) {
  }
}

  • 相关文件

ionic-reader-app\src\shared\pipe

  • 使用方法

在module.ts中,引入SahredModule

import { SahredModule } from '@shared/shared.module';


@NgModule({
  imports: [
    SahredModule
  ]
})

在html中使用,

<ul class="title">
    <li *ngFor="let item of typeArrList">
      {{item|filterData:TypeArr}}
    </li>
  </ul>

ionic-team/ionicons#589

src\assets\custom-ion-icons\ios-back.svg

src\assets\custom-ion-icons\md-back.svg

  • 使用
      <ion-back-button [text]="'返回'" [icon]="'back'" defaultHref="tabs/home">
      </ion-back-button>
      
      <ion-icon name="newicon"></ion-icon>

引入

declare const require: any;
const _ = require('lodash');

使用

const eventCopy = _.clone(event);
  • 真机调试 1》 使用安卓手机,连接数据线。打开USB调试。 2》根目录下面执行以下代码
ionic cordova run android
  • 使用谷歌找bug 1》打开google chrome浏览器,输入
chrome://inspect/#devices
  • 打包安卓测试包
ionic cordova build android --prod
  • 打包正式包并发布

1》打包命令

ionic cordova build android --prod --release

2》生成签名文件 jdk方式(window)

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 

3》jarsigner签名

jarsigner -verbose -keystore my-release-key.keystore -signedjar signed.apk android-release-unsigned.apk shiyi

1》 开发工具 Visual Studio Code

2》MT管理器 可以查看打包后的代码 文件管理工具和APK逆向修改神器 (安卓)

3》XCode ios打包工具

4》Simulator ios模拟器

About

ionic4+angular7搭建的app框架,你可以直接在这里进行你的开发,并且技术会持续更新

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published