文章目录
- 1. 项目结构
- 2. 页面组成
- 3. json配置文件
- 4. 认识页面
- 5. WXML
- 6. WXSS
- 7. js文件
- 8. 宿主环境
- 9. 组件
- 10. API
- 11. 协同工作与发布
跟公众号平台不共用一个账号,需要用其它邮箱另行注册,填写身份证信息(姓名、身份证号码),下载微信开发者工具
1. 项目结构
- pages:存放所有小程序的页面
- utisl:存在工具性质的模块
- app.js:程序入口文件
- app.json:全局配置文件
- app.wxss:全局样式文件
- sitemap.json:配置是否运行被微信索引
2. 页面组成
3. json配置文件
JSON是一种数据格式,在实际开发中,JSON总是以配置文件的形式出现。小程序项目中也不例外:通过不同
的,jS0配置文件,可以对小程序项目进行不同级别的配置。
小程序项目中有4种json配置文件,分别是:
项目根目录中的
app.json
配置文件app.json
是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部tab等。
Demo项目里边的app.json配置内容如下:"pages":[ "pages/index/index", "pages/logs/logs"],"window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor":"#fff" "navigationBarTitleText":"WeChat", "navigationBarTextStyle":"black"},'style":"v2","sitemapLocation":"sitemap.json"
简单了解下这4个配置项的作用:
- pages:用来记录当前小程序所有页面的路径
- window:全局定义小程序所有页面的背景色、文字颜色等
- style:全局定义小程序组件所使用的样式版本
- sitemapLocation:用来指明sitemap,json的位置
项目根目录中的
project.config.json
配置文件{ "appid": "wx107ced89ec191979", "compileType": "miniprogram", "libVersion": "2.27.1", "packOptions": { "ignore": [], "include": [] }, "setting": { "coverView": true, "es6": true, "postcss": true, "minified": true, "enhance": true, "showShadowRootInWxmlPanel": true, "packNpmRelationList": [], "babelSetting": { "ignore": [], "disablePlugins": [], "outputPath": "" }, "minifyWXSS": true }, "condition": {}, "editorSetting": { "tabIndent": "insertSpaces", "tabSize": 2 }}
project…config,json是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如:
- setting中保存了编译相关的配置
- projectname中保存的是项目名称
- appid中保存的是小程序的账号ID
项目根目录中的
sitemap.json
配置文件微信现已开放小程序内搜索,效果类似于PC网页的SE0。sitemap.json文件用来配置小程序页面是否允许
微信索引。当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的搜索关键字和页
面的索引匹配成功的时候,小程序的页面将可能展示在搜索结果中。每个页面文件夹中的
.json
配置文件小程序中的每一个页面,可以使用.json文件来对本页面的窗口外观进行配置,页面中的配置项会覆盖
app.json的window中相同的配置项。例如下面的主页titlebar就是绿色的// app.json"window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor":#fff", "navigationBarTitleText":"WeChat", "navigationBarTextStyle":"black"},"style":"v2","sitemapLocation":"sitemap.json"// index.json{ "usingComponents": {}, "navigationBarBackgroundColor": "#00b26a"}
4. 认识页面
新建页面
只需要在 app.json->pages 中新增页面的存放路径,小程序开发者工具即可帮我们自动创建对应的页面文件
如图所示:
修改项目首页
只需要调整 app.json->pages 数组中页面路径的前后顺序,即可修改项目的首页。小程序会把排在第一位的页
面,当作项目首页进行渲染
// app.json 现在首页是 list"pages": [ "pages/list/list", "pages/index/index", "pages/logs/logs" ],
5. WXML
WXML和HTML的区别
标签名称不同
- HTML (div,span,img,a)
- WXML (view,text,image,navigator)
属性节点不同
<a href="#">xxx</a><navigator url="#">xxx</navigator>
提供了类似于Vue中的模板语法
- 数据绑定
- 列表渲染
- 条件渲染
6. WXSS
WXSS和CSS的区别
新增了rpx尺寸单位
- CSS中需要手动进行像素单位换算,例如rem
- WXSS在底层支持新的尺寸单位px,在不同大小的屏幕上小程序会自动进行换算
WXSS(WeiXin Style Sheets)是一套样式语言,用于美化WXML的组件样式,类似于网页开发中的CSS。
WXSS具有CSS大部分特性,同时,WXSS还对CSS进行了扩充以及修改,以适应微信小程序的开发。
wxss扩展的特性:
rpx尺寸单位:rpx(responsive pixel)是微信小程序独有的,用来解决屏适配的尺寸单位。
rpx的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx把所有设备的屏幕,在宽度上等分为750份(即:当前屏幕的总宽度为750rpx)。
提供了全局的样式和局部样式
- 项目根目录中的app.wxss会作用于所有小程序页面
- 局部页面的.wxss样式仅对当前页面生效
WXSS仅支持部分CSS选择器
- .class和id
- element
- 并集选择器、后代选择器
- :after和:before等伪类选择器
7. js文件
一个项目仅仅提供界面展示是不够的,在小程序中,我们通过jS文件来处理用户的操作。例如:响应用户的
点击、获取用户的位置等等。
小程序中的 js 文件分为三大类,分别是:
- app.js:是整个小程序项目的入口文件,通过调用App()函数来启动整个小程序
- 页面的.js:是页面的入口文件,通过调用Page()函数来创建并运行页面
- 普通的.js:是普通的功能模块文件,用来封装公共的函数或属性供页面使用
8. 宿主环境
宿主环境(host environment)指的是程序运行所必须的依赖环境。例如:
Android系统和iOS系统是两个不同的宿主环境。安卓版的微信App是不能在iOS环境下运行的,所以,
Android是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的!
微信小程序的宿主环境是微信
通信的主体
小程序中通信的主体是渲染层和逻辑层,其中:WXML模板和WXSS样式工作在渲染层、JS脚本工作在逻辑层
渲染层和逻辑层之间的通信:由微信客户端进行转发
逻辑层和第三方服务器之间的通信:由微信客户端进行转发
运行机制
启动流程
- 把小程序的代码包下载到本地
- 解析app.json全局配置文件
- 执行app.js小程序入口文件,调用App()创建小程序实例
- 渲染小程序首页
- 小程序启动完成
页面加载
- 加载解析页面的json配置文件
- 加载页面的.wxml模板和.wxss样式
- 执行页面的js文件,调用Page()创建页面实例
- 页面渲染完成
9. 组件
小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。官方把小程序的组
件分为了9大类,分别是:
视图容器
view:类似div
scroll-view:滚动列表
swiper/swiper-item:轮播图
基础内容
text:类似 span
rich-text:富文本,可以将html字符串渲染到wxml
表单组件
导航组件
媒体组
map地图组件
canvas画布组件
开放能
无障碍访问
10. API
小程序官方把API分为了如下3大类:
事件监听API:
特点:以on开头,用来监听某些事件的触发
举例:
wx.onWindowResize(function callback)
监听窗口尺寸变化的事件同步API
特点1:以SynC结尾的API都是同步API
特点2:同步API的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常
举例:
wx.setStorageSync('key','value')
向本地存储中写入内容异步API
特点:类似于jQuery中的
$.ajax(options)
函数,需要通过success、fail、complete接收调用的结果
举例:wx.request()
发起网络数据请求,通过success回调函数接收数据
11. 协同工作与发布
版本管理:开发版本—> 审核版本 –> 线上版本
推广:小程序码及线下物料下载
运营:统计(后台)、小程序数据助手(手机微信)