如何从零开始开发一个小程序

news2024/11/18 20:13:52

如何从零开始开发一个小程序

    • 开始
      • 申请账号
      • 开发设置
      • 开发工具
      • 新建小程序
    • 阅读文档
      • 模版语法
    • 项目架构
    • 开始编写
      • 基础语法
        • wx:for循环
        • wx:if判断
      • 页面导航
      • 自定义组件引用
      • 样式修改
        • 单行、多行省略
        • flex布局
        • grid布局
    • 发布

开始

申请账号

  • 小程序注册页

开发设置

  • 登录 小程序后台 ,我们可以点击左侧菜单 “开发”-“开发管理”,点击后正文上方点击 “开发设置” ,就看到小程序的 AppID(小程序ID) 了 。
  • 小程序的 AppID 相当于小程序平台的一个身份证,后续你会在很多地方要用到 AppID (注意这里要区别于服务号或订阅号的 AppID)。
    有了小程序帐号之后,我们需要一个工具来开发小程序。

开发工具

  • 前往 开发者工具下载页面 ,根据自己的操作系统下载对应的安装包进行安装,建议下载稳定版.
  • 打开小程序开发者工具,用微信扫码登录开发者工具,准备开发你的第一个小程序吧!

新建小程序

  • 小程序tab新建项目,给你的项目起一个好听的名字,填入刚刚申请到的小程序的 AppID,后端服务勾选 “不使用云服务” ,默认第一个ts官网基础模版即可,点击新建,你就得到了你的第一个小程序了,点击顶部菜单编译就可以在微信开发者工具中预览你的第一个小程序。
  • 在这里插入图片描述
  • 在这里插入图片描述

阅读文档

  • 微信官方文档-小程序
  • 建议有空把小程序相关文档都看一遍在这里插入图片描述

模版语法

  • WXML语法参考

项目架构

  • 原生开发 + vant weapp ui
  • 组件: 原生组件
  • 第三方组件: Vant Weapp
    • 使用 Vant Weapp 前,请确保你已经学习过微信官方的 小程序简易教程 和 自定义组件介绍。
  • icon: 阿里巴巴矢量图标库

开始编写

  • 按照提示安装vant/weapp
    • 步骤五 typescript 支持可以跳转,默认ts模版已经有了
    • 点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。
  • app.json 全局引入组件,其他页面或者组件都可以直接使用
      "usingComponents": {
        "van-search": "@vant/weapp/search/index",
        "van-tab": "@vant/weapp/tab/index",
        "van-tabs": "@vant/weapp/tabs/index",
        "van-button": "@vant/weapp/button/index",
        "van-grid": "@vant/weapp/grid/index",
        "van-grid-item": "@vant/weapp/grid-item/index",
        "van-icon": "@vant/weapp/icon/index"
      },
    
  • index.wxml直接使用
      <view>
        <van-search value="{{ value }}"   bind:click-input="onSearch" disabled="{{true}}"/>
      </view>
    

基础语法

wx:for循环

  • index.wxml
    • wx:for-item=“item” 不需要重新命名,可以忽略不写
      <van-tab wx:for="{{ tabData }}" wx:for-item="item" wx:key="id" title="{{item.title}}">
			{{item.title}}
      </van-tab>
  • index.ts
Page({
  data: {
    value: "",
    voiceList: [],
  },
  onLoad() {
    let that = this;
    // 使用 Mock
    ajax({
      data: "",
      fn: function (res: any) {
        //这里既可以获取模拟的res
        console.log(res.data);
        //修改data里数据
        that.setData({ voiceList: res.data });
      },
      mockConfig: {
        "data|50": [
          {
            "id|+1": 0,
            img: "@image('150x100', '#4A7BF7','#fff','pic')",
            title: "@ctitle(3,200)",
            name: "@cname()",
            time: '@datetime(M-dd)',
            play: "@float(1,160,0,9)",
            icon: "@image('5x10')",
          },
        ],
      },
    });
  }
});

wx:if判断

<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>

页面导航

  • 页面下方导航

  • 在这里插入图片描述

  • app.json

{
  "pages": [
    "pages/index/index",
    "pages/logs/logs",
    "pages/subregion/subregion",
    "pages/my/my",
    "pages/components/ChaseItem/ChaseItem",
    "pages/levelPage/search/search"
  ],
"tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/subregion/subregion",
        "text": "分区"
      },
      {
        "pagePath": "pages/my/my",
        "text": "我的"
      }
    ]
  }
}

自定义组件引用

  • index.wxml
    • 需要用自定义组件的页面
<view class="page page-home">
    <van-tabs active="{{ active }}" bind:change="onChange">
      <van-tab wx:for="{{ tabData }}" wx:for-item="item" title="{{item.title}}">
        <hot-item voiceList="{{voiceList}}" wx:if="{{item.title == '热门'}}"/>
        <chase-item wx:else/>
      </van-tab>
    </van-tabs>
</view>
  • index.json
    • 配置自定义组件的名称和引用路径
{
  "usingComponents": {
    "hot-item": "../components/HotItem/HotItem",
    "chase-item": "../components/ChaseItem/ChaseItem"
  }
}
  • ChaseItem.ts
    • 自定义组件,ts文件的基础
    • Component 配置自定义组件,properties 父组件的prop传入,data自己的数据自定义,observers 监听,methods 方法, ready 加载完成后调用接口
// pages/components/HotItem/index.ts

Component({
  properties: {
    // chaseList: { // 属性名
  },
  data:{
    chaseDaysData:[],
    btnList:[],
    recommendList:[],
    active:0
  },
  observers: {
    'chaseDaysData': function(chaseDaysData:any[]) {
      console.log('chaseDaysData',chaseDaysData)
    }
  },
  methods:{
    imageOnloadError(e:any){
      console.log("图片加载出错啦",e)
    },
  },
  ready(){
        let that = this;
        // 每天番剧
        ajax({data:"",fn:function (res:any) {
          //这里既可以获取模拟的res
          console.log(res.data)
          that.setData({chaseDaysData:res.data})
        },mockConfig:{
              'data|7': [{
                'id|+1': 1,
                'title|+1': ['一','二','三','四','五','六','日'],
                ...Mock.mock({
                  'items|7':[{
                    'img': "@image('80x80', '#4A7BF7','#fff','pic')",
                    'title': '@ctitle(4,10)',
                  }]
                })
              }] 
        }});
  }
})

样式修改

单行、多行省略

  • 单行省略
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 160rpx;
  • 多行省略
  text-overflow: ellipsis;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;

flex布局

  • 详见flex布局
    • 弹性布局,用来为盒状模型提供最大的灵活性。

grid布局

  • 详见CSS Grid 网格布局教程

    • 网格布局适合下面的场景
      /* 上面 */
      display: grid;
      grid-template-columns: 1fr 1fr 1fr 1fr;
      grid-row-gap: 10rpx; 
      grid-column-gap: 10rpx;
      padding: 10rpx 10rpx;
    
      /* 下面 */
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
       grid-row-gap: 10rpx; 
      grid-column-gap: 10rpx;
      padding: 10rpx 10rpx;
    

    在这里插入图片描述

发布

  • 右上角有上传按钮,点击即可.
    在这里插入图片描述
  • 在小程序-管理-版本管理,就可以看到上传的版本,点击提交审核即可,审核版本通过后,再次发布审核版本即可
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue2+Element ui通用后台】Mock.js

文章目录Mock.js首页数据调用mock数据并完成布局Mock.js Mock.js 官网 Mockjs Github地址 作用&#xff1a;生成随机数据&#xff0c;拦截 Ajax 请求 使用npm i mockjs进行安装&#xff0c;然后在 api 下新建 mock.js import Mock from mockjs// 定义mock请求拦截 Mock.mock…

【CPU是如何执行程序的?】

CPU是如何执行程序的&#xff1f;1、、硬件结构介绍1.1、CPU1.2、内存1.3、总线1.4、输入/输出设备二、程序执行的基本过程三、a11执行的详细过程现代计算机的基本结构为五个部分&#xff1a;CPU、内存、总线、输入/输出设备。或许你了解了这些概念&#xff0c;但是你知道a11在…

leetcode每日一题(python)2023-1.2 1801. 积压订单中的订单总数 (middle)

leetcode每日一题 &#x1f6a9; 学如逆水行舟&#xff0c;不进则退。 —— 《增广贤文》 题目描述&#xff1a; 给你一个二维整数数组 orders &#xff0c;其中每个 orders[i] [price(i), amount(i), orderType(i)] 表示有 amount(i)( )笔类型为 orderType(i) 、价格为 pric…

没错,这是2023年开篇!!

不知不觉小G和Gopher们一起相伴着又走过了一个年头&#xff0c;迎来了2023年。回望这一年我们有遗憾&#xff1a;因疫情的原因没能和大家在线下2022 GopherChina大会相聚一堂我们也有快乐与成就&#xff1a;在经过一番调查、统计、分析后发布了《2022 Q2 GO开发者问卷调查结果》…

阿里、京东、百度“激战”互联网医疗

与衣食住行一样&#xff0c;医疗需求同样对人们的生存具有重要意义。医疗行业经过多年的发展&#xff0c;也已经发生了翻天覆地的变化。除了线下医疗日益完善之外&#xff0c;互联网医疗也随着互联网的飞速发展而实现了快速起飞。现如今&#xff0c;互联网医疗已经逐步成为了线…

沿全尺寸模型水平轴 MHK 涡轮机(DOE RM1)叶片性能表征计算(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 该存储库包括 MATLAB 脚本和输入文件示例&#xff0c;用于沿全尺寸模型水平轴 MHK 涡轮机叶片计算 3D AOA、CL 和 CD。该脚本是…

idea插件代码生成工具EasyCode

idea插件代码生成工具EasyCode1. EasyCode下载安装2. EasyCode配置模板2.1 配置路径2.2 配置文件2.2.1. controller.java2.2.2. entity.java2.2.3. mapper.java2.2.4. service.java2.2.5. serviceImpl.java2.2.6. mapper.xml3. 构建SpringBoot项目3.1 初始化数据库3.2 创建项目…

git push -u origin master报错(vscode)

Missing or invalid credentials. Error: connect ECONNREFUSED /run/user/1000/vscode-git-e10c66c0ac.sock at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1157:16) { errno: -111, code: ‘ECONNREFUSED’, syscall: ‘connect’, address: ‘/run/user/1000/…

Docker 镜像仓库的构建与镜像管理

目录 Docker 私有仓库 1. 简介 2. 构建 Docker 私有仓库 &#xff08;1&#xff09;部署环境 &#xff08;2&#xff09;服务端部署 &#xff08;3&#xff09;客户端配置 &#xff08;4&#xff09;私有镜像仓库测试 Dockerfile 1. 概述 2. Dockerfile 的组成 3. D…

对序表记录固定排序

【问题】 PRODUCT_ID, PRODUCT_NAME 100 Nokia 200 IPhone 300 Samsung 400 LG I want to display the records like below: PRODUCT_ID, PRODUCT_NAME 300 Samsung 200 IPhone 100 Nokia 400 LG【回答】 固定排序有时排序依据会经常变动&#xff0c;并且…

JavaScript课堂笔记

前置任务&#xff1a; 配套视频&#xff1a;https://www.bilibili.com/video/BV15v411K7qe/ 第一章&#xff1a;基本语法 第一节&#xff1a;JavaScript的来源 1.网景公司&#xff08;Netscape&#xff09;: 当时就职于Netscape公司的布兰登[外链图片转存失败,源站可能有防…

前端使用jquery传递对象数组给后端说明及总结

1.代码 前端 <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tr…

苹果,Inter,AMD

1.指令集 & 架构区别 目前世界上主要有两种CPU架构&#xff0c;分别是&#xff1a;x86架构和ARM架构。 目前主流的电脑都是采用x86架构处理器&#xff0c;比如 Intel/AMD处理器。--复杂指令集 手机平板电脑等设备都采用了ARM架构处理器&#xff0c;比如高通&#xff0c;…

Elasticsearch集群许可证过期问题处理

当你执行索引相关操作有如下报错&#xff1a; HTTP/1.1 403 Forbidden content-type: application/json; charsetUTF-8 content-length: 384{"error" : {"root_cause" : [{"type" : "security_exception","reason" : "…

大学STEM教育的技能水平和收获

2021年一篇文章&#xff0c;有很多断章取义的解读&#xff0c;本身这篇文章也有很多主观性强的输出。 文章数据都是2020年之前。 Received: 6 June 2020; Accepted: 27 January 2021; 长达17页的论文&#xff0c;看了一遍&#xff0c;觉得构思很巧妙。 类似一篇精心设计的实验…

同样是断言,为何 Hamcrest 如此优秀?

根据项目对象模型&#xff08;POM&#xff09;的概念&#xff0c;Maven 可以管理一个项目的依赖关系、构建、报表以及信息中心的部分文档。 hamcrest 断言 maven依赖&#xff1a; 1080160 26.3 KB hamcrest支持多种语言&#xff0c;这里以 Java 为例&#xff1a; 进入到 hamcre…

新兴新能源设施[2]--盐穴压缩空气储能预警模块开发

新兴新能源设施[2]--盐穴压缩空气储能预警模块开发1. 总体方案设计2 脉冲发生装置的部件设计2.1 脉冲发生装置基础选型2.2 相关技术指标1. 总体方案设计 盐穴储能注气排卤预警短节远程传输系统硬件的总体设计框架如图1&#xff08;a&#xff09;所示&#xff0c;其前端监测模块…

削波导致的振动值偏小

今天接到计量院的反馈&#xff0c;说振动表在250Hz时&#xff0c;振动台开100um时&#xff0c;测下来只有89um。我在公司试了下&#xff0c;发现250Hz、100um时&#xff0c;振动的大小是78.5mm/s&#xff0c;有效值是78.5*0.70755.5mm/s&#xff0c;这时传感器的输出电压是2320…

怎样识别图片中的文字?手机电脑都可以的

普通人过普通的生活就好&#xff0c;简单而平淡。而平淡的生活常常可以看到各种图片文字&#xff0c;毕竟遇到要记录重要的信息拍一拍就可以解决问题了&#xff0c;很简单的。通常情况下&#xff0c;我们都会再次检查相册中的关键信息&#xff0c;甚至有时我们还要整理出里面的…

10_1、Java基本语法之枚举类的使用

一、枚举类的引入 当在项目中使用一个或多个变量或常量表示某种状态时&#xff0c;比如&#xff0c;星期&#xff1a;星期一...星期天、就职状态&#xff1a;在职、离职...复岗等时&#xff0c;这些情况类的对象只有有限个&#xff0c;是确定的。这时就可以使用枚举类来定义这些…