使用vue开发APICloud软件APP的教程

一、APICloud创建程序

1、APICloud后台创建应用

2、APICloud拉取代码,APICloud开发工具地址

APICloud开发工具PC端,先下载APICloud开发工具,打开开发工具后点击项目,导入项目,云端云端检出,可以看到项目目录,可以将项目拉取下来。

3、APICloud自定义apk 的loader 创建测试应用的程序。

如何自定义loader :登录APICloud的官网,到达控制台,选择添加模块(可以添加h5不能实现的功能模块),点击模块下的自定义loader,点击编译xxx自定义loader。

将自定的loader下载到手机端,安装后打开,如果遇到问题,可能是需要打开此app的存储,照相的权限。

4.APICloud应用端的整体配置

整体的配置在config.xml文件下来配置,应用信息,偏好设置,模块的绑定,权限编辑等。

我们可以编辑源文件,改变里面的应用的名称,应用的版本,应用的开发者,应用的启动页,应用的邮箱,应用的描述,配置全局背景,window背景,frame背景,滚动条,是否全屏运行,自动监测更新,云修复,绑定模块的参数,权限管理等。具体的配置地址:

APICloud config.xml应用配置说明 - 手机APP开发、APP制作、APP定制平docs.apicloud.com/Dev-Guide/app-config-manual

源码配置图

二、如何将 vue 运行到 APICloud APP 中

1、 使用vue 创建项目 ,并将项目同步到APP调试

1.1、使用vuecli创建项目和多页面项目创建

1>使用 vuecli创建项目:

PC端环境依赖:nodejs、vue、npm、webpack(新版本vue不用管webpack)

正常的创建vue的项目,vue可能分文2 3+版本,老的项目都是vue2的创建方式,很多都用到了webpack ,后面的是vue create创建项目方式,我们可以创建完毕后切换到文件夹内npm install,然后npm run serve,会得到一个启动地址。

例如下图:http://192.168.2.152:8080/将地址配置到我们的 config.xml的输入的目录。

vue2的安装和创建项目---老项目可能用的vue2 安装 npm install vue-cli@2.9.6

vue init webpack "项目名称"

vue的最新安装和创建项目

安装 npm install -g vue-cli

安装 vue create "项目名称"

2>多页面创建

为了尽量不影响应用性能和Hybrid中原生API的用户体验的前提下,并不推荐使用Vue.js的SPA开发模式,即不推荐使用vue-cli编译出使用vue-router、vuex、axois等模块的单页面应用。我们可以单独引入html页面每个页面引入vue.js,将vue.js当做是一个渲染的插件来用,可以使用里面的模板语法,v-if,v-show,v-for等。直接用script引入vue.js的方式能最大限度的减少vue与apicloud项目的耦合度,不会与现有原生api和原生模块产生冲突。

如下图每个页面都是这种单独引入vue.js的引入模式。

<!DOCTYPE HTML>

<html>

<head>

 <meta charset="utf-8">

 <meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width" />

 <meta name="format-detection" content="telephone=no, email=no, date=no, address=no">

</head>

<body>

 <div id="vue">

   {{ message }}

 </div>

</body>

<script type="text/javascript" src="./script/vue.min.js"></script>

<script type="text/javascript">

 apiready = function () {

   new Vue({

     el: '#vue', // 与标记的id相同

     data: function() {

       return {

         message: 'Hello world!'

       };

     },

   });

 };

</script>

</html>

1.2、vue+APICloud项目开发调试

如果是单页的clivue的模式需要npm run serve启动,然后将启动后台的访问地址放到如下图的config.xml里面,首先去apicloud生成自定义loader并下载,然后手机安装loader和电脑端安装的APICloud studio3应用,打开项目,下载项目,编写里面代码,然后进行wifi同步到手机端。

如果是多页面的调试,和普通的项目的调试一样,就是将html页面新建到项目里面去,后面安装自定义loder和APICloud studio3进行同步。

即手机端安装自定义loader,保证手机和电脑在同一个路由下,如图,手机端自定义loader,输入调试器的ip的地址和端口,这样就可以把前端的代码同步到手机端了。电脑端我们点击手机端的断点,我们可以看到console后的数据。

在PC端的,APICloud studio的终端-通过wif链接设备

手机端安装的自定义loader

同步的时候会注意这个文件.gitignore ,如图同步的时候将忽略的文件写到.gitignore 文件中。

2、 使用 vue.js 结合APICloud 多页面渲染

2.1、vue多页面引入

首先我们知道了vue的多页面是怎么创建的,然后引入方式都是一个页面一个页面打开的,

使用APICloud 有两种打开页面的方式 1>api.openWin参数传递的时候写在pageParam里面,如果打开vue的路由的页面可以这样写, api.openWin({ name: "index",url: "./index.html",});这样将index.html路由的页面可以打开。

api.openWin({

   name: 'index',

   url: './index.html',

   pageParam: {

       name: 'index'

   }

});

2>api.openFrame参数传递的时候写在pageParam里面,如果打开vue的路由的页面可以这样写, api.openFrame({ name: "index",url: "./index.html",});这样将index.html路由的页面可以打开。

api.openFrame({

   name: 'index',

   url: './index.html',

   rect: {

       x: 0,

       y: 0,

       w: 'auto',

       h: 'auto'

   },

   pageParam: {

       name: 'index'

   }

});

参数可以在新页面中通过 api.pageParam 获取。

2.2、APICloud使用使用api

最需要注意的是apiready所有的js 运行代码用到api的都要在这个函数内运行。其实就是需要等apiready准备好了,我们就可以直接调用了。

apiready此事件是在api对象准备完毕后产生,在每个Window或Frame的HTML代码中都需要监听此事件,以确定APICloud扩展对象已经准备完毕,可以调用了。

APICloud所有的文档都在这个链接APICloud APP开发文档 - 手机APP开发、APP制作、APP定制平,关于所有的手机端的APICloud给我们封装的方法都在APICloud的api文档链接,我们可以看到他给我们封装了一些基础的使用手机系统的方法,关于应用的窗口的,各种事件的等,我们都可以在这边调用。还有就是APICloud的下面的模块都是通过api的方法去引用和调用。

例如使用ajax,可以将此方法放到vue页面的methods里面,在mounted可以直接调用或者在事件里面直接可以使用。

<!DOCTYPE HTML>

<html>

<head>

 <meta charset="utf-8">

 <meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width" />

 <meta name="format-detection" content="telephone=no, email=no, date=no, address=no">

 <style>

   [v-cloak] {

 display: none;

}

 </style>

</head>

<body>

 <div id="vue" v-cloak>

   {{ message }}

   <button onclick="vm.getData();" tapmode>Button One</button>

   <div @click="getData">Button Two</div>

   <div @click="getData('Tim')">Button Three</div>

 </div>

</body>

<script type="text/javascript" src="./script/api.js"></script>

<script type="text/javascript" src="./script/vue.min.js"></script>

<script type="text/javascript">

 var vm;


 apiready = function () {

   vm = new Vue({

     el: '#vue',

     data: function() {

       return {

         message: 'Hello world!'

       };

     },

     mounted: function() {

      this.greet();

     },

     methods: {

       greet: function() {

       api.ajax({

       url: 'http://192.168.1.101:3101/upLoad',

       method: 'post',

       data: {

           values: {

           name: 'haha'

       },

       files: {

           file: 'fs://a.gif'

       }

   }

    }, function(ret, err) {

      if (ret) {

          api.alert({ msg: JSON.stringify(ret) });

       } else {

       api.alert({ msg: JSON.stringify(err) });

       }

    });

       },

       getData: function(name) {

         setTimeout(function() {

           vm.message = vm.message + name + '吃了吗?';

         }, 3000);

       }

     }

   });


 };

</script>

</html>

3、 使用 vue.js 和 vue 的路由

vue.js的优势:1、【Vue.js】可以进行组件化开发,使代码编写量大大减少,读者更加易于理解;2、使用【Vue.js】编写出来的界面效果本身就是响应式的,这使网页在各种设备上都能显示出非常好看的效果 3、这一套代码可以在APICloud上面打包成为安卓应用,可以打包成为IOS引用,可以打包成为h5应用。

首先通过vue的脚手架创建项目,使用vue-cli编译出使用vue-router、vuex、axois等混合APICloud的api来写项目。

开发配置:配置vue使用APICloud的api的方法是需要在main.js里面配置window.apiready方法如图,这样配置调用的是APICloud 里面api的方法,只有在main.js这样写后同步到手机端的时候才能生效。单个vue页面上需要配置let api = window.api来调用如下图:

import { createApp } from 'vue'import App from './App.vue'import router from './router'import Vant from 'vant';import 'vant/lib/index.css';window.apiready = () => {createApp(App).use(router).use(Vant).mount('#app')}

vue有路由:

方案一:声明式导航router-link

//传递对象

方案二:编程式导航 this.$router.push() 在方法中添加参数,用的比较多。

1、不带参数:

this.$router.push('/home')

this.$router.push({name:'home'})

this.$router.push({path:'/home'})

2、query传参

1.路由配置:name: 'home',path: '/home'

2.跳转:this.$router.push({name:'home',query: {id:'1'}})this.$router.push({path:'/home',query: {id:'1'}})

3.获取参数 html取参: $route.query.idscript取参:this.$route.query.id

3、params传参

1.路由配置:name: 'home',path: '/home/:id'(或者path: '/home:id')

2.跳转:this.$router.push({name:'home',params: {id:'1'}})

3.获取参数 html取参:$route.params.idscript取参:this.$route.params.id

4、 直接通过path传参

1.路由配置name: 'home',path: '/home/:id'

2.跳转:this.$router.push({path:'/home/123'})或者:this.$router.push('/home/123')

3.获取参数:this.$route.params.id

5、 传递对象(obj不能过长否则会报错)

1 query传递对象 (类似get,url后面会显示参数) JSON.stringify(obj) 转一下.

2 接收参数: JS:JSON.parse(decodeURIComponent(this.$route.query.obj))

HTML:JSON.parse(decodeURIComponent($route.query.obj))

vue的项目的运行

如果上来就是链接npm run serve的页面,可以在配config.xml,如图。ip地址是启动的本机的ip地址,注意手机和电脑在同一个wifi下面。

三、项目打包

1、vue打包

1>单页面的需要打包到dist文件里面

打包命令是vue run build ,打包文件都在dist文件夹下,如下图,dist文件里面有css img js 和index.html,

主要增加一个vue.config.js文件,修改publicpath的路径改成如下代码,这样修改了打包后访问空白bug。

注意,这个dist文件夹很重要,需要同步到APICloud平台进行打包,访问的时候访问dist/index.html路径再加上vue的路由。

这个dist文件就是我们要用的到的编译后的文件。dist文件提交到apicloud的后台再去打包。

module.exports = {

     // 使用vue-cli3打包项目,通过配置不同的指令给项目设置不一样的配置。    

     // npm run serve时会把process.env.NODE_ENV设置为‘development’;    

     // npm run build 时会把process.env.NODE_ENV设置为‘production’;    

     publicPath: process.env.NODE_ENV === 'production' ? './' : '/'}

2>多页面的不需要打包,只需要将涉及到的html文件,img,css,js文件全部提交到APICloud的后台。

2.Apiclou打包

将提交到后台的代码进行打包成为安卓APP和IOS APP的过程。Apicloud打包我们把我们改的代码提交到APICloud的后台,注意我们启动页的路径,需要改的含有dist的绝对路径而不是http我们开发的路径。

编译正式包:点击后台的控制器,点击里面的云编译,选择我们要编译的平台,应用类别,应用名称等,选择打包,然后等待打包完成,这样我们就完成了APICloud的开发。

中间可能涉及到需要创建安卓证书和苹果证书,这个博客有创建证书教程:超详细图文保姆级教程:APICloud App开发新手入门(四)

苹果证书:iOS创建苹果证书、制作p12证书流程_隔壁老瓦的博客-CSDN博客_苹果p12证书

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容