简单了解微信小程序的目录结构


Posted in Javascript onJuly 01, 2019

前言

在开发小程序之前,我们首先需要对其目录结构进行了解,以便于提升开发效率。

我们使用微信开发者工具构建一个小程序项目,我们可以看到目录下生成了件。

  • ① 以.json为后缀的JSON配置文件;
  • ② 以.wxml为后缀的WXML模板文件,其可以看做是一个简洁的HTML页面,略有不同的则是文件后缀以及其中的部分标签不同;
  • ③ 以.wxss为后缀的WXSS样式文件,也可以看做一个CSS样式文件;
  • ④ 以.js为后缀的JS脚本文件。

简单了解微信小程序的目录结构

在上图的示例中,我们可以看到根目录下有JS、JSON、WXSS类型文件,这是作为全局配置;而pages/index目录下的四类文件是对具体的页面进行详细设置。

由此可以看出这四类文件在小程序中负责不同的功能,它们在不同的目录下扮演不同的角色。接下来,我们将详细说明四类文件的作用。

1JSON配置

在小程序中,JSON是一种数据格式,其并不是编程语言,它用于配置静态的属性。我们可以看到在根目录下有app.json、project.config.json、以及sitemap.json,在pages/index下有index.json。前三种是对整个小程序的全局配置,而后一种是对具体页面的配置。接下来,我们对其做详细说明。

①、app.json配置文件

其作为当前小程序的全局配置,包括配置页面路径列表、全局默认窗口表现、网络超时时间、底部tab栏、小程序接口权限相关设置等。

注:在json文件中是不能加注释的,此处只为了解释,因此在使用过程中切勿加注释,其他相关属性查看官方文档。

简单了解微信小程序的目录结构

{
 /**
  * 页面路径列表
  * 用于指定小程序由那些页面组成,每一项都对应一个页面的路径。
  * 数组列表中的第一项代表小程序的首页。
 */ 
 "pages": [
  "pages/index/index"
 ],
 /**
  * 全局默认窗口表现
  * 用于设置小程序的状态栏、导航条、标题、窗口背景颜色
 */ 
 "window": {
  "navigationBarBackgroundColor": "#fff",//导航栏背景颜色
  "navigationBarTitleText": "MiniProgrameDemo",//导航栏标题文字内容
  "navigationBarTextStyle": "black"//导航栏标题颜色,仅支持black/white
 },
 //底部tab栏
 "tabBar": {
  "list": [//tab的列表,最少2个,最多5个
   {
    "pagePath": "pages/index/index",//页面路径
    "text": "首页"//tab上按钮文字
   },
   {
    "pagePath": "pages/index/index",
    "text": "第二个首页"
   }
  ]
 },
 //配置小程序及其页面是否允许被微信索引,若没有该配置,则默认所有页面都允许被索引
 "sitemapLocation": "sitemap.json"
}

②、project.config.json工具配置

通常我们在使用各类开发工具时,都会根据自己的喜好做一些简单的配置,如界面配置成护眼模式等。但我们更换电脑后,需要重新配置或导入以前的配置文件,而小程序开发者工具使用project.config.json来统一管理,我们在不同的电脑上导入同一个项目的代码包后,不需要再进行配置。

一般我们会对项目设置(setting)中的是否启用es6转es5(es6)、上传代码时样式是否自动补全(postcss)、是否检查安全域名和TLS版本(URLCheck)等来进行配置。
注:我们可以通过开发者工具右上角的【详情】按钮来快速配置。

简单了解微信小程序的目录结构

③、sitemap配置

小程序提供了配置小程序及其页面是否允许被微信索引的功能,我们可以通过配置一些索引规则来约束页面是否能被索引,使其不能被微信索引。若没有配置该项,则默认所有页面都允许被索引。

注:其他相关配置信息请参照官方文档设置。

{
 "rules": [{//索引规则列表
 "action": "allow",//页面是否能被索引,取值仅限allow、disallow
 "page": "*"//*表示所有页面,不能作为通配符使用
 }]
}

④、index.json页面配置

如果我们想设置具体的某个页面的属性,则可以在相应页面的JSON文件中自定义配置。

简单了解微信小程序的目录结构

{
 "navigationBarBackgroundColor": "#FF5500",//导航栏背景颜色
 "navigationBarTextStyle": "white",//导航栏标题颜色,仅支持black/white
 "navigationBarTitleText": "首页",//导航栏标题文字内容
 "backgroundTextStyle": "dark", //下拉loading样式,仅支持dark/white
 "enablePullDownRefresh": true,//是否启用下拉刷新
 "onReachBottomDistance": 50,//页面上拉触底事件触发时距离页面底部距离
 "usingComponents": {}//页面自定义组件配置
}

2WXML模板

我们在开发web页面时,使用HTML+CSS+JS这样的组合来构建展示给用户的页面,其中HTML是用来描述当前页面的结构,CSS是用来描述页面的样式,JS通常处理页面与用户之间的交互。

而小程序开发中,其自己的一套书写规范,但与web页面也有相似之处,如WXML在其中就充当了HTML的角色。和HTML非常相似,WXML也是由标签、属性等构成,但也存在着众多不一样的地方:

标签名不一样,在HTML中我们经常会使用div、p、span等来组合出不同的效果。而在小程序中,我们会使用view、button、text等标签,同时小程序页提供了地图、视频、音频等组件供开发者使用。

多了一些wx:if这样的属性以及表达式,在web页面开发中,我们通过使用JS来控制DOM,以及响应用户操作。而小程序通过{{}}的语法将数据绑定到界面,同时也可以通过wx:开头的属性来控制数据的显示。

简单了解微信小程序的目录结构

<!--index.wxml-->
<view class="container">
<text>{{msg}}</text>
<view wx:if="{{flag}}">当前显示状态为true</view>
</view>

3 WXSS样式

WXSS具有CSS大部分特性,同时也做了一些扩充和修改:

新增了尺寸单位。为了考虑手机设备屏幕宽度和设备像素比的不同,需要换算,小程序提供了新的尺寸单位rpx,其不需要开发者自己换算,而是由小程序底层来完成。
提供全局样式和局部样式。在app.wxss中可以设置全局样式,而在具体的页面.wxss中可以设置当前页面的样式。
此外WXSS仅支持部分CSS选择器。

/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 200rpx 0;
box-sizing: border-box;
} 
/**index.wxss**/
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
}

4 JS交互

在web开发中,我们使用JS来控制与用户的交互行为,而小程序中也是使用JS来处理用户的操作。如先前,我们在页面上显示“Hello World!”。我们只需要在页面的JS文件中,对其进行设置值即可。

Page({
 data: {
 msg: 'Hello World',
 flag: false,
 canIUse: wx.canIUse('button.open-type.getUserInfo')
 },
 onLoad: function () {
 },
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js变量作用域及可访问性的探讨
Nov 23 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
Feb 07 Javascript
js获取url中&quot;?&quot;后面的字串方法
May 15 Javascript
alert出数组中的随即值代码
Sep 25 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 Javascript
解析Node.js基于模块和包的代码部署方式
Feb 16 Javascript
详解Jquery实现ready和bind事件
Apr 14 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
Sep 16 Javascript
node基于async/await对mysql进行封装
Jun 20 Javascript
layui实现tab的添加拒绝重复的方法
Sep 04 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 Javascript
vue如何实现自定义底部菜单栏
Jul 01 #Javascript
微信小程序如何利用getCurrentPages进行页面传值
Jul 01 #Javascript
vue中的面包屑导航组件实例代码
Jul 01 #Javascript
Vue动态面包屑功能的实现方法
Jul 01 #Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 #Javascript
基于Vue SEO的四种方案(小结)
Jul 01 #Javascript
JavaScript一元正号运算符示例代码
Jun 30 #Javascript
You might like
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
简单实现js浮动框
2016/12/13 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
快速了解Python开发环境Spyder
2020/06/29 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技