学习(微信小程序 开发入门及案例详解 --李骏,边思编著)

第一章 初识小程序

1.小程序不仅在商业上具备很大潜力,同时在技术上解决了一套代码多端运行和动态发版的两大痛点,用户在微信中扫一扫或搜一下即可打开具备原生体验的应用,这给开发者带来了很大的想象空间

2.一套代码,多端运行

3.目前小程序名称一旦确定后便不可修改

4.只有绑定的开发者才能使用开发者工具编写小程序,一个小程序最多可以绑定20个开发者,未认证的小程序最多可以绑定10个开发者

5.只有填写了AppID的项目才能通过手机微信扫码进行真机测试

6.编译器:sublime,atom,brackets

第二章 小程序开发核心

1.小程序框架将整个系统划分为视图层和逻辑层,视图层是由框架设计的标签语言WXML和用于描述WXML组件样式的WXSS组成,它们的关系就像HTML和CSS的关系
2.在小程序中没有DOM的概念

3.小程序中的视图层和逻辑层的交互是通过数据绑定和时间响应实现的,这是一种单向绑定的机制。

这套机制需要首先将逻辑层和视图层的数据和事件进行绑定,当需要修改页面时,逻辑层只需要调用特定的setDate方法修改已绑定的数据,这时框架会自动触发WXML重新渲染,达到逻辑层对视图层的控制;当框架接收到用户交互操作时,会根据视图层绑定的事件,执行逻辑层对应的事件函数,达到逻辑层对视图层的响应

4.框架首先会解析配置文件app.json,通过pages设置找到默认首页页面(pages第一个路径默认为首页),然后加载目录中.wxml、.wxss、.js、.json这四个文件进行页面渲染

5.视图层和逻辑层之间相互通信的机制便是小程序的数据绑定和事件响应系统

6.在一个完整的小程序中,文件主要分为框架程序主体文件和页面文件两大类

框架主题文件是系统级别文件,一个项目只有一份,分别是app.json,app.js和app.wxss,他们分别控制小程序整体配置、逻辑和整体样式,小程序启动时只会执行一次。这3个文件必须放在项目根目录,且文件名必须是app,其中app.json和app.js是必须的

页面文件,.wxml文件和.js文件是必须的,按照框架规定,同一个页面的这4个文件必须具有相同的路径和文件名,

7.app.json:小程序公共设置,配置小程序全局设置

app.js:小程序逻辑文件,主要用于注册小程序全局实例,编译时会和其他页面逻辑文件打包成一份JavaScript文件

app.wxss:小程序公共样式表,对所有页面的布局文件都有效

8.app.json是小程序配置文件,编写时要严格遵循json的格式规范。app.json在程序加载时加载,负责对小程序的全局配置,其配置项有:

pages:设置页面路径,必填项

window:设置默认页面的窗口表现

tarBar:设置tab的表现

networkTimeout:设置网络超时时间

debug:设置是否开启debug模式,默认关闭

9.pages配置,由页面“路径 + 文件名” 组成

10.为了便于管理,建议文件名和目录名保持一致

11.小程序中各种网络请求API的超时时间只能通过networkTimeout统一设置,不能再API中单独设置

12.App()函数用于注册一个小程序,参数为一个Object对象,在这个参数对象中我们可以注册自定义方法和属性供全局使用。

​ App()函数必须在app.js中注册,且不能注册多个,其参数属性如下:

onLaunch:声明周期函数,监听小程序初始化。当小程序初始化完成时,就会触发onLaunch,onLoaunch事件全局只会触发一次

onShow:生命周期函数,监听小程序显示。当小程序启动,或者从后台进入前台显示时都会触发onShow

onHide:生命周期函数,监听小程序隐藏。当小程序从前台进入后台会触发

13.只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正销毁

14.页面逻辑文件主要功能有:设置初始化数据,注册当前页面生命周期函数,注册事件处理函数等。

15.在小程序中,每个逻辑文件有独立的作用域,并具备模块化能力

16.在WXML中编写一些HTML标签或自定义标签仍然会被正常解析,这会给开发者造成一种小程序能直接支持HTML标签的误解。这是因为微信开发者工具内核是浏览器内核,同时小程序框架并没对WXML中的标签和WXSS中的内容进行强验证,所以HTML和CSS能直接被解析,但这种不合法的WXML在手机端微信中是不能正常显示的

17.开发过程中我们一定要拿真机进行测试,保证程序能正常运行

18.WXML具有数据绑定(Mustache语法,双大括号)、列表渲染、条件渲染、模板、事件等能力

19.组件属性为boolean类型时,不要直接写checked=“false”,这样checked的值是一个false的字符串,转成boolean类型后代表为true,这种情况一定要使用关键字输出:checked="{{false}}"

20.wx:if在条件第一次为真时才局部渲染,hidden 组件始终会被渲染

​ 由于wx:if会触发框架局部渲染过程,在频繁切换状态的场景中,会产生更大的消耗,这时尽量使用hidden;在运行时条件变动不大的场景中我们使用wx:if,这样能保证页面有更高效的渲染,而不用把所有组件都渲染出来

21.通过对比发现,import更适合引用模板定义文件,include更适合引入组件文件

22.小程序目前不支持直接引入node_modules,开发者需要使用node_modules时建议拷贝出相关代码到小程序目录中

23.通过模块化我们能实现代码真正的隔离,可以多人并行开发,降低大型项目管理难度,这对前端工程化具有很大促进作用

24.微信小程序逻辑代码运行在三端:iOS,Android和用于调试的开发者工具,这三端是各自不同的三个解析引擎

第三章 布局

1.开发者工具功能“开启上传代码时样式文件自动补全”,否则flex布局会存在不同终端兼容性问题

2.一个块级元素的元素框与其父元素的width相同,块级元素的width+marginLeft+marginRight+paddingLeft+paddingRight刚好等于父级元素内容区宽度,显示时默认撑满父元素内容区

3.当设置块级元素宽度为100%时,如果当前块级元素存在padding,margin会导致块级元素溢出父元素

4.当设置元素clear时,可以确保当前元素的左边、右边或左右两边同时不能出现浮动的元素

5.父元素虽然会忽略浮动元素(如浮动高度示例中产生的坍塌),但是不会忽略其他元素(包括清除浮动的元素),而清除浮动的元素总是在浮动元素下方,所以在显示时视觉上父元素就把所有元素都包含进去了,无论非浮动元素在哪里,父元素边框都包含了非浮动元素。

利用这个特性,把清除浮动的高度设置为0使其看不见,这时父元素仍然会包裹它,这样就能防止浮动元素高度坍塌,网上利用after伪属性清除浮动就是这个道理

第四章 组件

1.与HTML元素一样,一个组件是指从组件开始标签到结束标签的所有代码,由于组件可能会被转译

为不同端对应的代码,所以在页面创建过程中,不能使用小程序组件标签以外的标签。

2.组件的定义:

①组件是视图层的基本组成单元

②组件自带一些功能与微信风格的样式

③一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内

按类型可以将组件划分为七大类:视图容器,基础内容,表单,导航,多媒体,地图,画布

3.属性只能用在开始标签或单个自闭合标签上,不能用于结束标签

4.组件的属性类型:Boolean,Number,String,Array,Object,EventHandler(事件处理函数名),Any(任意属性)

5.在前端项目中我们常使用DIV+CSS进行页面布局,其中

没有任何语义和功能,仅作为容器元素存在,在小程序中,有一套类似div的容器组件,那就是,和

6.view具备一套关于点击行为的属性:

hover:是否启动点击态,默认值为false

hover-class:指定按下去的样式。当hover-class="none"时,没有点击态效果,默认值为none

hover-start-time:按住后多久出现点击态,单位毫秒,默认值为50

hover-stay-time:手指松开后点击态保留时间,单位毫秒,默认值为400

<view style="background-color:red; flex-grow:1;height:80rpx;"></view>
<view style="display:flex;height:400rpx">

8. ,scroll-x:允许横向滚动,默认为false,scroll-y允许纵向滚动,默认为false,

9.需要注意的是,在使用纵向滚动时,需要先给一个固定高度

10.一个完整的滑动视图组件由两个标签组成的,它们不能单独使用,一个中只能放置一个或多个,放置其他内容点会被删除,内部能放置任何组件,默认宽高自动设置为100%,、组件作为容器没有任何特殊属性

基础组件:

  1. ,是页面中非常常见的组件,它通常用于表示状态,起到引导作用。

12.text组件

​ 主要用于文本内容的展示,类似HTML中p标签,在小程序中,只有text节点内部的内容能被长按选中,大家在展示文本的时候一定要根据这个特性注意场景的使用。text是行内元素,除了组件共同属性外并没有提供其他属性,文本中的内容支持转义字符"",text组件内只支持text嵌套

13.progress组件,用于显示进度状态,比如资源加载、用户资料完成度、媒体资源播放进度等

表单组件:

14.表单是应用中获取用户输入的重要手段,它对于系统极其重要,用户在应用中输入的大部分内容都是在表单元素中完成的,

15.radio组件

​ 适用于可用有效数据不多的情况,小程序中单选框是由(单向选择器)和(单项项目)两个组件组合而成的,一个包含多个表示一组单选框,在同一组单选项的是互斥的,当一个按钮被选中,之前选中的按钮就变为非选中。当需要用户在待选项中选择唯一的答案时,就需要使用到单项框

16.checkbox组件

​ 与单选框一样,小程序中的复选也是由(多项选择器)和(多项项目)两个组件组合而成。一个包含多个表示一组多选项,一组多选型允许在待选项中选中一项以上的选项

17.整体来看复选框和单选框的使用方式基本一致,最大的区别在于交互上单选框在同一组单选项中只能选中一个,而复选框可以选中多个;选中状态切换时change方法传入的参数数值一个是传入单值,一个是传入数组。

18.switch组件

是一个可以在两种状态切换的开关选择器,是一个单独控件

​ 在小程序中当的type属性值为checkbox时,它的UI表现和非常接近

19.label组件

​ 在radio和checkbox中,点击文案时不能选中对应的单选框或复选框,这是我们可以利用

你可能感兴趣的:(前端,微信小程序,小程序)