C#开发微信小程序(二)
关于小程序项目结构,框架介绍,组件说明等,请查看微信小程序官方文档,关于以下贴出来的代码部分我只是截取了一些片段,方便说明问题,如果需要查看完整源代码,可以在我的项目库中下载:
https://dev.tencent.com/u/dwBurning/p/ReallyWantToApi/git
https://git.dev.tencent.com/dwBurning/LazyOrders.git
继上一篇写微信小程序的文章已经有一年多了,当时也是浅尝辄止的学习了一下,源代码也没有公布,因为写的不规范,容易误导大家,刚好最近有同学在评论里问我要源代码,于是,又重新整理完善了一番,在整理的过程中,发现了很多的小问题,所以再写一篇,供大家参考。
第一:目录结构,从这个截图可以看到,这个小程序有三个菜单(tabBar),而最初的版本,我所有的page都在pages文件夹下,这样整个程序运行起来也没什么问题,只是很不规范,看起来不舒服,于是,我调整了目录结构。每个菜单下的page放在对应的文件夹下,分别为home,carts,mine

第二:请求地址,最初的版本,每一次发起http请求,都是在单独的页面写了url路径,当然可能当时是复制的,所以一旦要修改这个url地址的时候,就要到各个页面去修改,这个是大忌,所以此次更改,我将url地址设置成了全局变量,修改的时候改这一个地方就可以了。
在App.js中增加全局变量globalData,具体参数如下:
App({
onLaunch: function() {
},
globalData: {
url: 'http://localhost:8089/api/LazyOrders',
urlCarts: 'http://localhost:8089/api/Carts',
urlCategory: 'http://localhost:8089/api/Category',
urlMenu: 'http://localhost:8089/api/Menu',
carts: [],
orders: [],
sessionKey: ''
}
})
具体使用:
const app = getApp(); /**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
var _this = this;
util.checkSession();
wx.request({
url: app.globalData.urlCategory,
success: function(res) {
_this.setData({
navLeftItems: res.data.Context,
navRightItems: res.data.Context
})
}
}) },
第三:对通用样式抽取独立的CSS文件,pages文件夹下的common文件夹,放置通用样式文件,比如index.wxss,在其他页面的wxss文件直接引用,注意关键字import
@import '../common/index.wxss';
第四:抽取公共方法,在util文件夹下有一个util.js的文件,我在里边新增加了一个方法checkSession,用来检查登录是否过期,添加方法后,在其他页面还不可以直接调用,必须要在module.exports暴露这个方法,才可以在其他地方调用。
const app = getApp()
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
module.exports = {
formatTime: formatTime,
checkSession: checkSession
}
function checkSession() {
wx.checkSession({
success() {
//session_key 未过期,并且在本生命周期一直有效
console.log('session_key 未过期!')
},
fail() {
// session_key 已经失效,需要重新执行登录流程
wx.login({
success: function(res) {
if (res.code) {
//发起网络请求
wx.request({
url: app.globalData.url,
data: {
code: res.code
},
method: 'POST',
success: function(res) {
console.log(res.data);
app.globalData.sessionKey = res.data;
wx.setStorage({
key: 'sessionKey',
data: res.data,
})
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}
})
}
具体使用:
var util = require('../../utils/util.js');
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
var _this = this;
util.checkSession();
wx.request({
url: app.globalData.urlCategory,
success: function(res) {
_this.setData({
navLeftItems: res.data.Context,
navRightItems: res.data.Context
})
}
})
},
以上是对小程序前端整理过程中发现的问题,当然还有对后端Api整理过程中发现的问题,放到下一篇再做介绍。
C#开发微信小程序(二)的更多相关文章
- WordPress 网站开发“微信小程序“实战(二)
原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 利用WordPress REST API 开发微信小程序从入门到放弃
自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...
- 快速开发微信小程序
image.png 最近婷主在做微信小程序.自己的微信公众号也需要添加点料,乘着这次放假,把微信小程序研究了下.虽然没有做什么很强大的功能,不过好歹自己的公众号也有了微信小程序.够用即可. 1.需要先 ...
- 开发微信小程序入门前
开发微信小程序入门前 百牛信息技术bainiu.ltd整理发布于博客园 2016年09月21日晚 微信发不了微信“小程序”的内测版,一时间整个互联网都炸了锅.个大新闻.论坛都在讨论这个事情. 作为互联 ...
- 基于小程序云Serverless开发微信小程序
本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...
- Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)
一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...
- 如何用TypeScript开发微信小程序
微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...
- 关于开发微信小程序后端linux使用xampp配置https
关于开发微信小程序后端linux使用xampp配置https 背景 由于最近开发微信小程序,前后端交互需要使用https协议,故需要配置https服务 服务器环境 服务器系统 ubuntu 环境 xa ...
随机推荐
- 感觉async await 异步编程 并不能提升性能?
我有2个方法 代码相同 都是执行上传文件IO操作 一个同步 一个异步 接着我用POSTMAN 分别用200个线程 去同时测试2个接口 结果很意外 2个接口 同时执行完成的速度 异步更慢 之前经常看别人 ...
- 前后端vue和django配置
django pip源更换 虚拟环境配置 目录和日志配置 数据库配置 用户模块自定义 异常,响应配置 xadmin vue vue基础配置 vue高级配置 vue this问题和样式配置
- C语言博客作业10
一.本周教学内容&目标 第4章 循环结构 4.5 综合介绍循环结构的程序设计,涉及到多个典型算法.要求学生能够根据实际情况,选择合适的算法.合理的循环结构,熟练的编写程序. 二.本周作业头 这 ...
- 《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用do ...
- 在华为云ECS上手工通过Docker部署tomcat
本文介绍了如何在华为云上ECS上手工通过Docker部署tomcat,并提供了Docker常用操作 一.环境准备 ECS:操作系统版本: CentOS Linux release 7.6.181 ...
- 链接脚本(Linker Script)用法解析(一) 关键字SECTIONS与MEMORY
1.MEMORY关键字用于描述一个MCU ROM和RAM的内存地址分布(Memory Map),MEMORY中所做的内存描述主要用于SECTIONS中LMA和VMA的定义. 2.SECTIONS关键字 ...
- jeecg培训第一课(代码生成与权限分配)
问题描述:进口部要完成一票进口报关单的增删改查,操作员张三登录只能增删改张三的报关单,操作员李四登录只能增删改李四的报关单, 部门主管王五登录能查看张三和李四的报关单,但不能修改删除.操作员能提交报关 ...
- css3(2)
旋转: 2D:transform: rotate()——进行旋转,括号内部写旋转角度,默认顺时针旋转.允许负值,元素将进行逆时针旋转, translate()——从当前位置进行移动,括号内为x,y值. ...
- 【Web技术】334- yarn、npm、cnpm 三者如何优雅的在一起使用 ?
前端得包管理你有过几个? 一位用不好包管理器的前端,是一个入门级前端,一个用不好webpack的前端,是一个初级前端 三个包管理器是可以一起用的,只要你够胆大心细,就没任何问题! 在javeScrip ...
- Linux源码编译安装httpd
Linux安装软件采用源码编译安装灵活自由,适用于不同平台,维护也十分方便. 源码编译的安装方式一般由3个步骤组成: 1.配置(configure) 2.编译(make) 3.安装(make inst ...