背景

业务需要,需要编写一个服务在企业微信里面的H5应用。需要解决的问题有:

  • UI库选型
  • 响应式布局
  • 按需引入组件
  • 企业微信登录
  • 本地预览
  • http请求
  • 水印
  • 企业微信桌面端支持

UI库选型

已有的移动端组件库(vue)有。

  • vant(有赞) 支持 vue2,vue3
  • NutUI(JD) 支持vue2,vue3
  • Mint UI (element) 支持vue2,最新release 是2017年

根据实际需求,选择适合自己的组件库。个人推荐 vant。一直持续更新中。

响应式布局

利用的是postcss-pxtorem 这个库

vue.config.js 里面配置下就行了

module.exports = {css:{loaderOptions:{postcss:{plugins:[pxtorem({rootValue: 37.5, // 375 是视觉稿尺寸。propList: ['*'],minPixelValue: 2 // min pixel value})]}   }
}

按需引入组件

利用的是 babel-plugin-import 组件

对于 vant 的配置

babel.config.js 文件里面

module.exports ={plugins: [['import',{ libraryName: 'vant', libraryDirectory: 'es', style: true },'vant',],],
}

然后就可以按需引入组件了。

// 插件会自动将代码转化为方式二中的按需引入形式
import { Button } from 'vant';

企业微信登录

对于企业微信登录,需要用到微信提供的url

const oauthUrl =  `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(redirectUrl)}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`

其中 appid 是企业微信的 appid, redirect_uri 是获取到code 之后,重新跳转到的url。

我使用的是vue-router 库,通过方法 router.beforeEach()router.afterEach() 拦截路由变化

在 beforeEach方法里面


router.beforeEach((to,form,next)=>{// 先检查是否已经登录了。// 检查参数中是否有code 参数if(to.query.code){// 拿code 请求服务器端,获取到用户信息。// 然后走后续的流程。。next({...to, replace: true});}else{// 跳转微信授权。const currentHref = window.location.href;window.location.href = getWxOauth2Url(currentHref);}
})

在 afterEach 方法里面

router.afterEach((to,from,next)=>{// 更改titile document.title = (to.meta && to.meta.title) || '';
})

本地预览

当执行了vue-cli

{"build": "vue-cli-service build",
}

之后,生成了 dist 目录之后,如何预览呢,这个时候就需要一个http服务,并支持代理接口。

/*** 使用nodejs创建本地的http服务* */
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer(); // See (†)var requestType = {"css": "text/css","js": "text/javascript","html": "text/html"
};var config = {target: 'http://service.com',port: 3000,host: 'local.service.com',dir: '../dist',prefix: '/api', // api prefix debug: true
};var proxyConfig = {target: config.target,changeOrigin: true,
};//
http.createServer(function (request, response) {var pathName = url.parse(request.url).pathname;var realName = path.join('.', pathName);var ext = path.extname(pathName);ext = ext ? ext.slice(1) : 'unknown';// 走转发走if (pathName.indexOf(config.prefix) !== -1) {config.debug && console.log(`Rewriting path from "${pathName}" =====> to "${proxyConfig.target}${pathName}"`);proxy.web(request, response, proxyConfig);return;}config.debug && console.log(pathName);if (pathName.indexOf('css') === -1 && pathName.indexOf('js') === -1 && pathName.indexOf('img') === -1) {pathName = '/index.html';}realName = path.join(__dirname, config.dir, pathName);config.debug && console.log(realName);fs.exists(realName, function (exists) {if (!exists) {response.writeHead(404, {'Context-type': 'text/plain'});response.write('this request url ' + pathName + ' was not found on this server.');response.end();} else {fs.readFile(realName, 'binary', function (err, file) {if (err) {response.writeHead(500, {'Context-type': 'text/plain'});response.end(err);} else {var contentType = requestType[ext] || "text/plain";response.writeHead(200, {'Context-type': contentType});response.write(file, 'binary');response.end();}});}});
}).listen(config.port, config.host);console.log(`server running at http://${config.host}:${config.port}/`);

这里就是一个最简单的 http 服务,并依赖 http-proxy 库 走api 的转发。

http请求

对于 http的请求,我选择的是 axios 这个库,当然也有其他更好的库选择。

水印

一般在企业微信里面,都需要添加水印来保护公司的一些信息不被乱传播出去。这个时候就需要使用水印。

所使用的库是 watermark-dom

企业微信桌面端支持

企业微信是有手机端,也有桌面端,所以在支持手机端的同时最好也适配下桌面端。

Vant 是一个面向移动端的组件库,因此默认只适配了移动端设备,这意味着组件只监听了移动端的 touch 事件,没有监听桌面端的 mouse 事件。

如果你需要在桌面端使用 Vant,可以引入我们提供的 @vant/touch-emulator,这个库会在桌面端自动将 mouse 事件转换成对应的 touch 事件,使得组件能够在桌面端使用。

# 安装模块
npm i @vant/touch-emulator -S
// 引入模块后自动生效
import '@vant/touch-emulator';

demo地址

demo https://bosscheng.github.io/vue3-mobile-template/#/

github https://github.com/bosscheng/vue3-mobile-template

基于vue-next(vue3)企业微信H5搭建相关推荐

  1. linux环境下企业基于域名访问的web于电子邮件服务器 论文,基于Linux平台的企业邮件服务器搭建...

    我失骄杨君失柳,杨柳轻飏直上重霄九.得道多助,失道寡助.身后有余忘缩手,眼前无路想回头.鸟宿池边树,僧敲月下门.想当年,金戈铁马,气吞万里如虎. 本文由418133804贡献 pdf文档可能在WAP端 ...

  2. 企业微信H5网页费用报销操作界面 Vue

    手机端的H5界面,也可运行在微信中,或者APP内嵌页面,费用报销管理简洁漂亮,设计操作简单明了,使用了vue.js 无缝串联切换网页技术,流畅无比.这个是2017年的作品.有需要的可联系,我有一整套营 ...

  3. 企业微信H5踩坑指南

    企业微信开发H5功能,正在进行中,需要记录的点有两个: 第一是:域名验证,针对SPA应用,下载下来的验证文件跟index.html同一目录或者使用其他方式,需要保证域名+文件名可以访问即可,再次登录微 ...

  4. Linux Zabbix——企业监控基于钉钉、企业微信实现自动化报警

    zabbix基于企业微信.钉钉群聊机器人实现自动化报警 在企业中,我们使用zabbix去进行监控,需要时刻关注应用服务的运行情况,这就少不了实时报警,而使用即时通讯软件报警相对就很方便. 监控环境准备 ...

  5. matlab数字图像处理大作业_线上教学优秀案例(16) | 数字图像处理基于蓝墨云+企业微信的线上教学经验分享...

    [前言]目前我校在线课堂教学如火如荼,老师们在各大教学平台化身"直播高手""网课达人"倾心打造精彩课堂,有效保证了在线学习与线下课堂教学质量实质等效.为进一步推 ...

  6. 企业微信(H5打开)调用微信小程序

    这个功能比较坑,有很多坑的点,我先把我的开发过程说一下,最后把我遇到的问题总结. 准备工作 1.需要在微信小程序的管理后台中关联企业微信 2.在企业微信管理后台中设置应用主页 3.在企业微信管理后台中 ...

  7. 企业微信H5唤起(打开)微信小程序

    1.登录企业微信管理后台(https://work.weixin.qq.com/wework_admin/frame) 2.获取企业ID,我的企业>企业信息>企业ID(ww28b3c6e7 ...

  8. 企业微信小程序可用存储空间不足_如何用微信“小程序商城+企业微信”,搭建企业智慧新零售系统?...

    许多企业或是个体商家,都做了微信小程序商城,或者是正打算做小程序商城,但是对于小程序商城开发制作好之后的运营却是一头雾水,不知道怎么运营.今天我们说一说"微信小程序商城+企业微信" ...

  9. 企业微信H5登录流程,以及遇到的问题解决

    企业微信登录 官网链接:[企业微信开发](开始开发 - 文档 - 企业微信开发者中心 (qq.com)) 一.企业微信登录流程 二.疑难杂症 1. 报错:invalid code 解决方案:查看当前应 ...

最新文章

  1. 很安逸的离线API文档查询工具Dash和Zeal
  2. PowerDesigner的一下简单使用技巧
  3. SQL——字段分组合并
  4. html vbs 输入框,HTML_vbs实现的下拉框对应键入值,vbs实现的下拉框对应键入值 - phpStudy...
  5. oracle函数 MIN([distinct|all]x)
  6. 【前端工程师手册】JavaScript作用域拾遗
  7. python turtle用法_Python初学者Turtle库简介
  8. 测试你的杀毒软件实时监控能力!
  9. jqprint 分页打印_JS实现页面打印(整体、局部)
  10. RAID组中的“Foreign”状态磁盘
  11. EF Ccore 主从配置 最简化
  12. meshlab点云转mesh
  13. java 导出word文件,支持导出表格和图片
  14. RFID和NFC的区别
  15. 阿里云oss出现Unable to execute HTTP request: bucket.二级域名.域名: nodename nor servname provided, or not known
  16. [恒指赵鑫] 为什么恒指是2019年最火最受欢迎的交易品种?
  17. 未来可期与君远航--2021年终总结
  18. Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
  19. 选SSD就是选闪存颗粒!全面解析原片/白片/黑片
  20. js 实现微信打飞机小游戏 小练习

热门文章

  1. Math.floor小数不四舍五入
  2. zabbix监控之奥科语音网关M10K电话并发数
  3. Mac技巧之苹果电脑玩war3
  4. 托福作文——《十天突破新托福Essay》
  5. Linux的FTP服务
  6. ORB(Oriented FAST and Rotated BRIEF) 特征点
  7. adams驱动旋转速度,轮子爬台阶Adams中驱动与扭矩的区别
  8. 销售员如何巧妙地提问了解客户真实需求
  9. 快递100发货模板代码,发货前订阅消息推送,发货后直接更新最新物流信息
  10. 华为CE6881交换机密码破解