用Taro做个微信小程序Todo, 小白工作记录

这篇具有很好参考价值的文章主要介绍了用Taro做个微信小程序Todo, 小白工作记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序框架: Taro

做微信小程序的框架, 几个比较主流的:

  • 官方的WePY: https://tencent.github.io/wepy/document.html#/
  • 美团的mpvue: http://mpvue.com/mpvue/#-html
  • 京东的Taro: https://taro.aotu.io/

前两者都是Vue风格的, Taro是React的.

本篇本着学习的目的, 用Taro做一个简单的小程序.
代码在这里: https://github.com/mengdd/mini-program-todo
这是预览图:

本文地址: https://www.cnblogs.com/mengdd/p/mini-program-todo-using-taro.html

背景:
一直做Android开发, 最近想把其他各种技术都撸一撸, 拓展一下视野.
之前练过微信小程序原生开发的例子, 基本上只知道个大概, 翻书马冬梅, 合书马什么梅?
所以这次用框架了, 觉得还是要有个输出, 这样印象深刻一些.

所以本文是从一个小白的角度, 手把手做练习的.

Taro程序环境

这部分参考:

  • 官方文档: https://nervjs.github.io/taro/docs/README.html
  • Getting Started:https://nervjs.github.io/taro/docs/GETTING-STARTED.html

要有node环境, 推荐用nvm来管理.

需要安装CLI工具:

npm install -g @tarojs/cli

创建项目并运行

创建项目

创建模板项目:

taro init myApp

在这个阶段会有一些问题要回答.

* 请输入项目介绍! My awesome project blablabla.
* 是否需要使用 TypeScript ? Yes
* 请选择 CSS 预处理器(Sass/Less/Stylus) Sass
* 请选择模板 默认模板

完了之后会自动安装依赖:

npm install

然后就成功啦!

运行

Taro需要运行不同的命令, 将Taro代码编译成不同端的代码, 然后在对应的开发工具中查看效果.

这里仅说微信小程序. 还是需要微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

import这个项目就行了.

开发前微信开发者工具的项目设置要注意:

需要设置关闭ES6转ES5功能, 开启可能报错.
需要设置关闭上传代码时样式自动补全, 开启可能报错.
需要设置关闭代码压缩上传, 开启可能报错.

这些默认都是关闭的.

微信小程序的编译预览及打包:

npm script

$ npm run dev:weapp
$ npm run build:weapp

或者:

$ taro build --type weapp --watch
$ taro build --type weapp

加上--watch会监听文件修改, 去掉会对代码进行压缩打包.

运行编译命令之后就可以在微信开发者工具中预览了. 是显示一个Hello World.

项目结构

因为创建项目的时候用了TypeScript, 所以项目结构是这样的:

├── dist                   编译结果目录
├── config                 配置目录
|   ├── dev.js             开发时配置
|   ├── index.js           默认配置
|   └── prod.js            打包时配置
├── src                    源码目录
|   ├── pages              页面文件目录
|   |   ├── index          index页面目录
|   |   |   ├── index.scss index页面样式
|   |   |   └── index.tsx  index页面逻辑
|   ├── app.scss           项目总通用样式
|   ├── app.tsx            项目入口文件
|   └── index.html          
└── package.json

如果需要创建组件, 可以在src下创建component目录来统一存放组件.

“Hello world!”就在index.tsx中.

IDE

关于IDE:
我发现用微信开发者工具是打不开这些后缀名为scsstsx的文件的.
微信开发者工具只能用来预览.

后来用了Intellij, 是能查看文件了,
但是开始写代码之后, 发现没有自动提示, 也没有自动格式化工具.

又下了个VS CODE:

brew cask install visual-studio-code

格式化的快捷键是:Shift + Alt + F.

后来我在Text Editor设置里勾选了Format On Save.

编写代码

Step 1: 静态页面显示

先弄几个数据静态显示一下:

export default class Index extends Component {
  config: Config = {
    navigationBarTitleText: '首页'
  }

  constructor(props) {
    super(props)
    this.state = {
      list: ['get up', 'eat breakfast', 'study',]
    }
    inputVal: ''
  }

  render() {
    let { list, inputVal } = this.state

    return (
      <View className='index'>
        <View className='list_wrap'>
          <Text>Todo List</Text>
          {
            list.map((item, index) => {
              return <View>
                <Text>{index + 1}.{item}</Text>
              </View>
            })
          }
        </View>
      </View>
    )
  }
}


然后命令行运行:

taro build --type weapp --watch

就会直接显示出来结果. 之后的修改也是随时呈现.

这里IDE报告两个TypeScript的问题:

Property 'list' does not exist on type 'Readonly<{}>'

和:

Property 'inputVal' does not exist on type 'Index'.

按照这里的方法修改的:

interface MyProps {
}

interface MyState {
  list: Array<string>;
  inputVal: string;
}

export default class Index extends Component<MyProps, MyState> {
//...
}

代码中设置值的时候调用this.setState().

Step 2: 添加和删除项目

加上输入框, 添加和删除按钮的对应方法.
完整代码:

interface MyProps {
}

interface MyState {
  list: Array<string>;
  inputVal: string;
}

export default class Index extends Component<MyProps, MyState> {
  config: Config = {
    navigationBarTitleText: '首页'
  }

  constructor(props) {
    super(props)
    this.state = {
      list: ['get up', 'eat breakfast', 'study',],
      inputVal: ''
    }

  }

  addItem() {
    let { list } = this.state
    const inputVal = this.state.inputVal

    if (inputVal == '') return
    else {
      list.push(inputVal)
    }
    this.setState({
      list,
      inputVal: ''
    })
  }

  removeItem(index) {
    let { list } = this.state
    list.splice(index, 1)
    this.setState({
      list
    })
  }

  inputHandler(e) {
    this.setState({ inputVal: e.target.value })
  }

  render() {
    let { list, inputVal } = this.state

    return (
      <View className='index'>
        <Input className='input' type='text' value={inputVal} onInput={this.inputHandler.bind(this)} />
        <Text className='add' onClick={this.addItem.bind(this)}>添加</Text>
        <View className='list_wrap'>
          <Text>Todo List</Text>
          {
            list.map((item, index) => {
              return <View className='list_item'>
                <Text>{index + 1}.{item}</Text>
                <Text className='del' onClick={this.removeItem.bind(this, index)}>删除</Text>
              </View>
            })
          }
        </View>
      </View>
    )
  }
}

Step 3: 样式调整

用了这里面的样式: https://juejin.im/book/5b73a131f265da28065fb1cd

然后企图调整button的对齐. (CSS不太擅长, 请轻拍, 请指教.)

.input {
    display: inline-block;
    margin: 32px;
    border: 1px solid #666;
    width: 65%;
    vertical-align: middle;
}
.list_wrap {
    padding: 32px;
}
.list_item {
    margin: 20px 0;
}
.add,
.del {
    display: inline-block;
    width: 120px;
    height: 60px;
    margin: 0 10px;
    padding: 0 10px;
    font-size: 22px;
    line-height: 60px;
    text-align: center;
    border-radius: 10px;
    box-sizing: border-box;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    justify-content: center;
    vertical-align: middle;
}
.add {
    background-color: #5c89e4;
    color: #fff;
    border: 1px solid #5c89e4;
}
.del {
    background-color: #fff;
    color: #5c89e4;
    border: 1px solid #5c89e4;
    position: absolute;
    right: 32px;
}


Taro命令

快速生成新的页面文件:

Taro create --name [页面名称] 

参考

  • taro github
  • awesome taro
  • 微信开发者工具
  • 掘金小册: Taro 多端开发实现原理与项目实战

最后, 欢迎关注微信公众号: 圣骑士Wind

作者:圣骑士wind

原文地址:https://www.cnblogs.com/mengdd/p/mini-program-todo-using-taro.html文章来源地址https://www.toymoban.com/news/detail-831569.html

喜欢 0

到了这里,关于用Taro做个微信小程序Todo, 小白工作记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Taro】微信小程序关于隐私协议改造

    之前微信刚公布要求整改小程序获取用户隐私接口的改造公告那会,Taro还没有支持这方面的更新,于是当时就暂时搁置了一下,后面发现有人回复了我的提问,并且给出了解决方案。按照大佬给出的解决方案试了下,果然可行,所以在此记录分享一下! 首先,当时的帖子在

    2024年02月07日
    浏览(38)
  • taro 微信小程序写滑动删除左滑

    思路: css写布局,增加过渡效果,逻辑控制哪一条展开,展开项增加展开样式,滑动判断

    2024年02月10日
    浏览(38)
  • 第一个微信小程序 Taro + React

    新建一个文件夹,在该文件夹下打开cmd,执行命令 然后新建一个taro项目 基本上一路回车就可以,可参考下面的选项 打开idea,open该项目 安装依赖 运行小程序

    2024年02月13日
    浏览(27)
  • Taro微信小程序 实现下拉、触底刷新

    下拉刷新, 需要在页面的config文件中配置 enablePullDownRefresh: true, onReachBottomDistance: 50, backgroundTextStyle: \\\'dark\\\', 在代码中使用usePullDownRefresh, 当我们刷新页面时候会触发usePullDownRefresh方法,这里我们获取数据。

    2024年02月11日
    浏览(30)
  • taro3 微信小程序 createIntersectionObserver 监听无效

    项目: taro3 + vue3 官方文档 版本:3.x Taro.createIntersectionObserver(component, options) 创建并返回一个 IntersectionObserver 对象实例。在自定义组件或包含自定义组件的页面中,应使用 this.createIntersectionObserver([options]) 来代替。 支持情况:微信小程序 抖音小程序 H5 React Native Harmony 类型

    2024年02月16日
    浏览(42)
  • 微信小程序--Taro框架实际开发中的问题汇总

    前言:微信小程序相信大家都不陌生,目前小程序开发主流的框架有微信 原生开发 , uni-app ,以及今天的重点 Taro 。编者自身小程序开发经验也不多,仅针对自身在小程序开发中的问题做一次汇总,望更多像我一样的小白少走 一点弯路。 注意:本篇博客中小程序开发基于

    2024年02月16日
    浏览(39)
  • Taro:微信小程序通过获取手机号实现一键登录

            本文介绍如果通过微信小程序的getPhoneNumber方法获取用户微信绑定的手机号并自动注册登录。 1、按钮类型 openType 指定 \\\"getPhoneNumber\\\"   2、@getphonenumber必须全部小写 code:手机号获取凭证:动态令牌。可通过动态令牌换取用户手机号。         后台根据前端传入

    2024年02月16日
    浏览(41)
  • 基于 Taro 框架的微信小程序 canvas 绘图海报组件

    项目需要保存收款码,效果如图: (此文仅代表个人日常工作记录,能力有限描述并不全面) 1.安装 npm i taro-plugin-canvas -S --production(taro-plugin-canvas 是基于 Taro 框架的微信小程序 canvas 绘图组件,封装了常用的操作,通过配置的方式生成分享图片)  2.引入:import { TaroCanvas

    2024年01月21日
    浏览(34)
  • 反编译微信小程序,可导出uniapp或taro项目

    微信小程序反编译(全网通用) 微信小程序反编译 反编译主要分为四个阶段 操作流程 1. node.js安装 2. node安装模块 3. 开始反编译 4. 导入到微信开发者工具既可运行 微信小程序反编译 当碰到不会写的小程序功能时,正好看到隔壁小程序有类似的功能,一般都想借鉴一下,本

    2024年02月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包