Ionic2系列-將beta升級到RC1

来源:http://www.cnblogs.com/yanxiaodi/archive/2016/10/14/5962472.html
-Advertisement-
Play Games

國慶節前Ionic2發佈了RC0版本,已經接近正式版了,前不久Angular2和TypeScript2也已經發佈了正式版。詳情請參考官方博客: http://blog.ionic.io/announcing-the-ionic-2-release-candidate/ 這次升級提高了一定的性能,引進 ...


國慶節前Ionic2發佈了RC0版本,已經接近正式版了,前不久Angular2和TypeScript2也已經發佈了正式版。詳情請參考官方博客:

http://blog.ionic.io/announcing-the-ionic-2-release-candidate/

這次升級提高了一定的性能,引進了Angular2的一些新特性,如@NgModule、支持AoT編譯(Ahead of Time)等,項目結構也發生了變化。所以需要花一點時間把beta版本的項目升級到RC0,相對於提升的性能來講,還是很值得的。

AoT可以在build階段預先編譯模板,啟動速度和頁面切換速度都會提高。官方提供了一個beta11和RC0的對比效果圖:

可以看到,啟用AoT的RC0版本啟動速度大大提升,首頁載入速度比beta11版本快很多。

除此之外,RC0的build方式也改變了。RC0拋棄了webpack,使用了Rollup。不用再安裝Gulp來管理任務了,用npm scrip來打包。但是對開發者使用來說並沒有什麼變化,還是使用Ionic serve命令即可,只是輸出的內容有所變化。採用這種build方式後,自定義打包腳本也變得很容易配置了。可參考Github項目地址:https://github.com/driftyco/ionic-app-scripts

 

項目結構的變化主要體現在引入了@NgModule,源代碼從app目錄移到了src目錄,pages、providers這些目錄都沒有變化。

 

對於從beta版本一直跟下來的開發者來說,可能都遇到過API在不同版本中用法不同的情況,有的還變來變去,如Alert等組件的用法,顯示一個Alert有的版本要調用Alert的方法有的版本要調用AlertController的方法。RC0也穩定了API用法,應該不會有大的變動了。

 

在編譯模式方面,beta版本以前要自己啟用Angular2的生產模式,RC0就簡單很多,項目模板已經提供了dev模式和prod模式,使用ionic serve命令調試的時候是dev模式,當使用build命令時會自動切換到prod模式,非常方便。prod模式編譯出來的js文件體積大大減少,啟動速度也快了很多。

 

其他還有一些變動,如:

1、重新命名了生命周期事件名稱:

  ionViewLoaded事件改為ionViewDidLoad

  移除了IonViewDidUnload事件

  從ViewController中移除了fireOtherLifecycles事件

2、將Storage從ionic-angular中轉移到了一個單獨的module——ionic-storage中,如果用到了該組件需要修改package.json然後npm install。

3、修改了color的用法:

  不能直接給一個組件添加color了,必須要改成屬性的方式,以前可以這樣用:

  <ion-tabs primary>

  現在要改成這樣:

  <ion-tabs color="primary">

  受影響的組件有:

  • Badge
  • Button
  • Checkbox
  • Chip
  • FAB
  • Icon
  • Item (Item, Item Divider, List Header)
  • Label
  • Navbar
  • Radio
  • Searchbar
  • Segment
  • Spinner
  • Tabs
  • Toggle
  • Toolbar
  • Typography (headers, paragraphs, spans, etc.)

4、修改了button組件的聲明方式,<button>要改成<button ion-button>,<a button>改成<a ion-button>;Icon Button的聲明方式也有所變化。

5、CSS引入方式也變化了。以前要分別引入三個平臺的css,由ionic動態載入,現在只需要以下一行就可以了:

  <link href="build/main.css" rel="stylesheet">

……

我覺得RC0已經可以進行實際應用了,這幾天把手頭的一個項目升級到了RC0。但是就在我寫這篇blog的時候,剛發現10.13也就是昨天Ionic2發佈了RC1,其中修複了Modal組件無法觸發ionViewDidLoad事件的bug,這個bug我曾經遇到過。看來離正式版很近了。當然RC0到RC1比較簡單,主要是beta11到RC改動較大。升級步驟如下:

 

根據官方說明,有兩種升級方式,一種是新建一個新項目,將beta版本的代碼拷過去;一種是直接在beta項目基礎上改。推薦第一種方式,因為RC的項目結構變化比較大,最好還是新建一個來改。

 

  1. 首先確認npm版本是3.x以上,使用npm -v命令來查看一下:

  2. 安裝最新的Ionic CLI。如果之前裝的是beta版,必須使用npm uninstall -g ionic卸載掉,再重新使用npm install -g ionic安裝。安裝後使用ionic -v看一下版本,應該是2.1以上:
  3. 新建一個Ionic RC版本的app
    ionic start –v2 myApp
  4. 將beta項目的pages目錄從app/pages複製到新項目的src/pages;providers目錄從app/providers複製到src/providers;pipes目錄從app/pipes複製到src/pipes;components目錄也一樣複製到src/components。
  5. 所有組件的templateUrl,把build……那一串去掉,只留文件名,如build/pages/about/about.html改為about.html。
  6. 修改src/app/app.module.ts文件,Import所有的pages,並添加到declaration數組和entryComponents數組中。
  7. Import所有的components和pipes並添加到declaration數組中。
  8. Import所有的providers並添加到providers數組中。
  9. 修改所有的Component,移除providers、pipes和directives。以前如果在Component中不聲明這些東西是沒法用的,現在不用了,都在app.module.ts里聲明瞭。
  10. 把模板中所有用到的變數的關鍵字由private改為public。這個改動主要是為了AoT編譯,如果聲明為private的變數,AoT是無法訪問的。
  11. 修改所有的<button>標簽,改為<button ion-button>.
  12. 修改所有用到color屬性的地方,如<button primary>需要改為<button ion-button color="primary">。
  13. 把所有的ionic config轉移到app.module.ts里的IonicModule.forRoot里。如IonicModule.forRoot(MyApp,{configObject})。
  14. 把sass文件中針對不同平臺的變數轉移到theme/variables.scss文件中。
  15. 為每個要添加自定義樣式的Component添加一個selector,為了讓樣式有一個作用域。這樣每個單獨的Component都可以有自己的樣式作用域,意義更清晰。如樣式表中這樣寫:
    page-about {
    #title {
    color: blue;
    }
    }
    Component中這樣寫:
    @Component({
    selector: 'page-about',
    templateUrl: 'about.html'
    })
    這樣的話這個樣式只會在該Component內起作用。
  16. 如果有img目錄,需要轉移到src/assets/img里,相應的修改一下圖片 路徑。

這樣就基本完成了從beta升級到RC的過程。

常見問題:

build到Android的過程中,報錯:

Unsupported major.minor version 52.0

這是因為Ionic2RC不支持JDK1.7 版本了,需要升級到JDK1.8才能正常編譯。

總體來說升級到RC還是很值得的。使用ionic serve命令時,Angular是dev模式:

當使用ionic build android命令時,可以看到改為了prod即生產模式:

這樣編譯後的啟動速度大大提高。

以上的內容主要參考了官方的升級文檔,把主要的內容翻譯了一下。如果大家有任何升級方面的問題歡迎留言討論。

官方升級說明地址:https://github.com/driftyco/ionic/blob/master/CHANGELOG.md


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • ``` include int main(int argc, const char argv[]) { int i=0,j=0; for(i=1;i ...
  • C語言 變數存儲 數據結構 嵌入式 ARM 靜態變數 局部變數 全局變數 單片機 記憶體分配 ...
  • 1.AOP的作用 在OOP中,正是這種分散在各處且與對象核心功能無關的代碼(橫切代碼)的存在,使得模塊復用難度增加。AOP則將封裝好的對象剖開,找出其中對多個對象產生影響的公共行為,並將其封裝為一個可重用的模塊,這個模塊被命名為“切麵”(Aspect),切麵將那些與業務無關,卻被業務模塊共同調用的邏 ...
  • (-1)寫在前面 我用的是MyEclipse8.5. 還記得以前幫助一個女同學解決問題的時候,特意情調了要先啟動服務在發佈項目,其實單獨的時候都是知道的,總和起來後就容易片面的給出結論。因為不會發生問題所以啊也不知道自己錯了。倒是瞭解後,很多莫名其妙的問題說的清了。 (0)步驟說明 註意這個名字是m ...
  • 簡介:Fabric是基於Python實現的SSH命令行工具,簡化了SSH的應用程式部署及系統管理任務,它提供了系統基礎的操作組件,可以實現本地或遠程shell命令,包括:命令執行、文件上傳、下載及完整執行日誌輸出等功能。Fabric在Paramiko的基礎上做了更高一層的封裝,操作起來會更加簡單。 ...
  • 命令行界面編譯運行C/C++程式 2016-10-14 編寫好程式後,就需要對程式進行編譯、執行。很多編譯器都具備集成開發環境(IDE),在開發大型程式時,IDE強大的功能十分有用。然而當程式較小,使用IDE就會非常麻煩。比如,如果用IDE寫一個冒泡排序演算法對一個數組進行排序,就需要新建項目、項目中 ...
  • 學習和工作的過程中總結的乾貨,包括常用函數、常用js技巧、常用正則表達式、git筆記等。為剛接觸前端的童鞋們提供一個簡單的查詢的途徑,也以此來緬懷我的前端學習之路。 PS:此文檔,我會持續更新。 <! more Ajax請求 jquery ajax函數 我自己封裝了一個ajax的函數,代碼如下: j ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...