WTF小程序之原生遇见mpvue
事情是这样的,我们有一个原生(wxml,wxss,js,json)写的小程序,要加入一个新的模块,并且时间比较紧张。所以我们选择了采用mpvue开发一个分包(subpackage),加入到原生小程序中,并确保被正确加载。下面说一下踩到的坑。
目录结构
首先说一下目录结构,上一张图:

上面的目录结构中,将mpvue项目目录跟原生小程序目录在同一个项目根目录下,然后通过修改webpack配置文件将build文件目录修改到原生小程序目录下面。然后再通过小程序的app,json的配置,将mpvue build完成的小程序页面文件作为主包的一个分包加载。
webpack配置
首先介绍一下webpack相关的修改,配置文件在mpvue目录/config/index.js下,主要修改的是assetsRoot, assetsSubDirectory, assetsPublicPath三个字段,这三个字段决定了当你执行npm run build命令时,文件的生成路径,这里通过修改这些路径,使生成的文件不在mpvue项目目录下,而在小程序的目录下:
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../../dist/register'),
assetsSubDirectory: 'static',
assetsPublicPath: '/register',
// ...
},
dev: {
env: require('./dev.env'),
port: 8080,
// 在小程序开发者工具中不需要自动打开浏览器
autoOpenBrowser: false,
productionSourceMap: false,
assetsSubDirectory: 'static',
assetsPublicPath: '/register',
proxyTable: {},
cssSourceMap: false
}
}
app.json的配置
在完成上一步后,执行npm run build命令时,就会在原生小程序下面生成一个文件夹里面是mpvue打包后的页面文件。那么接下来就是修改app.json的配置,从而可以是分包中的页面文件正确被主包加载了,配置如下:
// ...
"subPackages": [
{
"root": "register/",
"pages": [
"pages/index/main",
"pages/school/main",
"pages/new-school/main" ]
}
],
这里的root字段就是上面mpvue中的build目录register,下面的pages是相对于root的路径,经过以上三步,就可以把mpvue生成的文件作为分包加载了。如果没有正确跑起来,报了下面的错误,请继续往下看:
File not found: static/css/vendor.wxss

这是由于 MpvuePlugin的实现没有考虑跨目录build造成的。可在node_modules下面找到_webpack-mpvue-asset-plugin@0.0.1@webpack-mpvue-asset-plugin下的index.js
文件,替换为这个修改过的文件,作用就是使assetPublicPath生效。从而保证css资源引用不会出错。[完]
WTF小程序之原生遇见mpvue的更多相关文章
- 原生开发小程序 和 wepy 、 mpvue 对比
1.三者的开发文档以及介绍: 原生开发小程序文档:点此进入 wepy 开发文档:点此进入 mpvue 开发文档:点此进入 2.三者的简单对比: 以下用一张图来简单概括三者的区别: 小程序支持的是 WX ...
- 微信小程序结合原生JS实现电商模板(二)
接 <微信小程序结合原生JS实现电商模板(一)>,在首页列表加入购物车到购物和模块增删数量,动态计算商品价格实现后,本次提交主要实现了商品详情(还不完善)简单页面,从商品详情页跳转到购物车 ...
- 如何把原生小程序项目合并的mpvue项目中
当时的情景是这样的: 使用mpvue写微信小程序,写着写着项目写到一半了,突然间不想这样继续写了,想切换回原生小程序语法去写剩余部分. 如下图,红色框里的功能是已经用mpvue完成的功能,绿色框部分的 ...
- 小程序的初次遇见,使用mpvue搭建模板
由于公司业务需求的需要,在这一周需要开发小程序,加急看了下小程序的文档,发现用其原生来编写程序不是很顺手,公司前端用的技术栈是vue, 询问了谷哥和度娘发现大部分推荐了 wepy和 mpvue,对比了 ...
- 微信小程序:原生热布局终将改变世界
关于本文的所有观点都是网上收集,与作者本人没有任何关系! 最近朋友圈已经被微信小程序刷屏了,这也难怪,腾讯的产品拥有广泛的影响力,谁便推出个东西,都会有很多人认为会改变世界,这不,张小龙刚一发布微信小 ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- WTF小程序之animation
目录 animation 的几个关键方法 step 方法 export 方法 如何实现 infinate 动画 小程序的 animation 有一套怪异的 API,既不符合 css 的 keyfram ...
- 微信小程序使用原生WebSokcet实现断线重连及数据拼接
以前做小程序为了应急找了个插件去链接WebSokcet,文章传送门. 回过头在新项目中再次使用时出现了些许问题,不一一赘述.遂决定好好用一下原生的WebSokcet. 一.说明 1.小程序原生的Web ...
- 微信小程序框架部署:mpvue+typescript
开发前提: 1.在微信公众平台注册申请 AppID 2.安装开发者工具https://developers.weixin.qq.com/miniprogram/dev/devtools/downloa ...
随机推荐
- 关于WEB前端,你必须了解的发展方向
一.职业方向定位 首先,只有确定好自己的职业方向,才能做好职业规划.在我看来,做WEB前端技术能够找到的职业方向有以下几种: (1)资深WEB前端工程师 这个方向算是一个WEB前端最基本的选择了,在国 ...
- RGB转换成YCbCr
clear all; close all; clc; img=imread('colorbar.jpg');%('ngc6543a.jpg'); %img=mat2gray(img); %[0,1]; ...
- 01-Javascript简介
Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) JavaScript的组成 Java ...
- day36(动态代理)
动态代理 动态代理:是实现增强类中的一种方式,jdk中的动态代理:Proxy对象,使用最广泛的是在AOP切面编程中. 实现一个简单的动态代理来了解其中的运行机制. 创建一个接口:Person类型的接口 ...
- 关于自定义脚本rc.local里开机不启动的问题--以tomcat和perl相关的脚本为例
本文将自己遇到的一些自定义脚本加入开机启动项却不成功的问题加以说明,花费了我很长时间才得以解决,当然也多谢了自己朋友的帮忙,正是因为他们的提醒,最后才找到了解决的办法,谢谢他们!!!! 系统是cent ...
- OpenGL中的拾取模式( Picking)
1. Opengl中的渲染模式有三种:(1)渲染模式,默认的模式:(2)选择模式, (3)反馈模式.如下 GLint glRenderMode(GLenum mode) mode可以选取以下三种模式之 ...
- Java 是值传递
本质:传值/传地址值 以下搬运自知乎大佬 作者:Intopass链接:https://www.zhihu.com/question/31203609/answer/50992895来源:知乎著 ...
- MFC坐标系
MFC坐标系分为设备坐标系和逻辑坐标系两种.在设备坐标系中,一个像素表示一个单位长度,设备的原点(0,0)始终在显示平面的左上角位置,x轴正向向右,y轴正向向下. 逻辑坐标系中,原点可以放在任何一个位 ...
- JS学习笔记3_函数表达式
1.函数表达式与函数声明的区别 函数声明有“提升”(hoisting)的特性,而函数表达式没有.也就是说,函数声明会在加载代码时被预先加载到context中,而函数表达式只有在执行表达式语句时才会被加 ...
- Aspose Word.Dll库自带的bug导致The document appears to be corrupted and cannot be loaded 问题处理。
问题的详细描述: C#在开发过程中使用Aspose.word.dll库去实现word套打功能.但是,最近客户反映出现了一个问题,在打印文档的时候,系统报错.经过定位分析发现是Aspose.word.d ...