详解vue移动端项目代码拆分记录


Posted in Javascript onMarch 15, 2019

撸一套vue多端共用,非常适合需要快速且全面上线的项目。但是多端共用一套vue代码,由于平台间的互相限制,每端在某些业务例如支付分享等是完全独立的代码,每个平台的支付方式也会有所差异,造成在这些业务的实现过程中会有太冗余的“if else”判断。所以为了提高代码的复用性、扩展性,可以将代码拆分,以-小程序和App两端举例,一份部署到小程序,一份部署到App(Android&Ios)。

首先代码拆分应该保证本地开发的时候只有一套代码,提取所有公共页面,并且分别提取小程序和app的独立JS方法,避免开发完小程序端vue,然后粘贴复制到App端的繁琐操作。
直接看图最清晰,拆分前目录结构:

拆分后目录结构:

详解vue移动端项目代码拆分记录

拆分前项目目录结构

详解vue移动端项目代码拆分记录

拆分后项目目录结构

目录拆分好之后,开始拆分代码。由于部署到生产环境的时候只能App端部署App端,小程序端部署小程序端,那么在本地开发过程中为了调试不同端的页面就需要进行路由配置,所以对路由配置文件route.list.js做了修改:
拆分代码前,route.list.js中将所有页面JS文件的相对路径放在一个数组里:

define(
 [
  ‘../xxx/xxx/user.js',
  ‘../xxx/xxx/goods.js',
  …
  …
 ]
)

拆分后,route.list.js中按public、mobile_app、wechat_mini 分别定义数组,这样如果现在正在开发小程序端的vue,那么则将public和wechat_mini的数组合并到一起,开发app端的vue则将public和moblie_app的数组合并到一起,合并数组使用ES6扩展运算符(…)。

var public_goods = [];
var mini_goods = [];
var app_goods = [];
var fun = (isWechatMini) => {
  if(isWechatMini){
    return [
     …public_goods,
     …mini_goods
    ]
  } else {
    return [
     …public_goods,
     …app_goods
    ]
  }
}
define(
  fun(true)
)

将公共部分和独立部分的页面拆分之后,进一步分析代码:App端和小程序端相互独立的大多是支付功能,分享功能等涉及到需要原生处理的地方,并且会在多个页面,多个业务中出现,那么就将App独立的vue代码拆分到一个公共JS中(app-common.js),将小程序独立的vue代码拆分到一个公共JS中(mini-common.js),在需要的页面中引入即可。就商品购买支付功能为例:

拆分前:

define([‘vue', ‘axios', ‘text!/File/Html/goods/goodsPay.html'], (vue, axios, Template) => {
  var App = {
   data() {

   },
   template: Template,
   mounted() {

   },
   methods: {
     pay(){
       if(isWechatMini){
         //这里是小程序支付
       } else {
         //这里是App支付
       }
     }
   }
  };

  return{
    app: App
  };
  
});

业务复杂的情况下,会有多层if else,代码太冗余。

拆分后:

小程序端的商品支付购买页面:

define([‘vue', ‘axios', ‘text!/File/Html/mini/goods/goodsPay.html', ‘mini-common'], (vue, axios, Template, common) => {
  var App = {
    data() {

    },
  template: Template,
  mounted() {

  },
  methods: {
     pay(){
       //调用mini-common中定义的支付方法
       common.pay();
     }
  }
 };

 return{
  app: App
 };
  
});

App端的商品购买支付页面只需要将引入的JS换成app-common即可:

define([‘vue', ‘axios', ‘text!/File/Html/app/goods/goodsPay.html', ‘app-common'], (vue, axios, Template, common) => {
  var App = {
    data() {
    },
  template: Template,
  mounted() {

  },
  methods: {
    pay(){
      //调用app-common中定义的支付方法
      common.pay();
    }
   }
  };
  return{
   app: App
  };
  
});

本地开发完后,部署到服务器只需要将public目录下和wechat_mini下的文件复制粘贴到打包工具打包即是小程序端的代码,public和mobile_app打包即是app端的代码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript和JQuery实用代码片段(一)
Apr 07 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
javascript实现获取cookie过期时间的变通方法
Aug 14 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 Javascript
jquery读写cookie操作实例分析
Dec 24 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
vue过滤器用法实例分析
Mar 15 Javascript
js实现内置计时器
Dec 16 Javascript
小程序自定义单页面、全局导航栏的实现代码
Mar 15 #Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 #Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
Mar 15 #Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
Mar 15 #Javascript
浅谈KOA2 Restful方式路由初探
Mar 14 #Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
Mar 14 #Javascript
详解React项目中碰到的IE问题
Mar 14 #Javascript
You might like
PHP环境搭建最新方法
2006/09/05 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
python web框架学习笔记
2016/05/03 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
产品开发计划书
2014/04/27 职场文书
爱祖国演讲稿
2014/05/04 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
六查六看六改心得体会
2014/10/14 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
分享几种python 变量合并方法
2022/03/20 Python
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技