Cordova + Vue.js 開發手機App

Cordova或是PhoneGap可以用HTML5來開發手機APP

當然現在也可以用ReactNative來開發。但說起來還是得再額外學習新的語言

對於已經是Web開發者想直接寫手機APP其實可以採用Cordova + Vue.js + OnsenUI

這樣的組合來做,其實做出來還是有80%像原生APP的。

今天介紹一下怎麼弄好環境,首先先用以下指令把 Cordova 與 VueCLI 裝好

npm install -g cordova
npm install -g vue-cli

接下來建立一個Cordova專案

cordova create project-name

再來建立Vue專案

vue init webpack project-name

? Target directory exists. Continue? Yes
? Project name project-name
? Project description A Vue.js project
? Author Lin Masahiro <k80092@gmail.com>
? Vue build standalone
? Install vue-router? No
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Set up unit tests No
? Setup e2e tests with Nightwatch? No
? Should we run `npm install` for you after the project has been created? (recom
mended) npm

接著進專案資料夾做一點修正。先把 index.html 加上 cordova.js

cd project-name
vi index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Security-Policy" content="default-src * gap: ws: https://ssl.gstatic.com;style-src * 'unsafe-inline' 'self' data: blob:;script-src * 'unsafe-inline' 'unsafe-eval' data: blob:;img-src * data: 'unsafe-inline' 'self'">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, minimum-scale=1, width=device-width" />
    <title>project-name</title>
</head>
<body style="margin: auto;">
    <div id="app"></div>
</body>
</html>

然後修正 build 時的目標資料夾,大概在config/index.js的第40行附近。把預設的dist換成www

vi config/index.js

build: {
    // Template for index.html
    index: path.resolve(__dirname, '../www/index.html'),

    // Paths
    assetsRoot: path.resolve(__dirname, '../www'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '',
...

改好後加入需要的Cordova插件

cordova plugin add cordova-plugin-whitelist
cordova plugin add cordova-plugin-device

然後加入我們要採用的OnsenUI

npm install onsenui vue-onsenui

最後將OusenUI引入main.js中,加上下面四行

vi src/main.js

import 'onsenui/css/onsenui.css';
import 'onsenui/css/onsen-css-components.css';
import VueOnsen from 'vue-onsenui';
Vue.use(VueOnsen);

接下來按照OnsenUI官網的範例寫一個helloworld app

修改好App.vue之後插上手機用以下指令把他裝進手機裡面試試看

npm run build
cordova platform add ios android
cordova build

成功 build 完之後,進platform/ios中開啟xcode專案,設定好開發者資訊後就能夠安裝進手機了
如果是安卓系統的話,用以下指令就行了

cordova run android --device

祝大家開發順利:)

追加事項:

如果有需要用到自訂字體的話。要在build/webpack.base.conf.js中的module裡加上新的rules

test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: ‘url-loader’,
options: {
    limit: 10000,
    name: utils.assetsPath(‘fonts/[name].[hash:7].[ext]’),
    publicPath: process.env.NODE_ENV === ‘production’ ? ‘../../’ : ‘/’
}