vue项目向小程序迁移调研
概述
今天调研了一下vue项目怎么向小程序迁移,有些心得,记录下来,供以后开发时参考,相信对其他人也有用。
基本上vue项目向小程序迁移不外乎2种方法,一种是用小程序的web-view组件,另一种是用mpvue重新开发一个。第二种成本太高,所以我这里调研的基本上是第一种方法。
解决方案
对于一般项目来说,直接在小程序中给web-view组件的src填入vue项目的地址即可。但是web-view组件有如下限制:
1.web-view组件的src不能动态变化。这个限制基本可以无视,因为我们是单页面,不需要经常改变web-view的src。但是有些特殊情况需要考虑这个限制,比如我们使用setData方法通过判断url的参数来加载web-view的src是行不通的。
2.小程序的page中只能存在一个web-view。这个限制也可以无视,因为我们只需要一个web-view就行了。
3.web-view里面的项目,不能用window.open(xx, '_blank'),但是可以用window.open(xx, '_self')。
我们项目中有用到window.open(xx, '_blank'),所以我们需要判断是不是小程序环境,是的话就把window.open(xx, '_blank')改成window.open(xx, '_self')。判断方法有如下2种:
// 方法1(推荐)——要求:微信版本>=7.0.0
// 通过判断userAgent中包含miniProgram字样来判断小程序web-view环境。
export function isMiniProgram() {
return !!navigator.userAgent.match(/miniProgram/i);
}
// 方法2——无要求
// 引入微信sdk,然后用微信sdk判断
npm install weixin-js-sdk --save
wx.miniProgram.getEnv(function(res) {
console.log(res.miniprogram); //true
});
基本上按照上面的方法就可以使用web-view迁移vue项目到小程序中了。
其它
在调研过程中我还踩了一个其它的坑,这里也记录下来。
1.使用微信sdk的postMessage传的值必须是字符串,所以对于对象来说需要先用JSON.stringify处理一下。
wx.miniProgram.postMessage({ data: JSON.stringify(navigator.userAgent) });
2.web-view的bindmessage属性可以接受postMessage传递过来的值,但是它只会在特定时机(小程序后退、组件销毁、分享)才触发。所以不能期望,马上传完值,web-view就能马上接收到并做出响应。
3.官方文档对于navigateTo的描述有误。传递的值并不在options.query里面,而是就在options里面。
wx.navigateTo({
url: 'test?id=1'
})
// test.js
Page({
onLoad(options) {
console.log(options.id)
}
})
vue项目向小程序迁移调研的更多相关文章
- 直击--vue项目微信小程序页面跳转web-view不刷新-根源
背景 最近项目需要适配小程序,项目是使用了vue开发的网站,其中改造方式是,每个页面都使用小程序创建一个页面通过web-view来显示指定页面的. 在没有使用小程序时,路由跳转时,刷新页面等等,这个是 ...
- 学了这么久,vue和微信小程序到底有什么样的区别?
前言 写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别.相比之下,小程序的钩子函数要简单得多. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下 ...
- 只会Vue怎么开发小程序?vue和微信小程序的到底有哪些区别?
写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别. 一.生命周期 先贴两张生命周期图对比下: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. v ...
- uniapp小程序迁移到TS
uniapp小程序迁移到TS 我一直在做的小程序就是 山科小站 也已经做了两年了,目前是用uniapp构建的,在这期间也重构好几次了,这次在鹅厂实习感觉受益良多,这又得来一次很大的重构,虽然小程序功能 ...
- vue 开发微信小程序
介绍 mpvue (github 地址请参见)是一个使用 Vue.js 开发小程序的前端框架.框架基于 Vue.js 核心,mpvue 修改了 Vue.js的 runtime 和 compiler 实 ...
- vue和微信小程序的区别、比较
链接:https://segmentfault.com/a/1190000015684864 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue ...
- 微信小程序迁移到头条小程序工具
最近公司需要将微信小程序迁移到头条小程序,比较得知微信和头条小程序的写法类似,只有文件名称不同,相关的指令不同,以及头条在ttml绑定的数据不可使用function,于是就写了node脚本来实现这些重 ...
- .vue,跟小程序文件在sublime里面怎么实现代码格式化
.vue文件跟小程序的.wxml,.wxss用sublime的HTML/CSS/JS prettify插件也可以实现格式化代码的效果 首先你在sublime要已经安装好了HTML/CSS/JS pre ...
- Vue和微信小程序区别
一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue的钩子函数在跳转新页面时,钩子函数都会触发,但是小程序的钩子函数,页面不同的跳转方式,触发的钩 ...
随机推荐
- spring security oauth2 jwt 认证和资源分离的配置文件(java类配置版)
最近再学习spring security oauth2.下载了官方的例子sparklr2和tonr2进行学习.但是例子里包含的东西太多,不知道最简单最主要的配置有哪些.所以决定自己尝试搭建简单版本的例 ...
- Spring-cloud (九) Hystrix请求合并的使用
前言: 承接上一篇文章,两文本来可以一起写的,但是发现RestTemplate使用普通的调用返回包装类型会出现一些问题,也正是这个问题,两文没有合成一文,本文篇幅不会太长,会说一下使用和适应的场景. ...
- Spring Boot中使用MyBatis注解配置详解(1)
之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...
- auth.go
), fmt.Errorf("invalid permission type: %s", s) } type authenticator struct { conn *gr ...
- 6种基础排序算法java源码+图文解析[面试宝典]
一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...
- Java基础-递归调用
意义: 递归算法是一种直接或间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 所以在工作中我们经常用递归 来进行一些算法操作 比如 ...
- 不使用SpringBoot如何将原生Feign集成到Spring中来简化http调用
在微服务架构中,如果使用得是SpringCloud,那么只需要集成SpringFeign就可以了,SpringFeign可以很友好的帮我们进行服务请求,对象解析等工作. 然而SpingCloud是依赖 ...
- SpringBoot(二)_项目属性配置
修改端口 在main/resources/application.properties修改端口 server.port=8088 此时启动访问localhost:8088/hello 就会看到 Hel ...
- 机器学习中的范数规则化-L0,L1和L2范式(转载)
机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化. ...
- Entity Framework Core 关联删除
关联删除通常是一个数据库术语,用于描述在删除行时允许自动触发删除关联行的特征:即当主表的数据行被删除时,自动将关联表中依赖的数据行进行删除,或者将外键更新为NULL或默认值. 数据库关联删除行为 我们 ...