目錄
一、基礎環境准備
二、構建VUE項目
三、配置Ionic界面框架
四、構建Cordova項目
五、整合Cordova、Vue、Ionic
一、基礎環境准備
1、下載 & 安裝vscode (強大的前后端開發工具)
2、下載 & 安裝nodejs (前端代碼打包編譯專用)
3、下載 & 安裝 git (強大的代碼托管工具)
4、打開vscode,安裝淘寶鏡像(推薦國內線路,安裝更加穩定,迅速)
npm i -g cnpm --registry=https://registry.npm.taobao.org
5、你需要知道的幾個官網
Ionic:https://ionicframework.com
Cordova:https://cordova.axuer.com/
6、你需要知道的npm常用指令說明
1. npm install
安裝node_module以及還原package.json內聲明的所有包
2. npm install xxxpackage
安裝xxx包到node_module目錄下,但是不會更新package.json文件,因此另外一個人拉取到代碼后無法使用npm install進行包還原,需要手動指定重裝
3. npm install --save xxxpackage
安裝xxx包到node_module目錄下,同時更新package.json的dependencies(生產/運行環境)配置,運行時如果需要就用這個
4. npm install --save-dev xxxpackage
安裝xxx包到node_module目錄下,同時更新package.json的devDependencies(開發/編譯環境),但是不會更新dependencies(生產/運行環境)配置,僅編譯時需要就用這個
5. npm install --global xxxpackage
安裝xxx包到全局,不同項目之間可以共享該包,就無需每個項目都安裝
6. 簡寫
install可以簡寫為i,例如:npm install 簡寫 npm i
--save可以簡寫為-S,例如:npm install --save xxxpackage 簡寫為 npm i -S xxxpackage
--save-dev可以簡寫為-D,例如:npm install --save-dev xxxpackage 簡寫為 npm i -D xxxpackage
--global可以簡寫為-g,例如:npm install --global xxxpackage 簡寫為 npm i -g xxxpackage
二、構建Vue項目
1. 安裝vue 腳手架(當前最火的MVVM前端架構,國人精心打造,推薦使用)
cnpm i -g vue-cli
2. 安裝webpack
cnpm i -g webpack
4. 創建webpack模板項目,一路回車以及按“Y”即可(假如無法使用vue指令,可能是因為沒有給系統執行腳本的權限,打開PowerShell,執行:set-ExecutionPolicy RemoteSigned 命令,再輸入Y回車即可)
vue init webpack drea.demo.app
5. 進入項目
cd drea.demo.app
6、完善.eslintrc.js文件中的規則(完善默認代碼規范,方便后續開發)
7、初始化依賴項
cnpm i
8、運行項目
npm run dev
9、效果如下
三、配置Ionic界面框架
1、安裝ionic需要的三個依賴包
cnpm i @ionic/vue @ionic/core ionicons@4.5.9-1 --save
2、修改src/main.js文件,新增如下代碼
import Ionic from '@ionic/vue' import '@ionic/core/css/ionic.bundle.css' Vue.use(Ionic)
3、修改src/components/HelloWorld.vue,代碼如下
<template> <div> <br /> <IonVuePage :title="'Alert'" style="text-algin:center;"> <ion-button @click="presentAlert">Show Alert</ion-button> <ion-button @click="presentAlertMultipleButtons">Show Alert (multiple buttons)</ion-button> <ion-button @click="presentAlertConfirm">Show Alert (confirm)</ion-button> <ion-button @click="presentAlertPrompt">Show Alert (prompt)</ion-button> <ion-button @click="presentAlertRadio">Show Alert (radio)</ion-button> <ion-button @click="presentAlertCheckbox">Show Alert (checkbox)</ion-button> </IonVuePage> </div> </template> <script> export default { methods: { presentAlert() { return this.$ionic.alertController .create({ cssClass: "my-custom-class", header: "Alert", subHeader: "Subtitle", message: "This is an alert message.", buttons: ["OK"] }) .then(a => a.present()); }, presentAlertMultipleButtons() { return this.$ionic.alertController .create({ cssClass: "my-custom-class", header: "Alert", subHeader: "Subtitle", message: "This is an alert message.", buttons: ["Cancel", "Open Modal", "Delete"] }) .then(a => a.present()); }, presentAlertConfirm() { return this.$ionic.alertController .create({ cssClass: "my-custom-class", header: "Confirm!", message: "Message <strong>text</strong>!!!", buttons: [ { text: "Cancel", role: "cancel", cssClass: "secondary", handler: blah => { console.log("Confirm Cancel:", blah); } }, { text: "Okay", handler: () => { console.log("Confirm Okay"); } } ] }) .then(a => a.present()); }, presentAlertPrompt() { return this.$ionic.alertController .create({ cssClass: "my-custom-class", header: "Prompt!", inputs: [ { placeholder: "Placeholder 1" }, { name: "name2", id: "name2-id", value: "hello", placeholder: "Placeholder 2" }, { name: "name3", value: "http://ionicframework.com", type: "url", placeholder: "Favorite site ever" }, // input date with min & max { name: "name4", type: "date", min: "2017-03-01", max: "2018-01-12" }, // input date without min nor max { name: "name5", type: "date" }, { name: "name6", type: "number", min: -5, max: 10 }, { name: "name7", type: "number" }, { name: "name8", type: "password", placeholder: "Advanced Attributes", cssClass: "specialClass", attributes: { maxlength: 4, inputmode: "decimal" } } ], buttons: [ { text: "Cancel", role: "cancel", cssClass: "secondary", handler: () => { console.log("Confirm Cancel"); } }, { text: "Ok", handler: () => { console.log("Confirm Ok"); } } ] }) .then(a => a.present()); }, presentAlertRadio() { return this.$ionic.alertController .create({ cssClass: "my-custom-class", header: "Radio", inputs: [ { type: "radio", label: "Radio 1", value: "value1", checked: true }, { type: "radio", label: "Radio 2", value: "value2" }, { type: "radio", label: "Radio 3", value: "value3" }, { type: "radio", label: "Radio 4", value: "value4" }, { type: "radio", label: "Radio 5", value: "value5" }, { type: "radio", label: "Radio 6", value: "value6" } ], buttons: [ { text: "Cancel", role: "cancel", cssClass: "secondary", handler: () => { console.log("Confirm Cancel"); } }, { text: "Ok", handler: () => { console.log("Confirm Ok"); } } ] }) .then(a => a.present()); }, presentAlertCheckbox() { return this.$ionic.alertController .create({ cssClass: "my-custom-class", header: "Checkbox", inputs: [ { type: "checkbox", label: "Checkbox 1", value: "value1", checked: true }, { type: "checkbox", label: "Checkbox 2", value: "value2" }, { type: "checkbox", label: "Checkbox 3", value: "value3" }, { type: "checkbox", label: "Checkbox 4", value: "value4" }, { type: "checkbox", label: "Checkbox 5", value: "value5" }, { type: "checkbox", label: "Checkbox 6", value: "value6" } ], buttons: [ { text: "Cancel", role: "cancel", cssClass: "secondary", handler: () => { console.log("Confirm Cancel"); } }, { text: "Ok", handler: () => { console.log("Confirm Ok"); } } ] }) .then(a => a.present()); } } }; </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h1, h2 { font-weight: normal; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style>
4、再次運行項目,點擊按鈕,效果如下
四、構建Cordova項目
1、安裝cordova包(注意,這里一定要用npm,cnpm里的cordova有點問題)
npm i cordova -g
2、創建cordova項目
cordova create app drea.demo.app
3、進入cordova目錄
cd app
4、添加Browser平台核心套件(cordova platform ls 指令可以查看cordova支持的所有平台)
cordova platform add browser
5、以Browser平台運行,效果如圖
cordova run browser
6、添加Android平台核心套件
cordova platform add android
7、配置Android平台依賴環境(本人提供的下載地址:http://res.drea.cc/open/java/,不過最好去官網下載)
7.1 下載並配置 jdk(我用的1.8版本),環境變量如下(注意,環境變量配置值中的目錄要跟實際目錄保持一致)
配置項:JAVA_HOME 配置值:D:\MyApp\Study\Java\jdk 配置項:Path 配置值:%JAVA_HOME%\bin\ 配置項:Path 配置值:%JAVA_HOME%\jre\bin\
7.2 下載並配置android-sdk(我用的最新版本),環境變量如下
配置項:ANDROID_HOME 配置值:D:\MyApp\Study\Java\android-sdk 配置項:ANDROID_SDK_ROOT 配置值:D:\MyApp\Study\Java\android-sdk 配置項:Path 配置值:%ANDROID_HOME%\tools 配置項:Path 配置值:%ANDROID_HOME%\platform-tools
7.3 下載並配置apache-ant(我用的最新版本),環境變量如下
配置項:Path 配置值:D:\MyApp\Study\Java\apache-ant\bin
7.4 下載並配置gradle(我用的最新版本),環境變量如下
配置項:Path 配置值:D:\MyApp\Study\Java\gradle\bin
8、安裝Android SDK,具體安裝內容如圖所示
9、創建Android模擬器,如圖所示(也可以使用第三方模擬器,推薦:BlueStacks藍疊模擬器)
10、安裝虛擬化增強軟件,假如沒有安裝,啟動模擬器可能會報錯(Android SDK目錄下 extras\intel\Hardware_Accelerated_Execution_Manager)
11、查看當前Android依賴環境配置情況,假如一切正常,則效果如圖
cordova requirements android
12、以Android平台運行,效果如圖
假如報異常:Failed to install the following Android SDK packages as some licences have not been accepted platforms;android-28 Android SDK Platform 28,則表示你沒有安裝所需版本的SDK,比如這里表示我們需要安裝API 28 版本的SDK,那么我們就回到第8步繼續安裝
cordova run android
13、以Android平台進行打包,假如一切正常,則效果如圖
cordova requirements android
五、整合Vue、Ionic、Cordova
1、將cordova項目下www目錄中的js文件夾整個拷貝到vue項目下src目錄中
2、參考cordova項目下www目錄中的index.html文件來修改vue項目中的index.html文件,內容如下(這里假如不引用ionic js,會導致發布的android應用顯示異常,原因不明,猜測是ionic對vue項目的適配不是很好,如果有人知道原因,煩勞評論告知)
3、回到vue項目下
cd ..
4、在vue項目中安裝cordova-vue包
cnpm i vue-cordova --save
5、在main.js中新增如下配置
import vueCorvova from 'vue-cordova' Vue.use(vueCorvova)
6、修改vue項目的編譯輸出位置,如圖
7、編譯vue項目,將會生成編譯文件到cordova項目www目錄下
npm run build
8、重新進入cordova項目
cd app
9、以Browser平台運行,點擊按鈕,效果如圖
cordova run browser
10、已Android平台運行,點擊按鈕,效果如圖
cordova run android