1. 组件-外部样式:
小程序为我们提供外部样式用于适应组件在不同地方使用时的样式灵活性,但是我们在开发时发现一个问题,就是传入的外部样式有时候不能生效,
原因:
组件中的默认样式与传入的外部样式目前版本并不存在优先级高低、前后覆盖的概念,所以会出现外部样式失效问题
解决方案:
外部样式后面加上 “!important”,提高样式的优先级
2. 改变组件样式
除了外部样式类,还有一种hack的方式,直接在css中 利用 view v-component view 的方式改变样式,此写法虽然简单粗暴但是不符合组件封装性的特点
3. text中对于\n不生效的问题,text默认会对innertext中的\n进行换行处理,但是有时候服务器返回的text内容 有时候小程序解析时会出现\\n的情况,导致不能换行
解决方案:
利用小程序提供的wxs特性,对html中的内容进行“正则表达式”处理,wxs可以解决小程序中类似于vue过滤器、计算属性的功能
4. 富文本渲染
我们在利用rich-text插件渲染富文本时,经常会发现界面渲染缓慢
解决方案:添加富文本内容时添加一个“分页符”,后台返回时,在js中利用分页符将富文本内容分割成若干个数组,然后利用递归进行部分渲染
// 对富文本渲染进行标记
renderFuc() {
if (this.data.renderMark <= this.data.otherRichText.length) {
setTimeout(() => {
var arr = this.data.firstRender
arr[this.data.renderMark] = true
var _this = this
this.setData({
firstRender: arr,
renderMark: ++this.data.renderMark
})
return this.renderFuc()
}, 100)
}
},
5.小程序无法直接接受实时推送,只能通过公众号,具体操作可以查看公众号消息推送信息
6.多种“编译方式”,小程序官方提供了“普通编译”、“自定义编译”、“二维码编译”三种形式。下面我就详细说下这几种编译形式
普通编译:小程序默认从app.json中pages的第一个页面进行编译
自定义编译:用户可以配置任意一个界面作为编译初始界面,包括进入场景、以及参数
7. 小程序有着与vue一样的问题
受现代 JavaScript 的限制 (而且 Object.observe
也已经被废弃),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter
转化过程,所以属性必须在 data
对象上存在才能让 Vue 转换它,这样才能让它是响应的。例如:
var vm = new Vue({
data:{
a:1
}
})
// `vm.a` 是响应的
vm.b = 2
// `vm.b` 是非响应的
Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)。然而它可以使用 Vue.set(object, key, value)
方法将响应属性添加到嵌套的对象上:
Vue.set(vm.someObject, 'b', 2)
您还可以使用 vm.$set
实例方法,这也是全局 Vue.set
方法的别名:
this.$set(this.someObject,'b',2)
有时你想向一个已有对象添加多个属性,例如使用 Object.assign()
或 _.extend()
方法来添加属性。但是,这样添加到对象上的新属性不会触发更新。在这种情况下可以创建一个新的对象,让它包含原对象的属性和新的属性:
// 代替 `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })
也有一些数组相关的问题,之前已经在列表渲染中讲过。
未完待续.....