从 大概 5 月初开始学习小程序开发.
在比较了小程原生开发和 wepy 框架之后,果断选择了 mpvue. 整个学习和开发过程体验算是愉快的。感谢 mpvue 及 vue。
然后由于之前都是习惯静态类型语言,所以果断选择了 TypeScript. 一个多月的学习开发体验下来,TS 用得很舒服。感谢微软,也感谢微软开发非常好用的 VS Code. 从大概半年前开始接触到 VS Code,之前只是偶尔打开它,现在我感觉我已经喜欢上它了。
由于 mpvue 在处理 Slots 上存在 Bug, 今天研究了一下使用 Jinja2 (nunjucks) 作为 vue 模版的模版预处理引擎(老实说,我不喜欢 pug )。 当我把 jinja2 的集成调通,并使用它将一个列表页面改写完之后, 我突然感到一种莫名的兴奋。 因为没有想到我 N 年前做服务端学过的 Jinja2 模板引擎,竟然可以完美的应用在小程序开发上。(也感谢 webpack 使这一工作流变得自然而然。)
能够自然而然的,优雅高效的写代码,不得不让人感到兴奋。
附一个小程序列表页面模板源代码:
<template lang="nunjucks">
{% set placeholder = "搜索 Android" %}
{% set upperThreshold = 50 %}
{% set lowerThreshold = 50 %}
{% extends "src/templates/base-list-vue-layout.jinja2" %}
{% block listItems %}
<div class="post-item"
v-for="(item,index) in listItems"
:key="index">
<div class="post-title">{%raw%}{{item.desc}}{% endraw %}</div>
</div>
{% endblock %}
</template>
及主要逻辑的核心代码:
@Component({
components: {
LoadingView,
WeuiLoadMore,
WeuiSearchBar
}
})
class Index extends ListVue<Post> implements mp.PageLifecycle {
// 如果不加这行声明,Vue 绑定的时候找不到 listItems
listItems: Post[] = [];
onLoad() {
this.loadData();
this.showSearchBar = true;
}
getApiRequestOptions() {
const url = `http://gank.io/api/data/Android/${this.pageSize}/${this.page}`;
return {
url
};
}
}
完整代码见仓库地址: mpvue 小程序开发最佳实践起始框架
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.