前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序入门——一个简单的记事本

微信小程序入门——一个简单的记事本

原创
作者头像
dandelion1990
发布2024-01-18 00:30:08
3000
发布2024-01-18 00:30:08
举报
文章被收录于专栏:dandelion1990的专栏

准备工作

  1. 注册一个邮箱
  2. 用邮箱和微信账号绑定一个小程序:微信公众平台
  3. 下载 Wechat Devtools
  4. 创建一个项目,模板选择 "TDesign - 组件库模板"

然后在这个模板的基础上开发,方便引用组件,后面不需要的页面和组件在删掉就行

项目结构

小程序官方文档 - 目录结构

项目配置文件

  • app.json:项目配置,包括页面列表、使用组件、导航栏、背景颜色等,详见小程序官方文档 - 全局配置
  • app.js:小程序逻辑入口
  • app.wxss:公共样式

新建页面

页面放在 pages 文件夹,在里面新建一个文件夹例如 pages/note

一个页面包含 4 个文件

  • note.json:页面配置,包括页面名称、使用组件、背景颜色等,详见小程序官方文档 - 页面配置
  • note.js:页面逻辑
  • note.wxml:页面结构
  • note.wxss:样式

页面设计

页面设计包括两个部分,上部分的笔记列表,使用 TDesign 的 collapse 组件组成,下部分为输入区域,由一个文本输入框和提交按钮组成,其中文本输入框用 textarea 组件,按钮用 button 组件。

官方组件文档见小程序官方文档 - 组件,TDesign 组件文档见TDesign - 组件概览

用户可以在文本框内输入文字,点击提交按钮后会将文件展示在上方列表,并清空文本框

代码

note.json 文件主要引入使用到的组件

代码语言:json
复制
{
  "usingComponents": {
    "t-collapse": "tdesign-miniprogram/collapse/collapse",
    "t-collapse-panel": "tdesign-miniprogram/collapse-panel/collapse-panel",
    "t-textarea": "tdesign-miniprogram/textarea/textarea",
    "t-button": "tdesign-miniprogram/button/button"
  }
}

note.wxml 定义上述页面结构,其中的 t-textarea 通过 bind:change 绑定内容,按钮 t-button 通过 bind:tap 绑定点击动作

代码语言:xml
复制
<view class="demo">
  <view class="demo-title">Note</view>
  <scroll-view 	scroll-y class="list-area">
    <view wx:for="{{notes}}" wx:key="index">
      <t-collapse>
        <t-collapse-panel header="{{item.header}}" value="{{item.isCollapsed}}" expandIcon>
          {{item.content}}
        </t-collapse-panel>
      </t-collapse>
    </view>
  </scroll-view>
  <view class="input-area">
    <view style="flex: 8;">
      <t-textarea t-class="textarea" placeholder="请输入文字" disableDefaultPadding="{{true}}" bind:change="onTextAreaChange" value="{{inputValue}}" />
    </view>
    <view style="flex: 2;">
      <t-button theme="primary" class="button" style="height: 100%" bind:tap="onSubmit">提交</t-button>
    </view>
  </view>
</view>

note.wxss 定义样式,其中 list-areainput-area 通过固定高度定位和实现 scroll-view 的滚动效果,而同一行的输入框和提交按钮通过 flex 布局

代码语言:css
复制
.list-area {
  width: 100%;
  height: 950rpx;
}
.input-area {
  display: flex;
  height: 100rpx;
  bottom:0;
  width:100%;
}
.textarea {
  height: 100%;
}
.button {
  margin: 0 16rpx;
  height: 1000%;
}

note.js 定义页面逻辑,输入内容后提取标题,创建新的 note 对象并加入 this.data.notes 列表中

代码语言:js
复制
const HEADER_MAX_LENGTH = 18

Page({
  data: {
    inputValue: "",
    notes: [],
    cnt: 0,
  },
  onTextAreaChange(e) {
    this.setData({
      inputValue: e.detail.value,
    });
  },
  onSubmit() {
    if (this.data.inputValue) {
      const cnt  = this.data.cnt + 1
      const note = {
        header: cnt + '. ' + this.data.inputValue.substring(0, HEADER_MAX_LENGTH),
        content: this.data.inputValue,
        isCollapsed: true
      } 
      this.setData({
        notes: [...this.data.notes, note],
        inputValue: '',
        cnt: cnt
      });
    }
  },
});

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 项目结构
  • 新建页面
  • 页面设计
  • 代码
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档