Ionic 4.7.0 发布了,Ionic 是一个高级的 HTML5
移动端应用框架,也是一个开发混合移动应用的前端框架。

Angular 8.2.0 正式发布了,改进内容如下:

1.Ionic是什么,它和Angular、Cordova有什么关系?

支持 Angular 8 

新版本增加了对 Angular 8 的支持,请按照以下步骤更新:

  1. 更新 @ionic/angular 和 @ionic/angular-toolkit 至最新版本
    $ npm install @ionic/angular@4.7.0
    $ npm install @ionic/angular-toolkit@2.0.0 -D
  1. 更新 @angular/core 和 @angular/cli
    $ npx ng update @angular/core @angular/cli
  1. 更新 @angular-devkit 依赖
    $ npm i @angular-devkit/architect@latest @angular-devkit/build-angular@latest @angular-devkit/core@latest @angular-devkit/schematics@latest

查看 Angular 8
更新指南 

Bug修复

  • core:在destroy上没有清除DebugElement.listeners(#31820)(46b160e)

  • 澳门新葡萄京官网首页,bazel:在bazel下将ngc的内存限制从2 GB增加到4
    GB(#31784)(5a8eb92)
  • 核心:允许在消毒剂中使用Z变换的CSS变换(#29264)(78e7fdd)
  • elements:处理falsy初始值(#31604)(7151eae),关闭angular
    / angular#30834
  • platform-b​​rowser:调试元素查询谓词与strictFunctionTypes不兼容(#30993)(10a1e19)

  • 使用正确的WTF数组迭代(#31208)(9204de9)
  • bazel:传递自定义bazel编译器主机而不是重写一个(#31496)(0c61a35)
  • compiler-cli:从getSourceFile(#26036)(3166cff)返回原始sourceFile而不是重定向的sourceFile ,关闭#22524
  • 语言服务: Eagarly初始化数据成员(#31577)(0110de2)

  • bazel:将xi18n输出的位置恢复为bazel-genfiles(#31410)(1d3e227)
  • 编译器:给ASTWithSource自己的访问方法(#31347)(6aaca21)

  • core:undefinedinjectArgs(#31333)(80ccd6c)中处理meta ,关闭CLI#14888
  • service-worker:使用freshness策略缓存数据组中的不透明响应(#30977)(d7be38f),关闭#30968
  • service-worker:当请求超过超时阈值时缓存不透明响应(#30977)(93abc35)

  Ionic通过整合各种技术和功能使构建Hybird应用更加快速、容易和美观。Ionic生态系统基于Angular和Cordova,前者是web应用框架,后者是构建和打包原生应用的工具。

Bug 修复

  • angular:将输入表单类复制到父 ion
    项 (#18820)
    (53179c4),关闭 #18800
  • angular:添加 swipeGesture 方法以启用或禁用滑动菜单的功能
    (#18806)
    (fbfc076),关闭 #16002
  • angular:webview
    “暂停”、“恢复”和“调整大小”事件现在会触发更改检测
    (#18853)
    (544e550),关闭 #18831
  • core:如果支持背景滤镜,则应用半透明 (#18832)
    (6b5a59d),关闭 ionic-team/ionic-docs#666
  • datetime:允许更改 AM/PM (#18684)
    (b7761fe),关闭 #18585
  • datetime:更新列时正确应用禁用的类
    (#18875)
    (7ba718c),关闭 #18793
  • hardware-back-button: 硬件后退按钮不再错误地重新启动应用程序
    (#18794)
    (978cc39),关闭 #18792
  • ripple-effect: 确保指针释放后从组件中删除纹波(#18854)
    (71137a2),关闭 #18836
  • searchbar:添加 aria
    和角色以改善可访问性 (#18797)
    (798103b),
    closes #18796
  • ssr:避免窗口参考 (#18865)
    (23ce6fa)
  • ssr:检查客户端运行时间方法
    (#18866)
    (c52b3b4)
  • textarea:当清除文本时,autogrow 现在将 textarea
    重置为原始行数 (#18822)
    (26e6d6f),关闭 #18744
  • theming:更新组件以使用适合黑暗主题的颜色 (#18735)
    (045bc59),关闭 #18713
  • virtual-scroll:卡片渲染不再扭曲 (#18877)
    (3ef6ecf),关闭 #18870
  • virtual-scroll:在调整大小时重新计算元素尺寸
    (#18878)
    (c91819c)

特征

  • bazel:用 ivy
    编译用于索引的目标(#31786)(82055b2)
  • 升级:支持升级后的组件模板/
    templateUrl函数中的$元素(#31637)(29e1c53)

  • 编译器:避免在克隆对象时从原型中复制(#31638)(24ca582),关闭#31627

  • 核心:添加从渲染器到渲染器2的自动迁移(#30936)(c095597)

  • bazel:允许将自定义bazel编译器主机传递给ngc
    compile(#31341)(a29dc96)
  • bazel:允许传递和重写旧的bazel主机(#31381)(11a208f),关闭#31341

(文/开源中国)    

2.为移动设备开发应用有哪三种类型?各自的优缺点都有什么?

特性

  • core:新增对 Stackblitz 的支持
    (#18846)
    (fb18f3b)
  • ssr:新增 @ionic/core/hydrate app
    (#18867)
    (815fa2e)
  • navigation:将实验阴影添加到 iOS
    页面过渡 (#18695)
    (9b075ef),关闭 #18661
  • virtual-scroll:添加 headerHeight 和
    footerHeight (#18851)
    (0089111),关闭 #17540

 (1)原生移动应用

性能

  • angular: 在第一次更改检测和分离离开页面之前附加输入视图
    (#18821)
    (97fec92)

更新说明及下载地址

  要创建原生移动应用,开发者需要使用移动平台默认的语言,对于IOS来说是Objective-C或者Swift,对于Android来说是Java。写完之后需要编译应用并把它安装到设备上。开发者可以使用平台的软件开发套件(SDK)来和平台API通信,从而可以访问设备中的数据或者使用HTTP请求从外部服务器加载数据。

  优点:a.可以使用原生API,这和平台的交流最紧密;

       b.原生应用性能最好;

     c.原生应用使用原生的API写成,对于其他原生开发者来说很容易理解。

  缺点:a.原生应用要求开发者掌握平台对应的语言并且知道如何使用平台提供的API;

     b.不支持跨平台,每个平台都要单独开发;

     c.需要做很多构建工作,费时费力,增加成本。

  (2)移动端网站(Web应用)

  移动端网站或者说Web应用很适合移动设备使用,可以在手机浏览器中访问。Web应用就是在手机浏览器中访问的网站,它们专门被设计成适合手机屏幕尺寸。

  优点:a.移动端网站更容易更新和维护;

     b.网站在互联网中,不需要安装到移动设备中;

     c.跨平台,所有移动设备都有浏览器,都可以访问你的应用。

  缺点:a.不具备原生访问能力,不能访问原生API,只能访问浏览器提供的API;

     b.需要使用键盘,用户必须在浏览器中输入网址来寻找或者使用移动端网站,这比单击一个图标要困难;

     c.受限的用户界面,很难创建对触摸友好的应用,尤其要同时兼容桌面版时;

     d.移动端访问量下降,用户在移动设备上访问网站的时间不断减少,使用应用的时间越来越多。

  (3)Hybird应用

  Hybird应用指的是包含独立浏览器实例的移动应用,这个实例通常被称作Web-View,可以在原生应用中运行Web应用。Hybird应用会使用原生应用封装器来实现WebView和原生设备平台的通信。这意味着Web应用可以运行在移动设备上,并且可以访问设备的功能,比如照相机和GPS。

  优点:a.跨平台,只开发一次,部署到多个平台,最小化开发成本;

     b.和web开发公用技术,可以使用开发网站和web应用的技术来开发移动应用;

     c.设备访问能力好,因为WebView被封装在原生应用中,使应用可以像原生应用一样访问所有的设备功能;

     d.简化开发,开发流程简单快捷,不需要为了预览重复构建。也可以继续使用构建网站的那一套开发工具。

  缺点:a.WebView限制,应用智能运行在WebView实例中,这意味着应用的性能取决于浏览器;

     b.通过插件访问原生功能,由于你需要的原生API现在可能还没有插件实现,可能需要一些额外的开发工作来进行桥接;

     c.没有原生用户界面控件,如果没有Ionic这样的工具,开发者需要创建所有的用户界面元素。

3.为什么选择Ionic?

  Ionic可以为Hybird应用提供看起来和用起来都很像原生应用的体验。Ionic的优点:

  a.在Web平台上开发应用,可以使用HTML、CSS、和JavaScript开发类似原生应用的Hybird应用;

  b.使用Angular开发,你可以使用Angular的全部功能以及所有第三方模块。Angular的目标是开发主流应用,Ionic把Angular扩展到了移动领域;

  c.使用现代技术,如CSS3的新特性动画等,移动端浏览器对Web平台新规范支持的很好,所以你可以使用这些新特性;

  d.有社区支持和开源精神;

  e.有强大的CLI工具,你可以快速管理开发任务,如在浏览器中预览应用、模拟运行应用或者把应用部署到连接的设备中;

  f.Ionic提供了很多辅助开发的服务;

  g.Ionic有专职团队进行开发和支持;

  h.使用Ionic可以创建类似原生应用的体验;

  i.Ionic的性能不比原生应用差;

  j.用户界面组件美观,可以根据需求针对应用进行自定义。

  缺点:

  a.Ionic目前只支持IOS和Android平台;

  b.Ionic只保证支持IOS7+和Android4+;

  c.不等于原生应用,原生设备API必须在Cordova支持之后才能使用;

  d.不能应付大量图像,因为运行在浏览器中,Hybird应用天生就有这个限制。