好久没写东西了,去年用了angular2的RC版本和ionic2写了一个项目,因为开发周期和有些版本不稳定,所以一直没有升级,ng2新版本引用Aot打包,听说优化还不错,现在尝试升级ionic2、angular2到最新版本,在此分享经验。
  1. 全局升级ionic、cordova(因为每个版本的初始化工程包引用的插件不一样,本人升级后,新建工程出现一些错误。如果你新建工程出现错误,你可以卸载后重新安装)
//解决安装后新建出现的bug
npm uninstall -g ionic
npm uninstall -g corodva npm install -g ionic cordova
  1. 调整文件路径结构(个人更倾向于官网的代码书写结构,因为在开发中有一些方便调试优化 ,新版本和旧版本的路径差距很大, 新版的文件结构和老版有一定的修改,我在这里指出:
     2.1 用ionic2工具新建一个工程,新工程名字最好和之前一样
     2.2 因为本人用于android,android版本太多了,所以本人用了crosswalk,保证使用最新webview,保证统一的兼容性,因为是新工程本人顺便升级一下所有cordova插件包,感兴趣的话可以看下
ionic plugin add cordova-plugin-crosswalk-webview
     2.3 安装所有你需要的cordova插件后,初始化android基本工程
ionic run android
     2.4 修改一些启动方法,因为ng2后面版本引用@NgModule,在此简单给个例子
@NgModule({
declarations: [
MyApp,
TabsPage,
LoginPage
],
imports: [
IonicModule.forRoot(MyApp, {
backButtonIcon: 'arrow-back',
iconMode: 'ios',
pageTransition: 'ios',
tabbarPlacement: 'bottom',
backButtonText: '返回'
}, {}
)],
bootstrap: [IonicApp],
entryComponents: [
LoginPage,
MyApp,
TabsPage
],
providers: [UserService,AppConfigService,{provide: ErrorHandler, useClass: IonicErrorHandler}]
})
     2.5 有些组件的属性写法改了一些例如button按钮
<button ion-button (click)="loginFn()"  color="danger" block default >
立即登录
</button>
     2.6 html模版的引用也发生一些变化,之前是全路径,现在简写路径
@Component({
templateUrl: 'login.html',
selector: 'login-page',
})
     2.7 之前ionic2开发,打包工具用的是gulp(配置文件很方便改动、添加自己东西),现在改用ionic-app-scripts,一个插件包,提供的修改配置参数不是特别的多,可以添加简单的配置参数,修改创建相应的config配置文件,具体详细配置可以参考github这个插件包详细说明。https://github.com/driftyco/ionic-app-scripts
在此提供自动生成没有出现的命令,还是很有用的
  "scripts": {
"release": "ionic-app-scripts build --prod", //调用angular2提供的AOT,加快浏览器客户端编译,不过文件也许变大,可以使用服务器zigb压缩
}  
     2.8 ionic2提供的开发环境反向代理一直有问题,我查看打包源码简单的改了一下
//找到 node_modules//@ionic/app-scripts/dist/dev-server/http-server.js文件
//搜索proxyMiddleware,用http-proxy-middleware替换proxy-middleware
var proxyMiddleware = require('http-proxy-middleware'); //搜索proxy.proxyNoAgent,替换下面的语句
47 //if (proxy.proxyNoAgent) {
48 // opts.agent = false;
49 //}
50 //opts.rejectUnauthorized = !(proxy.rejectUnauthorized === false);
51 app.use(proxy.path, proxyMiddleware({
52 target: proxy.proxyUrl,
53 changeOrigin: true
54 }));
55 //app.use(proxy.path, proxyMiddleware(opts));
详细修改方法我一发布github网站,https://github.com/driftyco/ionic-app-scripts/issues/790,可以参考
 
     2.9 因为文件的路径可能时常发生改变,所以图片在scss路径引用最好使用变量函数
@mixin addAppImage($imagePath) {
background-image: url("../images/" + $imagePath);
}
 

ionic2如何升级到最新版本、配置开发环境的更多相关文章

  1. 【转】Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)

    http://blog.csdn.net/ccf19881030/article/details/9204801 很久以前使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs20 ...

  2. Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)

      写这篇博客时2D游戏引擎Cocos2d-x的最新版本为2.1.4,记得很久以前使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs2010配置图文详解(亲测)>成功配置 ...

  3. python - selenium 2 升级到最新版本

    python - selenium 2 升级到最新版本 之前一直用的是selenium 2.48 .firefox36 而实际用户的浏览器可能都有自动更新功能,所以版本基本上是最新的.所以这次专门做了 ...

  4. 一行命令将ubuntu升级到最新版本

    zzupdate 是一个开源的命令行程序,通过将几个更新命令组合到一个命令中,使得将 Ubuntu 桌面和服务器版本升级到更新版本的任务变得容易一些. 将 Ubuntu 系统升级到更新的版本并不是一项 ...

  5. InstallShield 2012 Spring优惠升级到最新版本(2015.4.30之前)

    InstallShield 2012 Spring即将EOF,所以仍在使用InstallShield 2012 Spring的用户请注意下面内容: InstallShield 2012 Spring升 ...

  6. sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

    最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的 ...

  7. node 随便升级到最新版本的遭遇

    将node 升级到最新版本后,创建一个RN新项目,执行:react-native init AwesomeProject  遇到: error An unexpected error occurred ...

  8. [UE4]把工程升级到最新版本

    右键UE4工程文件,选择“Switch Unreal Engine version...” 确定后,再次双击打开工程升级到最新版本了.

  9. 【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

    sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件 ...

随机推荐

  1. 动态加载与插件系统的初步实现(三):WinForm示例

    代码文件在此Download,本文章围绕前文所述默认AppDomain.插件容器AppDomain两个域及IPlugin.PluginProvider.PluginProxy3个类的使用与变化进行. ...

  2. Linux之linux入门

    学习linux之前先了解一下操作系统: 操作系统的定义:         操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内 ...

  3. css布局笔记(二)Flex

    flex Flex是"Flexible Box"的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可指定为Flex布局. .box{di ...

  4. 为什么你写的用例测不出Bug来?

    我们写测试用例的目的是为了能够整理思路,把要测试的地方列出来,做为知识的积淀,用例可以交给其他测试人员执行,或者是跟需求提出者进行讨论,对用例进行补充和修改.那么为啥你写的用例测不出Bug来呢,真的是 ...

  5. 解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效

    C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个DataGrid.ListBox.Listview(控件本身有scrollviewer)的时候,我们本想要的效果 ...

  6. Python读取文件编码解码问题

    用chardet检测编码 import chardet raw = open("model.json", 'rb').read() result = chardet.detect( ...

  7. RabbitMQ入门:主题路由器(Topic Exchange)

    上一篇博文中,我们使用direct exchange 代替了fanout exchange,这次我们来看下topic exchange. 一.Topic Exchange介绍 topic exchan ...

  8. SpringCloud版本问题

    兴致勃勃地跟随文档创建并配置Eureka Server工程后,启动准备测试,发现报了java.lang.NoSuchMethodError: org.springframework.boot.buil ...

  9. Flink 部署文档

    Flink 部署文档 1 先决条件 2 下载 Flink 二进制文件 3 配置 Flink 3.1 flink-conf.yaml 3.2 slaves 4 将配置好的 Flink 分发到其他节点 5 ...

  10. openstack系列文章(二)

    学习openstack的系列文章-keystone openstack 架构 Keystone 基本概念 Keystone 工作流程 Keystone Troubleshooting 1.  open ...