小程序开发经验总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序开发经验总结相关的知识,希望对你有一定的参考价值。
参考技术A 最近一直在做小程序,工作中也遇到了一些问题,踩了一些坑,所以想着写篇文章记录下来,并借此将小程序开发的相关知识进行梳理,方便以后参考,也为刚刚接触小程序的人提供一些思路方法,互相学习,共同进步。1、微信小程序的目录结构及配置说明
app.json是小程序的全局配置文件,所有配置项key必须使用 双引号括起来 ,value值为字符串类型的也必须使用双引号, 不支持单引号 。
1.1 pages
pages选项是必须配置的。该配置项注册了小程序所有页面的地址,其中每一项都是页面的 路径+文件名 。每一个页面都是由.json、.js、.wxml、.wxss四个文件组成,并且 四个文件的名字必须要一致 。
1.2 tabBar
tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。其中 list 接受一个数组,只能配置最少 2 个、最多 5 个 tab
1.3 usingComponents
使用自定义组件或者插件提供的组件前,必须先在这里声明
2、开发微信小程序遇到的问题及解决办法
2.1 双向绑定
微信小程序不支持通过v-model的方式实现自动双向绑定,需要给表单元素通过绑定事件,并使用this.setData来赋值实现。
2.2 computed和watch
微信小程序默认是不支持computed和watch的,如需要使用这两项功能,需要安装miniprogram-computed ,安装方法见 官方文档
2.3 对象赋值
如果给对象的属性赋值,可以使用this.setData('obj.key':value)来赋值,但是如果给某个属性名是变量的属性赋值,通过这种方法是会报错的,经过多次尝试,发现使用如下的方式赋值成功。
let newObj = `obj.$key`
this.setData(
[newObj]: value
)
2.4 scroll-view
当页面存在弹框容器,并且弹框里的内容是需要滚动条滚动展示时,如果弹框下面那层的容器使用view元素的话,会导致滚动弹框内容时,同时会触发弹框下面那层的页面容器也会一起滚动,解决此问题可以将弹框下面的容器使用scroll-view元素替代view元素
3、小程序测试和发布
由于服务器域名request合法域名每个月 只能修改5次 ,因此在本地开发小程序时,需要在微信调试工具中设置不校验合法域名。等小程序上线前再一次性将所有域名添加到小程序管理后台。
以上便是此次小程序开发中积累的一些经验,希望能给刚刚接触小程序的人提供一些思路方法,在以后的开发中,如果遇到新的问题,继续更新文档......
原创经验:微信小程序开发总结
学习时间不短了.今天公司不加班总结一下我的开发经验吧,以下都是我认为很重要的总结哦!写下来让我自己也记得更清楚,同时希望可以帮助到有需要的同学哦
一: 参数传值的方法
1: data-id
我们可以给HTML元素添加data-*属性来传递我们需要的值,使用方法说明:
(1)设置data-id
<view class="block" bindtap="playTap" data-id="{{modle.id}}">
(2): 取值 + 传值
playTap:function(e) {
const dataset = e.currentTarget.dataset;
wx.navigateTo({
url: ‘../play/index?id=‘+ dataset.id
})
console.log(dataset.id);
}
(3):取值
onLoad:function (param) {
//页面初始化
this.setData({
currentId:param.id
})
}
data-*注意事项:data-*名称不能有大写字母,曾经我就因为大写了一个字母,找了半天的才发现这个错误..data-*属性中不可以存放对象
2: 设置id 的方法标识来传值
使用方法说明:
(1)设置id
<view bindtap=“playTap" id="{{modle.id}}">
(2)取值
通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值
3: 在navigator中添加参数传值
使用方法说明
(1)传值:在navigator的属性url后拼接?id(参数名字)=要传递的值 (如果多个参数用&分开 &name=value&.......)
<navigator url="../my/my?id={{item.id}}" wx:for="{{modles}}">
(2)取值:
onLoad (params){
app.fetch(API.detail + params.id,(err,data) => {
})
}
二:数据请求封装
1.将所有的接口放在统一的js文件中并导出
const api = {
interface1: ‘https://........‘,
interface2: ‘https://.......‘,
interface3: ‘https://....‘,
.....
}
module.exports = api;
2:在app.js中创建封装请求数据的方法
fetch(url,data, callback) {
wx.request({
url,
data: data,
header: {
‘Content-Type‘: ‘application/json‘
},
success(res) {
callback(null, res.data);
},
fail(e) {
callback(e);
}
})
},
3: 在子页面中调用封装的方法请求数据
import API from "../../api/api.js";
const app = getApp();
const conf = {
data:{
title:‘正在拼命加载中...‘,
loadding:true
},
onLoad (){
app.fetch(API.hot,{},(err,data) => {
})
},
三:使用模板(发现模板真是个好东西哦!)
1:定义模板:name设置模板的名字
定义模板
<template name="homecell">
<view class="item">
</view>
</template>
2:使用模板
首先引入模板
<import src="../../commonXml/homecell.wxml" />
然后使用模板is后写模板的name..通过data来传递需要是数据
<template is="homecell" data="{{item}}"></template>
四:Array比较好用的属性和方法
Array.isArray() 方法用来判断某个值是否为Array。如果是,则返回 true,否则返回 false。
concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回.
forEach() 方法对数组的每个元素执行一次提供的函数(回调函数)。
join() 方法将数组中的所有元素连接成一个字符串。
keys() 方法返回一个数组索引的迭代器。
map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组
pop() 方法删除一个数组中的最后的一个元素,并且返回这个元素。
push() 方法添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。
toString() 返回一个字符串,表示指定的数组及其元素。
五:对象Object常用方法
1 初始化方法
var obj = [];
var obj = new obj();
var obj = Object.create(null);
2 添加元素的方法
dic[“key”] = “value”;
3 删除key的方法
delete dic[“key”];
4 清空词所有条目
dic.clear();
5 删除
delete dic;
6 查看所有属性的方法
Object.keys(obj);
对象的所有键名都是字符串,所以加不加引号都可以,如果键名是数值,会被自动转为字符串但是,如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),也不是数字,则必须加上引号,否则会报错
6 读取属性
obj.name || obj[’name‘]
注意: 数值键名不能使用点运算符(因为会被当成小数点),只能使用方括号运算符。
7 检查变量是否声明
if(obj.name) || if(obj[’name‘])
8 in 运算符用于检查对象是否包含某个属性,如果包含返回true,否则返回false
if ( ‘x’ in obj) {return 1}
9 for … in 循环
用来遍历一个对象的全部属性
for (var i in obj) {
console.log(obj);
}
10 with 语句
作用: 操作同一个对象的多个属性时,提供一些书写的方便
with(obj) {
name1 = 1;
name2 = 2;
}
等同于
obj.name1 = 1;
obj.name2 = 2;
作者:ntt123456
来自:来源地址
以上是关于小程序开发经验总结的主要内容,如果未能解决你的问题,请参考以下文章