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


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 相关文章推荐
JavaScript打字小游戏代码
Dec 26 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
Jan 14 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
Javascript将JSON日期格式化
Aug 23 Javascript
深入理解JavaScript中的for循环
Feb 07 Javascript
基于iScroll实现下拉刷新和上滑加载效果
Jul 18 Javascript
浅析vue深复制
Jan 29 Javascript
Django+Vue实现WebSocket连接的示例代码
May 28 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
vue实现点击按钮下载文件功能
Oct 11 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
Jul 28 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 文件扩展名 获取函数
2009/06/03 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
让您的菜单不离网站
2006/10/03 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
python学习必备知识汇总
2017/09/08 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
自荐书4要点
2014/01/25 职场文书
商场主管竞聘书
2014/03/31 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
会计简历自我评价
2015/03/10 职场文书