Giter VIP home page Giter VIP logo

avvw's Introduction

AVVW APICLOUD 开发框架

Apicloud + Vue2 + Vant(有赞前端)+ Webpack4 打包,是一个采用 Vue 数据绑定特性和 Apicloud 手机操控能力相结合的 APP 开发框架,此框架并非采用 Vue 的 SPA 单页面应用方式,而是遵从 Apicloud 的多页面原生渲染效率方式,Vue+Webpack 只是为了提供更佳的 ES2015+语法、模块分割和数据绑定代码体验,弥补 Apicloud 本身无法应用在庞大工程协作的缺点。

使用 AVVW 可以极速开发出流畅的商用级别 APP,让你轻松应付各种开发需求

已适配 IOS8、Android 6 以下低端机型,在此非常感谢@ftlh2005同学的Issue

v1.1.0 已全面提升页面加载速度,在此非常感谢@Viarotel同学的Issue

v1.2.0 已实现手机调试热加载,在此非常感谢@amnextking同学的Issue

目录结构

  • dist 编译代码,连同 config.xml 上传到 Apicloud 发布 App
  • src 源代码,所有开发在此开始,除 pages、templates 目录外,其他目录可随意增删
    • components vue 公用模块
    • libs 公共库
    • pages Apicloud 使用 openWin 和 openFrame 打开的页面,vue 组件化
    • templates Webpack 编译时的模板文件
      • api.js Apicloud 前端库源文件,保留
      • fastclick.min.js 移动端减少触点反馈时间
      • index.html Apicloud 入口文件
      • page.ejs 将 pages 下 vue 编译为 Apicloud 可用的模板
      • vue.js 未压缩 vue 库,用于开发环境
      • vue.min.js 压缩 vue 库,用于生产环境
  • .syncignore 不同步到 Apploader 的文件列表
  • config.xml Apicloud 配置文件
  • 其他省略

开始使用

git clone 或者 直接下载 master 包,cd 进入包目录

手机实时调试

npm i

npm run wifi-start # 开wifi服务,Apploader连接wifi服务,wifi-stop 停止服务
npm run dev # 开启本地测试服

待本地测试服完全开启后,查看测试服端口,如下:

 ℹ 「wds」: Project is running at http://0.0.0.0:8080/

然后打开./src/templates/index.html,修改 development 环境下调试手机能访问你本地测试服的局域网 IP 和测试服端口,如下:

<script type="text/javascript">
  var url = './home.html'   // You can change the main entry in 'production' ENV
  if ('<%= htmlWebpackPlugin.options.env %>' === 'development') {
    url = 'http://192.168.0.104:8080/home.html' // You can change the main entry in 'development' ENV
  }
  ...
</script>

接着可以开始同步文件到手机 Apploader 进行调试

 npm run wifi-dev # 真机wifi无压缩同步,速度快
 npm run wifi-log # 真机wifi日志输出

注意:wifi-dev 和 wifi-log 都只需要运行一次,Apploader 第一次同步完成后,修改./src 文件保存后手机自动同步和浏览器热加载一样!无需再手动 wifi 同步一次,这是 1.2.0 后版本的新特性!

本地浏览器调试

npm run dev # 开启本地测试服

打开浏览器输入例如 http://0.0.0.0:8080/tab1.html 即可对某个页面进行调试,注意由于在本地浏览器环境下所以无法调试 Apicloud sdk 的相关功能

编译上传

 npm run support # 测试兼容机型(可选)
 npm run build # 编译

编译后,新建./widget 文件夹,然后将./dist 文件夹和 config.xml 拷贝到./widget 下,压缩./widget 文件夹生成 widget.zip 上传 apicloud 后台的“代码”处即可进行发布

如何升级

从 v1.2.0 之前的版本升级到 v.1.2.0,只需获取框架最新源代码后,除./src/templates/index.html 保留外,将你项目的./src 下的文件全部覆盖到 v1.2.0 框架下的./src 下的文件,然后对比你项目的 package.json 和 v1.2.0 的 package.json 差别修改后,重新运行 npm i 安装新开发依赖即可!

开发细节

如无需高级配置,那么只需关注 src 下 pages 目录文件,这里说明一下 pages 文件:

home.vue

任何 vue 语法都可以使用,但有一处要留意!

// 首先在全局window中带入 文件名 + Vue 的vue export object
window.homeVue = {
    ....
}

// 然后才export
export default window.homeVue

这是与本来 vue 直接 export 不同之处,因为在 templates 中的 page.ejs 模板文件中,需要从 window 中拿回 vue export object 来在页面上构建 vue 初始化!而 components 目录文件则无需如此!

由于框架并非采用 Vue 的 SPA,所以无法在多页面间使用 vue-router、vuex 之类的单页面应用的数据共享技术,而只能采用 Apicloud API 提供的相关页面跳转传递、数据共享技术

首页入口

框架默认 home.html 为 App 首页入口,你也可以修改其他页面为入口,只需修改./src/templates 下的 index.html 即可

var url = './home.html'; // 生产环境下,修改此处对应pages的文件名即可 eg. ./main.html
if ('<%= htmlWebpackPlugin.options.env %>' === 'development') {
  url = 'http://192.168.0.104:8080/home.html'; // 开发环境下,修改此处对应pages的文件名即可 eg. ./main.html
}

本地浏览器预览

npm run dev 开启测试服,但和一般的 vue 测试不同的是,你需要手动切换需要测试的页面,eg. http://localhost:8080/home.html,不能测试 index.html,因为此文件是 Apicloud 所用,页面测试时遇到api is not defined不用理会,因为 api 是 Apicloud App 环境下才初始化的对象

浏览器预览是用来调节界面排版布局,体验性测试请使用真机 Apploader

Apicloud API SDK

你可以在 vue 中直接使用 api.xxx,也可以使用 this.$ac.xxx 来调用 api sdk

ES6 支持

vue 支持大部分 ES6 语法,但要注意的是如果你修改 templates 下的 page.ejs 和 index.html,请不要使用 ES6 语法,因为 webpack 默认没有转义模板文件

按需加载和异步加载

手机 CPU 和内存有限,而且 Apicloud 采用 Hybird 技术,在性能上尤其低端安卓上肯定大打折扣,所以使用按需加载、异步加载和懒加载会更好地让 App 保持流畅原生感

扩展使用

框架集成了有赞 vant前端框架,适用大部分需求,当然你也可以更换其他 Vue 前端框架。

欢迎扩展和完善此框架,接下去我会放出更多其他更好用的开发框架


Copyright by Grape Studio

avvw's People

Contributors

grapewheel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.