关于小程序项目结构,框架介绍,组件说明等,请查看微信小程序官方文档,关于以下贴出来的代码部分我只是截取了一些片段,方便说明问题,如果需要查看完整源代码,可以在我的项目库中下载:

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,具体参数如下:

  1. App({
  2. onLaunch: function() {
  3.  
  4. },
  5. globalData: {
  6. url: 'http://localhost:8089/api/LazyOrders',
  7. urlCarts: 'http://localhost:8089/api/Carts',
  8. urlCategory: 'http://localhost:8089/api/Category',
  9. urlMenu: 'http://localhost:8089/api/Menu',
  10. carts: [],
  11. orders: [],
  12. sessionKey: ''
  13. }
  14. })

具体使用:

  1. const app = getApp();
  2.  
  3. /**
  4. * 生命周期函数--监听页面加载
  5. */
  6. onLoad: function(options) {
  7. var _this = this;
  8. util.checkSession();
  9. wx.request({
  10. url: app.globalData.urlCategory,
  11. success: function(res) {
  12. _this.setData({
  13. navLeftItems: res.data.Context,
  14. navRightItems: res.data.Context
  15. })
  16. }
  17. })
  18.  
  19. },

第三:对通用样式抽取独立的CSS文件,pages文件夹下的common文件夹,放置通用样式文件,比如index.wxss,在其他页面的wxss文件直接引用,注意关键字import

  1. @import '../common/index.wxss';

第四:抽取公共方法,在util文件夹下有一个util.js的文件,我在里边新增加了一个方法checkSession,用来检查登录是否过期,添加方法后,在其他页面还不可以直接调用,必须要在module.exports暴露这个方法,才可以在其他地方调用。

  1. const app = getApp()
  2.  
  3. const formatTime = date => {
  4. const year = date.getFullYear()
  5. const month = date.getMonth() + 1
  6. const day = date.getDate()
  7. const hour = date.getHours()
  8. const minute = date.getMinutes()
  9. const second = date.getSeconds()
  10.  
  11. return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  12. }
  13.  
  14. const formatNumber = n => {
  15. n = n.toString()
  16. return n[1] ? n : '0' + n
  17. }
  18.  
  19. module.exports = {
  20. formatTime: formatTime,
  21. checkSession: checkSession
  22. }
  23.  
  24. function checkSession() {
  25. wx.checkSession({
  26. success() {
  27. //session_key 未过期,并且在本生命周期一直有效
  28. console.log('session_key 未过期!')
  29. },
  30. fail() {
  31. // session_key 已经失效,需要重新执行登录流程
  32. wx.login({
  33. success: function(res) {
  34. if (res.code) {
  35. //发起网络请求
  36. wx.request({
  37. url: app.globalData.url,
  38. data: {
  39. code: res.code
  40. },
  41. method: 'POST',
  42. success: function(res) {
  43. console.log(res.data);
  44. app.globalData.sessionKey = res.data;
  45. wx.setStorage({
  46. key: 'sessionKey',
  47. data: res.data,
  48. })
  49. }
  50. })
  51. } else {
  52. console.log('登录失败!' + res.errMsg)
  53. }
  54. }
  55. })
  56. }
  57. })
  58. }

具体使用:

  1. var util = require('../../utils/util.js');
  2.  
  3. /**
  4. * 生命周期函数--监听页面加载
  5. */
  6. onLoad: function(options) {
  7. var _this = this;
  8. util.checkSession();
  9. wx.request({
  10. url: app.globalData.urlCategory,
  11. success: function(res) {
  12. _this.setData({
  13. navLeftItems: res.data.Context,
  14. navRightItems: res.data.Context
  15. })
  16. }
  17. })
  18. },

以上是对小程序前端整理过程中发现的问题,当然还有对后端Api整理过程中发现的问题,放到下一篇再做介绍。

C#开发微信小程序(二)的更多相关文章

  1. WordPress 网站开发“微信小程序“实战(二)

    原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...

  2. 用Vue.js开发微信小程序:开源框架mpvue解析

    前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...

  3. 利用WordPress REST API 开发微信小程序从入门到放弃

    自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...

  4. 快速开发微信小程序

    image.png 最近婷主在做微信小程序.自己的微信公众号也需要添加点料,乘着这次放假,把微信小程序研究了下.虽然没有做什么很强大的功能,不过好歹自己的公众号也有了微信小程序.够用即可. 1.需要先 ...

  5. 开发微信小程序入门前

    开发微信小程序入门前 百牛信息技术bainiu.ltd整理发布于博客园 2016年09月21日晚 微信发不了微信“小程序”的内测版,一时间整个互联网都炸了锅.个大新闻.论坛都在讨论这个事情. 作为互联 ...

  6. 基于小程序云Serverless开发微信小程序

    本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...

  7. Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)

    一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...

  8. 如何用TypeScript开发微信小程序

    微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...

  9. 关于开发微信小程序后端linux使用xampp配置https

    关于开发微信小程序后端linux使用xampp配置https 背景 由于最近开发微信小程序,前后端交互需要使用https协议,故需要配置https服务 服务器环境 服务器系统 ubuntu 环境 xa ...

随机推荐

  1. 小程序如何判断用户(后台使用Django)

    小程序如何判断用户是哪个: 有Web开发经验的都知道,客户端用户发起请求,服务器收到请求后,可以通过把用户user_id记录到session里,然后下次通过session里面的user_id来辨别是哪 ...

  2. Linux中docker的使用二

    容器下安装jdk和tomcat:通过挂载文件的方法,把宿主机上的文件挂载到容器中,然后解压到opt目录下:tar -zxvf 包名 -C /opt//opt目录下drwxr-xr-x 8 10 143 ...

  3. 使用Feign访问接口

     添加主要依赖 使用Feign访问接口的配置,如果服务不在Eureka上,可以不加Eureka的依赖,用在FeignClient上指定url的方式访问 dependencies { compile(' ...

  4. WebGPU学习(四):Alpha To Coverage

    大家好,本文学习与MSAA相关的Alpha To Coverage以及在WebGPU中的实现. 上一篇博文 WebGPU学习(三):MSAA 学习Alpha To Coverage 前置知识 WebG ...

  5. Mysql 执行计划以及常见索引问题总结

    Mysql 执行计划以及常见索引问题总结

  6. 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门

    点击下载<Knative 云原生应用开发指南> 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注.Knative 在 Kubernetes 之上提供了一套完整的应 ...

  7. iOS开发之UIWebView

    转自:http://www.cnblogs.com/zhuqil/archive/2011/07/28/2119923.html UIWebView是iOS sdk中一个最常用的控件.是内置的浏览器控 ...

  8. React Context上下文

    目录 前言 一 context旧版使用步骤 1.1 根组件childContextTypes属性 1.2 根组件getChildContext方法 1.3 子组件contextTypes静态属性 1. ...

  9. 使用 Spring 提供的 restTemplate 完成 Http 服务消费

    RestTemplate 介绍 RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程 Http 服务的方法,能够大大提高 ...

  10. Pyhton表白代码——浪漫圣诞节

    圣诞节即将到了,所以这回通过turtle模块来编写一个表白的小程序 开发时间:2019-12-15 开发工具:Sublime 开发模块:turtle 这里用到了turtle库的相关知识,如果不熟悉可以 ...