wx:for解决了代码重复编码的问题。用列表方式编写。
知识点1、wx:for和template区别
wx:for 只是同一个网页里复用。但是不能不同网页之间复用,而template是一个模板,能够在不同网页之间复用。可以做一个网页模板,也可以做一小块的模板。而且模板之中还能再嵌套别的模板。template只是模板,而不是模块。因为它只能复用wxml和wxss,模块复用可以复用js 。
知识点2、如何创建template
创建模板,就是创建一个wxml和一个wxss,把对应样式放在其中。不需要js文件,因为小程序只是实现了模板技术,不是模块技术。js文件不会运行的。
wxml文件:用<template name="postItem"></template>, postItem作为模板的名字。这里意思就是定义模板的过程,把一段wxml代码用template标签包裹,就形成一个模板,然后给模板一个名字。这个文件可以定义多个模板,也就是说,必须有一个name属性进行区分。然后在复用模板的时候,先导入这个模板文件,然后在使用模板标签<template>,标签里指定模板的名字属性。
知识点3、如何使用模板template。内容以及样式
在需要使用模板的页面(比如post.wxml)地方头部导入模板 <import src="../../XXX.wxml" />。这里用相对路径或者绝对路径。require一个脚本文件的时候,只能是相对路径。文件引用报错机制不是很完善,小心仔细。
内容中使用模板
<template is="postItem" />就可以了,意思就是"使用的模板是postItem",使用wx:for的时候,是使用数据填充其中的组件,组件现在换成template了之后,怎么把数据填充进Template呢?在template标签中加一个属性data,data={{item}} ,这里的item是指循环时候得到的每一项数据,wx:for-item="item" 。

质疑:使用template无非是把block中的代码搬到了template中,整体的代码量并没有减少啊?还多了16行。
回答:制成模板之后,不仅可以在post.wxml中引用,还可以在别的wxml中引用。复用性更强。后面还有更复杂的template的用法,包括嵌套使用,细小化之后,引用更灵活。后面电影页面就会用了。
知识点4、内容需要引入模板,那么同样,样式也需要引入。
在post.wxss中模板相关的代码,剪切到模板样式表中,然后在post.wxss中通过@import "样式的绝对路径或者相对路径"引入就可以了。

template可以使实现wxml和wxss复用,但是不能复用js脚本文件。所以小程序实现了模板编程,不是模块编程。所以template中的事件,只能写到引用页面的脚本文件中。(本项目是post.wxml引用了template,所以关于template中的脚本,就只能写在post.js中。)所以不要在template里面写无谓的脚本。暂时还用不了的。
网友评论