从零开始做一款微信小程序

1.注册小程序账号

这个是第一步,无论使用什么技术开发,第一步就是在微信公众平台注册一个账号。
  1. 个人开发与企业小程序的区别
  • 个人小程序:注册无需认证,注册流程简单
  • 企业小程序:需要提供管理者身份信息,企业各项资质、对公信息及缴费认证、企业验证等

2. 初始化项目

实现方式主要有两种

 1. 原生
 2. 多端转换框架(uniappTaro)

1.原生小程序初始化项目

  1. 使用微信开发者工具进行项目初始化
    新建项目
  2. 可以选择小程序开发模板
    模板
  3. 项目目录结构
    项目目录结构

总体目录

  1. 在utils中定义方法、工具等,主要使用common.js暴露接口
  2. pages中放我们的页面
  3. eslintrc.js文件在代码质量审查的时候的代码依赖
  4. app.js、app.json、app.wxss是我们微信小程序代码的重要部分 app.js是小程序逻辑,app.json是小程序配置,app.wxss是小程序公共样式表

pages目录

  1. js文件:是页面的必须成分,作用是实现页面逻辑;
  2. wxml文件:是页面的必须成分,作用是页面结构;
  3. json文件:不是页面的必须成分,作用是对页面进行配置
  4. wxss文件:不是页面的必须成分,作用用来配置页面样式表;

2. uniapp初始化项目

  1. 使用HbuilderX工具进行项目初始化,指定项目名称,选择模板,选择Vue版本,点击创建即可。
    新建项目
  2. 项目目录
    目录

目录

  1. pages.json配置页面路径、页面窗口样式、tabBar、navigationBar 等页面类信息
  2. static存放静态资源文件
  3. main.js Vue初始化入口文件
  4. App.vue 应用配置,用来配置小程序的全局样式、生命周期函数等
  5. manifest.json 配置应用名称、appid、logo、版本等打包信息

注意:uniapp修改单页面配置与原生、taro不同 需在pages.json中修改
在这里插入图片描述

3. Taro初始化项目

Taro 项目基于 node,请确保已具备较新的 node 环境(>=12.0.0),推荐使用nvm来切换管理node版本

1.首先,你需要使用 npm 或者 yarn 全局安装 @tarojs/cli,或者直接使用 npx:

# 使用 npm 安装 CLI
 npm install -g @tarojs/cli

# OR 使用 yarn 安装 CLI
 yarn global add @tarojs/cli

# OR 安装了 cnpm,使用 cnpm 安装 CLI
 cnpm install -g @tarojs/cli
  1. 使用命令创建模板项目
taro init myApp
模板
  1. 目录结构

├── dist 编译结果目录
|
├── config 项目编译配置目录
| ├── index.js 默认配置
| ├── dev.js 开发环境配置
| └── prod.js 生产环境配置
|
├── src 源码目录
| ├── pages 页面文件目录
| | └── index index 页面目录
| | ├── index.js index 页面逻辑
| | ├── index.css index 页面样式
| | └── index.config.js index 页面配置
| |
| ├── app.js 项目入口文件
| ├── app.css 项目总通用样式
| └── app.config.js 项目入口配置
|
├── project.config.json 微信小程序项目配置 project.config.json
├── project.tt.json 字节跳动小程序项目配置 project.tt.json
├── project.swan.json 百度小程序项目配置 project.swan.json
├── project.qq.json QQ 小程序项目配置 project.qq.json
|
├── babel.config.js Babel 配置
├── tsconfig.json TypeScript 配置
├── .eslintrc ESLint 配置
|
└── package.json

3. 小程序全局配置及页面单独配置

1.原生

在app.json文件的window属性中配置,pages中配置页面路径(默认展示第一项)

原生
2.uniapp

在pages.json文件的globalStyle属性中配置,pages中配置页面路径(默认展示第一项)

uniapp
3.Taro

在app.config.ts文件的window属性中配置,pages中配置页面路径(默认展示第一项)

uniapp

全局配置文件及常用配置项目

  1. pages
    记录当前小程序所有页面存放的路径
  2. window( uniapp是globalStyle )
    全局设置小程序窗口的外观
  3. tabBar
    设置小程序底部的tabBar效果
  4. style
    是否启用新版的组件样式

配置属性

属性名类型默认值说明
navigationBarTitleTextstring字符串导航栏标题文字内容
navigationBarBackgroundColorstring字符串导航栏背景颜色,如#000000
navigationBarTextStylestring字符串导航栏标题颜色,仅支持black/white
backgroundColorstring字符串窗口的背景色
backgroundTextStylestring字符串下拉loading的样式,仅支持dark/light
enablePullDownRefreshstring字符串是否全局开启下拉刷新
onReachBottomDistancestring字符串页面上拉触底事件触发时距页面底部距离,单位px

点我查看更多配置项

4. 路由跳转等api的使用

三者使用几乎相同,只是调用对象不同
需要注意的是,某些小程序api更新,与其他平台有差异,具体使用详见官方文档。

举例:路由跳转navigateTo,传参在url后拼接

    Taro.navigateTo({url:"/pages/index/index?type=1")
    uni.navigateTo({url:''})
    wx.navigateTo({url:''})

像一些登录,上传文件等api的使用也相差无几,具体使用详见官网。

    Taro.login()
    uni.login()
    wx.login()

注意: 在小程序获取用户头像时wx.getUserProfile,通过插件获取头像wx.getUserInfo均已失效,会返回灰色头像,昵称会返回"微信用户"。要获取微信头像可以使用微信"头像昵称填写",可以选择使用微信头像或自定义上传。

Taro官网
uniapp官网
wx官网

5. 使用小程序插件

在这里插入图片描述

以使用地图选择为例:

  1. 在全局配置项中引入插件
"plugins": {
    "wx-chooseLocation": {
      "version": "1.0.0",
      "provider": "wx3153655fd3ea84fd"
    }
  }
  1. 设置插件授权
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序定位"
    }
  }
  1. 页面中使用
    const getlocation = () => {
      let plugin;
      try {
        // eslint-disable-next-line no-undef
        plugin = requirePlugin("wx-chooseLocation");
      } catch (error) {
        console.error(error);
      }
      plugin &&
        plugin
          .getChooseLocation()
          .then((res) => {
            console.log("res", res);
          })
          .catch((e) => {});
    };
    getlocation();  
    // 返回值
{
	address: "山东省济南市历下区奥盛大厦"
	errMsg: "chooseLocation:ok"
	latitude: 36.675733
	longitude: 117.137308
	name: "奥盛大厦1号楼"
}

5. 组件库推荐

  1. 原生
    • VantWeapp
    • iView WeApp
    • MinUI
  2. uniapp
    • uView
    • FirstUI
  3. Taro
    • NutUI
    • OSSA (taro3+React)
    • vantWeapp(不推荐,使用后不再具有多端转换的能力。可以使用vantWeapp衍生库@antmjs/vantui )

6. 开发中遇到的问题及解决办法

  1. 双向绑定
  • 微信原生不支持通过v-model的方式实现自动双向绑定,需要给表单元素通过绑定事件,并使用this.setData来赋值实现。
  • 基础库 2.9.3以上可以接触借助简易双向绑定机制model:value = “name” 来实现双向绑定,或使用change事件实现双向绑定
<van-file type='text' :value='name' @change='inputChange'></van-file>

const name = ref<string>('')

const inputChange = (e)=>{
    name.value = e.detail
}

  1. 原生小程序对象赋值

如果给对象的属性赋值,可以使用this.setData({‘obj.key’:value})来赋值,但是如果给某个属性名是变量的属性赋值,通过这种方法是会报错的,经过多次尝试,发现使用如下的方式赋值成功。

    let newObj = `obj.${key}`
    
    this.setData({
        [newObj]: value
    })
  1. 小程序中标签及方法改变
    div ——> view
    span ——> text
    @click ——> @tap
    注意: 在使用某些组件库中的组件时,点击方法仍然是click
    更多小程序事件

  2. 获取项目版本号
    开发版体验版不支持获取版本号,只支持正式版获取

Taro.getAccountInfoSync().miniProgram.version  // 体验版获取版本号为空

7. 项目发布

  1. 项目开发完毕后,开发人员点击上传按钮将代码上传到微信服务器
uniapp
  1. 设置开发人员、管理员 及项目发包后的体验人员
uniapp

3.登录微信公众平台,提交版本审核,审核成功可部署线上版本

uniapp
  1. 获取小程序appid及部署服务器域名(只支持https)
uniapp
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值