1、前言

在大家眼中,有没有觉得女神就像冰山美人一样?在聊天中对你是很高冷,或者是忽冷忽热,爱理不理。很多男生面对这个问题都束手无策,或者女神不理你时,又急着发短消息过去了,结果女神根本不理睬你。那怎么办呢?

其实女神也一样,是情绪动物,她的情感由情绪控制着,不会像男人那样理性、讲逻辑。你说服不了她喜欢你,但通过调动她的情绪,你可以让她喜欢你。所以会一些调情幽默的恋爱话术尤为重要,如果你能做到,让女人快乐,开怀大笑,有时候又会悲伤,让她的情绪为你所动,那么她对于你投入的情感会是有很多的。

2、技术栈

  1. uniApp
  2. vue3
  3. 微信开发者工具
  4. Hbuilder X
  5. axios
  6. uView ui框架

3、uniApp简介

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
uni-app在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序开发框架(详见)、更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,你都可以快速交付,不需要转换开发思维、不需要更改开发习惯。

我们这里主要将一套代码分别部署到h5和微信小程序上。

4、vue3简介

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统,只关注视图层,易于上手。所有东西都是响应式的。

4.1 vue3的优势

  1. 响应式系统提升
  2. 虚拟DOM重写
  3. 更快,性能比Vue2快1.2~2倍(diff方法优化、静态提升、时间侦听器缓存、ssr渲染)
  4. 更小,按需编译,体积比Vue2更小
  5. 组合API,加强API设计一致性,实现逻辑模块化和重用
  6. 加强TypeScript支持
  7. 暴露了自定义渲染API
  8. 提高自身可维护性

5、微信开发者工具简介

以下来自微信官方文档:

为了帮助开发者简单和高效地开发和调试微信小程序,我们在原有的公众号网页调试工具的基础上,推出了全新的 微信开发者工具,集成了公众号网页调试和小程序调试两种开发模式。
使用公众号网页调试,开发者可以调试微信网页授权和微信JS-SDK 详情
使用小程序调试,开发者可以完成小程序的 API 和页面的开发调试、代码查看和编辑、小程序预览和发布等功能。
为了更好的开发体验,我们从视觉、交互、性能等方面对开发者工具进行升级,推出了 1.0 版本 下载。使用过程中若有问题或建议,可前往 #微信开发者工具社区 发帖反馈交流。

6、Hbuilder X

HBuilderX,H是HTML的首字母,Builder是构造者,X是HBuilder的下一代版本。我们也简称HX。 HX是轻如编辑器、强如IDE的合体版本。

让我们简单了解下HX的特点

  1. 轻巧 仅10余M的绿色发行包(不含插件)
  2. 极速 不管是启动速度、大文档打开速度、编码提示,都极速响应 C++的架构性能远超Java或Electron架构
  3. vue开发强化 HX对vue做了大量优化投入,开发体验远超其他开发工具 详见
  4. 小程序支持 国外开发工具没有对中国的小程序开发优化,HX可新建uni-app 小程序等项目,为国人提供更高效工具
  5. markdown利器 HX是唯一一个新建文件默认类型是markdown的编辑器,也是对md支持最强的编辑器 HX为md强化了众多功能,请务必点击【菜单-帮助-markdown语法示例】,快速掌握md及HX的强化技巧!
  6. 清爽护眼 HX的界面比其他工具更清爽简洁,绿柔主题经过科学的脑疲劳测试,是最适合人眼长期观看的主题界面
  7. 强大的语法提示 HX是中国唯一一家拥有自主IDE语法分析引擎的公司,对前端语言提供准确的代码提示和转到定义(Alt+鼠标左键)
  8. 高效极客工具 更强大的多光标、智能双击…让字处理的效率大幅提升 详见,
  9. 更强的json支持 现代js开发中大量json结构的写法,HX提供了比其他工具更高效的操作

7、axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

特性

  1. 从浏览器中创建 XMLHttpRequests
  2. 从 node.js 创建 http 请求
  3. 支持 Promise API
  4. 拦截请求和响应
  5. 转换请求数据和响应数据
  6. 取消请求
  7. 自动转换 JSON 数据
  8. 客户端支持防御 XSRF

8、uView ui框架

uView是uni-app生态专用的UI框架,uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码, 可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台(引言自uni-app网)。

9、创建微信小程序项目

9.1 注册账号

在微信公众平台注册小程序,官网微信公众平台




按之前填的邮箱进去激活,然后完善相关信息


到此为止,我们的小程序算是注册完成

9.2 查看小程序AppID(小程序ID),后面项目提交代码需要用到


10、创建uniapp项目

10.1 在Hbuilder X新建一个uniapp项目


10.2 配置vue3语法

10.3 配置微信小程序appId

appId获取参考9.2步骤

10.4 安装axios依赖

npm i axios

在控制台执行以上代码

11、引入uView ui框架

11.1 导入uView插件

插件官网uView

11.2 main.js 引入 vk-uview-ui

import App from './App'// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({...App
})
app.$mount()
// #endif// #ifdef VUE3
import {createSSRApp
} from 'vue'
// 引入 uView UI
import uView from './uni_modules/vk-uview-ui';
export function createApp() {const app = createSSRApp(App)// 使用 uView UIapp.use(uView)return {app}
}
// #endif

11.3 App.vue 引入基础样式(注意style标签需声明scss属性支持)

<script>export default {onLaunch: function() {console.log('App Launch')},onShow: function() {console.log('App Show')},onHide: function() {console.log('App Hide')}}
</script><style lang="scss">/* 引入uview */@import "./uni_modules/vk-uview-ui/index.scss";/*每个页面公共css */html,body {width: 100%;height: 100%;}
</style>

11.4 uni.scss 引入全局 scss 变量文件

/*** 这里是uni-app内置的常用样式变量** uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App**//*** 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能** 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件*//* 引入uview */
@import "@/uni_modules/vk-uview-ui/theme.scss";
/* 颜色变量 *//* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色/* 边框颜色 */
$uni-border-color:#c8c7cc;/* 尺寸变量 *//* 文字尺寸 */
$uni-font-size-sm:12px;
$uni-font-size-base:14px;
$uni-font-size-lg:16;/* 图片尺寸 */
$uni-img-size-sm:20px;
$uni-img-size-base:26px;
$uni-img-size-lg:40px;/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:20px;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:26px;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:15px;

12、配置axios

12.1 创建axios适配器,适用于uniapp

import axios from 'axios';
import settle from 'axios/lib/core/settle';
import buildURL from 'axios/lib/helpers/buildURL';// axios适配器
axios.defaults.adapter = function(config) { return new Promise((resolve, reject) => {uni.request({method: config.method.toUpperCase(),url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),header: config.headers,data: config.data,dataType: config.dataType,responseType: config.responseType,sslVerify: config.sslVerify,complete: function complete(response) {response = {data: response.data,status: response.statusCode,errMsg: response.errMsg,header: response.header,config: config};settle(resolve, reject, response);}})})
}export default axios

12.2 创建axios拦截器

//封装axios拦截器
import axios from './axios-adaptor.js'const service = axios.create({baseURL: 'https://yinfeng.work',timeout: 5000, // request timeoutcrossDomain: true,headers: {'Content-Type': 'application/json; charset=utf-8'}
})
// 添加请求拦截器
service.interceptors.request.use(config => {config.headers['source'] = 'wx'return config},error => {return Promise.reject(error)}
)
// 添加响应拦截器
service.interceptors.response.use(response =>response.data,error => {return Promise.resolve(error)}
)
export default service

12.3 封装后端api接口

import service from './http.interceptor.js'// 封装后端api接口
const api = {// 话术获取getLoveChat: params => service.post('/open/getLoveChat', params),// 获取轮播图getBanner: () => service.post('/open/getBanner')
}export default api

12.4 后端接口文档

参考这篇博客撩妹神器恋爱话术库,主要用到恋爱话术获取接口。

13、编写核心页面

13.1 template html代码编写

<template><view class="content"><u-swiper :list="bannerList" :effect3d="true" @click="clickBanner" height="245" bg-color="#e7f6ff"img-mode="aspectFit"></u-swiper><view class="search"><u-search bg-color="#fff" v-model="searchValue" shape="round" placeholder="请输入女生说的话" :clearabled="true":show-action="true" @search="getLoveChat" @custom="getLoveChat" @clear="clear":action-style="searchStyle" /></view><view class="tag" v-if="!list.length"><u-tag text="恋爱话术" shape="circle" @click="tagClick('恋爱话术')" /><u-tag text="土味情话" shape="circle" color="#ff0000" @click="tagClick('土味情话')" /><u-tag text="情侣助手" shape="circle" @click="tagClick('情侣助手')" /></view><view class="list"><view v-for="item in list" :key="item.female" class="item"><view class="title"><u-icon :style="iconStyle" size="1.5rem" name="/static/imgs/question.png" />:<text class="female">{{item.female}}</text></view><view class="answer" v-for="answer in item.answers" :key="answer.answer"><u-icon :style="iconStyle" v-if="answer.gender==1" size="1.5rem" name="/static/imgs/man.png" /><u-icon :style="iconStyle" v-if="answer.gender==2" size="1.5rem" name="/static/imgs/woman.png" /><text class="answerItem">: {{answer.answer}}</text><u-button class="answerBtn" type="primary" plain size="mini" @click="copy(answer)">复制</u-button></view></view></view></view>
</template>

13.2 核心方法编写,主要使用vue3语法

<script>import {toRefs,reactive,onMounted} from 'vue'import api from '../../axios/http.api.js'export default {name: 'index',setup() {const state = reactive({// 输入框的值searchValue: '',// 输入框样式searchStyle: {color: '#ff0000',border: '1px solid #DD6161',fontWeight: '500',padding: '1px',borderRadius: '15%',},// 图标样式iconStyle: {position: 'relative',top: '6px'},// 话术列表list: [],loading: false,// banner图片数组bannerList: [],})const methods = reactive({// 获取话术列表getLoveChat: async () => {state.loading = truelet res = await api.getLoveChat({"count": 16,"key": state.searchValue,"page": 1})state.loading = falseif (!res.code) {}state.list = res.dataconsole.log(res)},// 复制话术到剪切板copy(item) {uni.setClipboardData({data: item.answer})},// 标签点击tagClick(value) {state.searchValue = valuemethods.getLoveChat()},// 轮播图点击clickBanner(index) {// 跳转到内部窗口并且传递链接uni.navigateTo({url: `/component/WebView/WebView?url=${state.bannerList[index].hrefUrl}`})},// 清空输入框clear() {state.searchValue = ''state.list = []}})onMounted(async () => {// 获取剪切板内容uni.getClipboardData({success: function(res) {state.searchValue = res.data;}});// 获取bannerlet res = await api.getBanner()if (!res.code) {return}state.bannerList = res.data.map(item => {return {image: item.imgUrl,...item,}})// 只在微信小程序才显示分享菜单// #ifdef MP-WEIXINwx.showShareMenu({withShareTicket: true,menus: ['shareAppMessage', 'shareTimeline']})// #endif})return {...toRefs(state),...toRefs(methods)}}}
</script>

13.3 css样式代码编写

<style lang="less" scoped>.content {background-color: #f5ffff;padding: 10px 18px 0;font-size: 15px;font-family: cursive;height: 100%;.search {padding-top: 18px;}.tag {padding: 10px;display: flex;justify-content: space-between;}.list {height: calc(100vh - 230px);overflow-y: auto;margin-top: 10px;padding-top: 5px;.item {box-shadow: 0 2px 6px 2px rgba(255, 0, 0, 0.3);padding: 8px 0 10px;line-height: 27px;background-color: #ffebeb;margin-bottom: 15px;border-radius: 8px;letter-spacing: 2px;.title {padding-left: 10px;.female {font-weight: 500;color: #DD6161;font-size: 19px;}}.answer {position: relative;padding: 0 50px 0 10px;.answerBtn {position: absolute;bottom: 0;right: 5px;}}}}}
</style>

14、封装webView,用于轮播图页面跳转

<template><view><web-view :src="url"></web-view></view>
</template><script>import {toRefs,reactive,onMounted} from 'vue'export default {name: 'web',data() {return {url: ''}},onLoad(e) {// 获取传递过来的链接this.url = e.url}}
</script><style></style>

15、pages.json配置页面路由

15.1 配置核心页面路由

{"path": "pages/index/index","style": {"navigationBarTitleText": "恋爱话术","backgroundColor": "#eeeeee","enablePullDownRefresh": false}
}

15.2 配置webView路由

{"path" : "component/WebView/WebView","style" :                                                                                    {"navigationBarTitleText": "","enablePullDownRefresh": false}}

15.3 完整路由配置如下

16、微信小程序测试

16.1 编译并启动


16.2 在微信开发者工具测试下功能

17、h5页面测试

17.1 编译并启动h5页面

17.2 在浏览器点击测试下功能,F12打开调试模式

18、发布微信小程序

18.1 编译代码


18.2 微信开发者工具上传代码

18.3 小程序后台提交审核


18.4 审核过后即可在这里点击发布


18.4 配置小程序合法域名


18.6 兄弟们可以用微信扫码体验一下

19、发布h5页面进行托管



兄弟们可以打开以下链接体验一下

https://static-d3218181-4117-4af2-8b08-5fa0b2dc6760.bspapp.com

20、源码地址

// 下了源码的老铁麻烦点个star哈
https://gitee.com/yinfeng-code/love-chat-wx.git

肝文不易,老铁们三连一波支持下吧,谢谢大家了~
下了源码的老铁麻烦点个star哈

情人节福利,恋爱话术微信小程序它来了(开源,看了就懂~,2万字真香警告)相关推荐

  1. 微信小程序:全新强大的恋爱话术微信小程序源码土味情话视频号or自媒体操作项目

    你猜的不错,这就是一款恋爱话术小程序 该款小程序相对来说还是挺强大的 而且还融合了小编前段时间发布的一款土味情话在里面 这款小程序基本分段都是和外面几千块几百块的分段是一样的 如有分段是: 开场阶段丨 ...

  2. 土味情话恋爱话术微信小程序源码

    简介: 这是一款土味情话版本的恋爱话术小程序源码 内涵多种土味情话供你选择,让你在和小美眉聊天的时候再也不怕冷场了 该小程序免服务器和域名,低成本 安装方法也是特别的简单,只需要上传微信开发者工具即可 ...

  3. 恋爱话术微信小程序源码下载土味情话,恋爱导师支持多种流量主模式

    你猜的不错,这就是一款恋爱话术小程序 该款小程序相对来说还是挺强大的 比之前小编发布的另外一款还强大 另外一款有的这一款都有,另外这一款有的另外一款确没有 这款小程序基本分段都是和外面几千块几百块的分 ...

  4. 微信小程序开发多少钱 怎么看价格成本

    按照功能来看,很多人还是感觉app功能会比较全面,但是小程序的功能也逐渐完善,就开发和维护成本来看,也是小程序受欢迎的原因之一.有些不可替代的事实不得不承认,APP游戏是小程序"玩" ...

  5. 以微信小程序相册为例,看Serverless DevOps最佳实践

    导语 | 近日,云+社区技术沙龙"高效智能运维"圆满落幕.本期沙龙围绕运维展开了一场技术盛宴,从AIOps.Serverless DevOps.蓝鲸PaaS平台.K8S等分享关于业 ...

  6. 微信小程序商城怎么推广?看这里!

    "在疫情期间,许多商户已经把目标瞄准了线上,同时也发现了小程序商城这个新"商机". 微信小程序无需下载和安装,即用即走,也不占空间,打开微信就能搜索到自己想要的,能极大的 ...

  7. Spring Boot后端+Vue前端+微信小程序,完整的开源解决方案!

    项目简介 一个小商场系统,包括: 后端:Spring Boot 管理员前端:Vue 用户前端:微信小程序 功能介绍 1.小商城 首页 专题列表.专题详情 分类列表.分类详情 品牌列表.品牌详情 新品首 ...

  8. Mpvue+koa开发微信小程序——腾讯云开发环境的搭建及部署实现真机测试

    为什么写这篇文章? 之前写过一篇文章:微信小程序开发错误:LoginError {type: "ERR_WX_GET_USER_INFO"}解决方法 有的伙伴在这篇文章中评论为什么 ...

  9. 基于uni-app开发微信小程序__手牵手带你开发【懂你找图】项目

    前戏 某一天的夜里,敲完了代码之后便直接倒在床上睡着了,醒来时只记得梦里的一句话:"想要成为高手,就必须要大量实践,大量做项目,必须要把自己不会的东西全部吃透,不要得过且过.",猛 ...

最新文章

  1. 5 个关于 API 中日期和时间设计规则
  2. [转]SQL交叉表实例
  3. java JUC线程池:Executors.newSingleThreadExecutor代码示例
  4. ant vue 兼容性问题_ant design for vue 关于table的一些问题
  5. 机器人最新天赋符文天赋加点图_常德2020中小学机器人竞赛开赛 286名选手现场比拼技能...
  6. python装饰器带参数函数二阶导数公式_一文搞定Python装饰器,看完面试不再慌
  7. Cognos访问权限之让拒绝更友善
  8. ArcGIS10.8版本的下载安装及其注意事项
  9. B站科技区 up主 关注排名
  10. 电子元器件封装设计规范
  11. Redis(测试连接, 五大数据类型,三种特殊数据类型)
  12. 高级版的 jvisualvm :Spring Boot Admin 监控 Spring Boot 微服务项目
  13. CC1310 WOR如何设置几秒钟醒一次
  14. SMTP与POP的默认端口号
  15. stm32调试内存越界情况
  16. 2016年8月28日 星期日 --出埃及记 Exodus 16:29
  17. 效率提升5倍不止,弘玑RPA助力上海自贸区临港新片区政务一体化平台
  18. 【超详细Scratch教学课件分享】简单倒计时
  19. 毕业论文之转化为三线表格(wps)
  20. 关于中国2008年CPI指数---快吃不起饭了

热门文章

  1. python慕课笔记 Python语言程序设计 嵩天笔记整理
  2. 在python语言中ipo模式不包括_下面不是IPO模式的一部分的是()_学小易找答案
  3. Anaconda学习总结
  4. LVTTL、LVCOMS、SSTL和HSTL接口简单介绍
  5. 蝙蝠侠oracle漫画,DC6月 蝙蝠侠与猫女的婚礼及联动 刊物简介和封面
  6. 设备在升级界面文字或图像方向偏转问题修改方案(RK3399方案)
  7. Java练习题__删除公共字符
  8. 【软考】 5 计算机网络
  9. 链家网页爬虫_分享最近做的一个链家二手房爬虫和对爬到的数据进行可视化分析的案例...
  10. CCPC 2050 万人编程竞赛热身赛:1001 赶火车