微信小程序-项目结构

欢迎大家关注我的个人微信订阅号 A321之旅

A321之旅

项目结构看着不起眼,但对一个项目而言是极其重要的。它体现了项目的设计思想,自顶向下的规划,各模块组件间的划分以及对应用场景的预判等。好的项目结构会导致开发效率大幅提升,很多问题在进行项目结构划分时就已经有了基本判断和思路,所以后续遇到实际问题时也能快速解决。项目结构也是一个持续完善的过程,随着所遇场景的复杂化也会变得越来越复杂,越来越专属。当另一个项目进行参考项目结构时,就需要进行相应的裁剪。

项目结构

当前我的小程序开发还是很简单的,延续着微信小程序的基本结构,只是一些细节点做了约定。

  • 截图
    这是以截图的方式描述项目结构,更加概略一些,但有些细节无法体现。
    在这里插入图片描述
  • tree查看
    这是通过 tree 指令获得的目录结构,并进行了删减去重,能体现出更细节的结构内容。
.
├── app.js
├── app.json
├── app.wxss
├── components
│   └── scroll-view-pulldown
│       ├── scroll-view-pulldown.js
│       ├── scroll-view-pulldown.json
│       ├── scroll-view-pulldown.wxml
│       └── scroll-view-pulldown.wxss
├── pages
│   ├── authorize
│   │   └── pages
│   │       ├── authorize.js
│   │       ├── authorize.json
│   │       ├── authorize.wxml
│   │       └── authorize.wxss
│   ├── imgs
│   ├── logs
│   ├── tabBar
│   │   ├── focus
│   │   ├── index
│   │   └── mine
│   └── template
│       ├── banner-template.wxml
│       └── banner-template.wxss
├── project.config.json
├── sitemap.json
└── utils
    ├── ald-stat.js
    ├── ald-stat-conf.js
    ├── request.js
    └── util.js

系统文件

系统文件是指微信所提供的各个文件,网上有很多解释和说明,这里只是对重要的部分进行简略描述,有个整体印象即可,并对其中有意思的部分做出个人理解。

参考文档:

https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html

  • project.config.json
    此为小程序开发者工具自动生成的,是开发者工具所需要的配置信息,一般不需要修改。但在使用其他项目作为初始模板时,可以在此手动修改 appidprojectname 信息,也可以通过工具的界面进行修改。

  • app.json
    本文件是对微信小程序进行全局配置,作用域为整个小程序,但各个页面下的.json文件内的配置高于此优先级,相同项会以页面所对应的.json文件为准,覆写型。一般作为全局的默认配置项。

  • app.wxss
    本文件是全局性的样式设置,相同项会被页面的.wxss文件内容覆写,一般作为全局的默认样式或共性样式,如提示框、状态颜色、背景色等。

  • app.js
    项目的入口文件,即微信小程序从此开始执行,通过App创建应用对象。一般用于引入公共第三方库、通用工具内容、各环境访问地址切换等。
    各环境访问地址切换应该有更好的方式,等我想明白了再更新这里,现在是我简单粗暴的用注释的方式。

  • sitemap.json
    通过此文件允许微信进行搜索,当开发者允许微信索引时,微信会通过内部爬虫的形式,为小程序的页面内容建立索引。当用户的搜索词条触发该索引时,小程序的页面将可能展示在搜索结果中。爬虫访问小程序内页面时,会携带特定的 user-agent:mpcrawler 及场景值:1129。这样就能知道是爬虫在访问了。如果没有 sitemap.json ,则默认为所有页面都允许被索引。一般而言,都是使用默认项,即允许全部页面被索引。

  • pages
    小程序的各个页面的所在目录,一般会以各个子模块或功能的名称作为子目录。可通过右键菜单进行创建,在创建 Page 时,也建议通过右键菜单进行创建,这样可以自动同步更新 app.json 中的 pages 内容。等后续讲到分包加载时,需要考虑将 pages 的内容移动到 subPackages 中。手工复制后,再修改 app.json 的内容是一样的。

    • pages/*.wxml
      WXML(WeiXin Markup Language)是一套标签语言,用于构建页面结构的。通过各个组件(view等)构建页面结构,通过 {{message}} 进行数据绑定,通过 wx:for="{{array}}" 进行列表循环,通过 wx:if="{{view == 'WEBVIEW'}}" 实现条件判断。
      参考文档 :
      https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/

    • pages/tabBar
      这是底部导航组件的所在位置,很常见的一个功能。建议在微信小程序的底部导航栏进行显示的页面都在此下创建。底部导航组件可以显示的最少2个,最多5个。
      在这里插入图片描述
      通过在 app.json 中的 tabBar 声明底部导航栏显示的页面。

"tabBar": {
  "list": [
    {
      "pagePath": "pages/tabBar/index/index",
      "text": "首页",
      "iconPath": "pages/imgs/index.png",
      "selectedIconPath": "pages/imgs/index_selected.png"
    },

个性约定

个性约定是指结合项目自身的个性化约定,说明这么做的目的及优劣势。

  • utils
    统一存放工具类,包含自定义的工具类和外部引用的一些工具类

    • ald-stat*.js
      引入的第三方阿拉丁统计类

    • request.js
      用于与后台服务交互,核心是 getReuqest, postReuqest, requestAll 三个方法,使用 wx.request 调用后台。

    • util.js
      常用的工具类封装。

  • components
    统一存放自定义组件,以各个自定义组件的名字命名目录,自定义组件的名字以连字符 -连接。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值