有时我都为自己开发小程序的技术组合感到兴奋。

2018-06-23 21:07:21 +08:00
 banxi1988

从 大概 5 月初开始学习小程序开发.

  1. 在比较了小程原生开发和 wepy 框架之后,果断选择了 mpvue. 整个学习和开发过程体验算是愉快的。感谢 mpvue 及 vue。

  2. 然后由于之前都是习惯静态类型语言,所以果断选择了 TypeScript. 一个多月的学习开发体验下来,TS 用得很舒服。感谢微软,也感谢微软开发非常好用的 VS Code. 从大概半年前开始接触到 VS Code,之前只是偶尔打开它,现在我感觉我已经喜欢上它了。

  3. 由于 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 小程序开发最佳实践起始框架

1895 次点击
所在节点    程序员
2 条回复
xeaglex
2018-06-24 03:54:29 +08:00
> 没有想到我 N 年前做服务端学过的 Jinja2 模板引擎,竟然可以完美的应用在小程序开发上

我理解类似你这种的感受
lsoknet
2018-06-24 08:22:31 +08:00
小程序是什么?有什么用?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465316

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX