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


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 类似flash效果的立体图片浏览器
Feb 08 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 Javascript
浅谈jQuery构造函数分析
May 11 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 Javascript
javascript字体颜色控件的开发 JS实现字体控制
Nov 27 Javascript
Vue extend的基本用法(实例详解)
Dec 09 Javascript
原生javascript单例模式的应用实例分析
Feb 23 Javascript
小程序使用分包的示例代码
Mar 23 Javascript
在vue中使用回调函数,this调用无效的解决
Aug 11 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实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
ThinkPHP安装和设置
2015/07/27 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
王纯业的Python学习笔记 下载
2007/02/10 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
python与pycharm有何区别
2020/07/01 Python
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
竞选班长演讲稿
2013/12/30 职场文书
节约用水标语
2014/06/11 职场文书
法人委托书范本
2014/09/15 职场文书
2014财务年度工作总结
2014/11/11 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
幸福终点站观后感
2015/06/04 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
MySQL开启事务的方式
2021/06/26 MySQL
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android