Noah_liu
Noah_liu
  • 发布:2018-04-08 23:31
  • 更新:2020-04-24 21:28
  • 阅读:6285

让Vue-cli 构建SPA 搭上 HTML5+的顺风车

分类:HTML5+

过程

本人,是一个比较懒,

  1. 不喜欢学习原生开发,所以入局了HTML5+
  2. 不喜欢放肆复制粘贴,所以入局了Vuejs

在论坛寻找了很久,也google了很久,一直没有一个Vue-cli构建SPA开发HTML5+应用的完美例子。

  1. 论坛里面有一个 vue-cli template for Hbuilder的例子,但是编译完成之后,生成的文件并不能使得基座页面刷新,需要手动重启基座才能看到最新的效果
  2. 论坛中也有人提到,在mainfast.json文件中将入口文件设置为[your own id]:8080,但是没有具体的步骤,经过一番探索,已经成功掌握了这一方式

在论坛的解决方案 【2】 中,能够直接使用官方的 webpcak 模板,并且保证了热更新能够正常使用,也能够掉起HTML5+的API,下面将具体步骤贴出,用以方便论坛中有需要的人

结果

如果想要使用vue-cli构建基于Vue的SPA程序,并且能够在真机调试的时候能够顺利的调用HTML5+的接口,而且要能够通过Chrome远程调试的话,那么您的照着下面的步骤慢慢来

修改Vue-cli的webpack配置

1、 修改 config/index.js

{  
    build:{  
        assetsPublicPath:'./'  
    }  
}  
  1. 打包前修改html里面静态资源的路径,代码中网络资源一定要加上https、http

修改src/main.js文件


//为每个组件都混入一个plusready的状态标识,方便在组件中安全的调用plus接口,如果你想在组件中安全的调用puls接口也可以用混入方法拓展Vue对象原型,将plus注入到Vue对象的原型链上去  

Vue.mixin({  
    computed: {  
        plusReady() {  
            return this.$store.state.isplusReady;  
        }  
    }  
})  

// 配置html plus 环境  
document.addEventListener('plusready', function () {  
    // 设置一个全局plusready状态  
    store.state.isplusReady = true;  

    // 监听返回按键  
    let now = false;  
    let time = null;  
    plus.key.addEventListener('backbutton', function () {  
        // 如果是首页则执行退出操作  
        if (app.$route.path === "/home" || app.$route.path === "/my-center") {  
            time = null;  
            if (now) {  
                now = false;  
                plus.runtime.quit();  
            } else {  
                now = true;  
                plus.nativeUI.toast("再按一次退出", { duration: 'short' });  
                time = setTimeout(() => {  
                    now = false;  
                }, 1000);  
            }  
            // 如果是内页则执行路由返回操作  
        } else {  
            router.go(-1);  
        }  

    })  
})

app项目配置

  1. 新建一个app项目
  2. 开发时修改入口为 http://[your own ip]:8080(例:http://192.168.0.1:8080)
  3. 打包后,将dist文件夹中所有文件复制到app根目录,入口文件设置为index.html,检查index.html中没有绝对路径源代码网络资源文件已经添加http、https协议头

到此结束

如有更加新奇的想法请跟帖讨论本帖内容不涉及基础知识,vuejs官网,HTML5+API官网

0 关注 分享

要回复文章请先登录注册

Noah_liu

Noah_liu (作者)

回复 5***@qq.com :
H5+ App `manifest.json` `launch_path` 这个属性
2020-04-24 21:28
5***@qq.com

5***@qq.com

开发时修改入口为 http://[your own ip]:8080(例:http://192.168.0.1:8080),入口文件具体指的是哪个?
2020-03-24 16:09
5***@qq.com

5***@qq.com

回复 Noah_liu :
你可以加我QQ讨论,我们目前都是在开发混合APP,有经验互相借鉴一下。加的时候备注说明一下即可。
2019-04-01 11:52
Noah_liu

Noah_liu (作者)

回复 c***@163.com :
你好 ,因为是商业项目暂时源码还不能放出来,等有空修改下代码在放出需要等待比较忙近一段时间
2019-03-31 21:59
Noah_liu

Noah_liu (作者)

回复 l***@163.com :
你好 ,因为是商业项目暂时源码还不能放出来,等有空修改下代码在放出需要等待比较忙近一段时间
2019-03-31 21:59
Noah_liu

Noah_liu (作者)

回复 5***@qq.com :
开发模式下确实是网络加载的方式,启动白屏时间长。但是能够很好的保留 热更新这一特性。 不过你的解决方案是否能够更加详细一些,也是我所需要解决的问题
2019-03-31 21:58
5***@qq.com

5***@qq.com

这是我目前使用的开发方式,使用:开发时修改入口为 http://[your own ip]:8080(例:http://192.168.0.1:8080)这种方式打包的时候,APP启动时会去服务器拉资源,如果Vue打包文件稍大,网络不佳时,容易出现白屏和加载时间过长的问题。
目前使用的解决办法为:HB的增量更新,在页面首次加载的时候检查,在安卓上可以实现自动安装马上自动重载,但是在IOS上不能重载,只能重启应用。这样一来,Vue的前端文件就与APK包在一起,解决了首次加载慢的问题。
2019-03-04 14:04
l***@163.com

l***@163.com

有源码可以参考吗,谢谢
2019-01-23 10:30
c***@163.com

c***@163.com

大神,源码在github上有吗?
2018-08-16 10:57