公民开发者零基础入门小程序开发全流程指南从注册到上线
先聊聊”公民开发者”是个什么鬼
你可能听说过”专业人士”开发软件,但”公民开发者”这个词听起来有点陌生。其实它说的就是你和我这样的普通人——不是计算机科班出身,没有天天敲代码的专业背景,但你想自己做出个小程序来,解决生活中的某个小问题,或者纯粹出于兴趣折腾一下。
这想法完全没问题。现在小程序开发的门槛确实被拉低了,哪怕你连 HTML 是啥都不知道,只要跟着步骤走,也能把一个小程序从 0 搞到 1,真正上线让朋友用得上。
这篇文章就是想陪你走一遍这个全程,从注册账号到最终上线,每一步都掰开揉碎了讲清楚。我们不着急,一步一步来。
第一步:搞清楚你要做什么类型的小程序
在动手之前,先问自己一个问题:我要做的这个小程序,属于哪一类?
微信小程序目前分好几大类,不同类型的开发难度和所需资源差别不小。
| 类型 | 适合谁 | 开发难度 | 举例 |
|---|---|---|---|
| 个人类型 | 想试试水、做兴趣项目 | 低 | 日记本、待办清单、天气查询 |
| 企业/组织类型 | 有营业执照的公司、团队 | 中 | 点餐小程序、电商商城 |
| 政府/媒体类型 | 政府机关、新闻媒体 | 中 | 政务办事、资讯发布 |
如果你是第一次做,强烈建议从个人类型入手。个人小程序的注册流程最简单,审核相对宽松,而且不需要你准备营业执照之类的材料。
第二步:注册微信小程序账号
这一步其实很简单,大概 10 分钟就能搞定。
2.1 注册入口
打开浏览器,访问微信公众平台的官方网址:
https://mp.weixin.qq.com/
点右上角的“立即注册”按钮。
2.2 填写注册信息
注册页面会让你选择账号类型。这里选“小程序”,然后选择“个人”类型。
接下来会要求你填写一些基本信息:
- 邮箱:用你常用的邮箱就行,这个邮箱会成为小程序的管理员账号
- 密码:设置一个密码
- 确认邮箱:再填一次确认
填完点击“注册”。
2.3 邮箱验证
注册成功后,你的邮箱会收到一封来自微信的验证邮件。打开邮箱,找到那封邮件,点击里面的“激活账号”按钮。
2.4 扫码确认
激活后,你会看到一个二维码。打开微信,点击右上角的”+“号,选择“扫一扫”,扫这个二维码确认注册。
2.5 完善信息
扫码确认后,系统会让你填写小程序的基本信息:
- 小程序名称:起个好名字,后面能改但有限制,建议想好再填
- 小程序头像:准备一张清晰的图片,建议尺寸 120x120 像素
- 小程序简介:简单描述你的小程序是做什么的
填完后点“确认注册”,你的小程序账号就注册好了!
第三步:下载开发工具
注册完账号,你只是有了一个”房子”,现在需要”装修工具”了。
3.1 下载微信开发者工具
访问微信官方下载地址:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
根据你的电脑系统选择对应的版本:
- Windows 用户:下载 Windows 版
- Mac 用户:下载 macOS 版
- Linux 用户:下载 Linux 版
3.2 安装开发者工具
下载完成后,双击安装包,按照提示一步步安装就行。Windows 用户建议装在默认路径(C 盘),Mac 用户拖到”应用程序”文件夹里就好。
3.3 登录开发者工具
安装完成后打开工具,你会看到一个登录界面。用你注册小程序时用的微信扫码登录。
登录成功后,你会看到开发者工具的主界面,这里就是你的”工作台”了。
第四步:创建第一个小程序项目
4.1 新建项目
在开发者工具的主界面,点击“新建项目”按钮。
会弹出一个新建项目的对话框,这里需要填几个关键信息:
| 字段 | 填写说明 |
|---|---|
| 项目名称 | 随便起个名字,比如”我的第一个小程序” |
| 开发模式 | 选择“小程序” |
| 小程序 AppID | 登录后工具会自动识别,如果没有,点击”使用测试账号”也能先开发 |
| 项目目录 | 选择一个你方便找到的文件夹 |
| 是否使用云开发 | 第一次做的话,先选“否”,后面再说 |
| 代码模板 | 选择“JavaScript 快捷启动模板” |
点击“确定”,工具会帮你创建一个项目模板。
4.2 认识项目结构
新建好项目后,你会看到这样的目录结构:
my-first-miniapp/
├── pages/
│ ├── index/
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ └── index.wxss
│ └── logs/
│ ├── logs.js
│ ├── logs.json
│ ├── logs.wxml
│ └── logs.wxss
├── utils/
│ └── util.js
├── app.js
├── app.json
├── app.wxss
└── sitemap.json
别慌,一个个来认识这些文件是干嘛的。
第五步:理解小程序的核心文件
小程序的代码结构和传统的网页开发不太一样,理解这些基本概念很重要。
5.1 app.json — 小程序的”总菜单”
这个文件是整个小程序的配置文件,告诉微信这个小程序有哪些页面、底部导航栏长什么样等等。
打开 app.json,你会看到类似这样的内容:
{
"pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "我的第一个小程序",
"backgroundColor": "#eeeeee"
},
"tabBar": {
"color": "#999999",
"selectedColor": "#07c160",
"backgroundColor": "#ffffff",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "images/tab-home.png",
"selectedIconPath": "images/tab-home-active.png"
},
{
"pagePath": "pages/logs/logs",
"text": "日志",
"iconPath": "images/tab-logs.png",
"selectedIconPath": "images/tab-logs-active.png"
}
]
},
"style": "v2",
"sitemapLocation": "sitemap.json"
}
解释一下关键配置:
pages:数组,列出小程序里所有的页面路径。每加一个新页面,都要在这里注册一下。window:配置整个小程序的窗口表现,比如导航栏颜色、标题文字。tabBar:配置底部的导航栏,可以有多个 tab 页。style:设为"v2"表示使用新版基础组件样式。
5.2 每个页面都有四个文件
看上面的目录结构,每个页面文件夹(比如 pages/index/)里有四个文件:
| 文件 | 作用 | 类比 |
|---|---|---|
index.js |
页面的逻辑代码,处理数据和事件 | 就像人的大脑,决定做什么 |
index.json |
页面的配置文件 | 页面的个人设置 |
index.wxml |
页面的结构(HTML) | 就像骨架,决定长什么样 |
index.wxss |
页面的样式(CSS) | 就像衣服,决定好不好看 |
这四个文件是配套的,缺一不可。
5.3 app.js — 小程序的”大脑”
// app.js
App({
onLaunch() {
// 小程序启动时执行
console.log('小程序启动了!')
},
globalData: {
userInfo: null,
// 这里可以放全局数据,所有页面都能用
appVersion: '1.0.0'
}
})
App() 是小程序的入口函数,每个小程序必须有且只有一个。globalData 里的数据是全局的,任何页面都可以读取和修改。
5.4 app.wxss — 全局样式
/* app.wxss */
.container {
padding: 20rpx;
font-size: 28rpx;
line-height: 1.5;
}
/* rpx 是微信小程序特有的单位,
750rpx 相当于屏幕宽度,
这样写在不同手机上都能自适应 */
第六步:动手写第一个页面
光说不练假把式,现在我们来写一个真正的小程序页面。
假设我们要做一个“今日天气”的小程序,显示今天的天气信息。
6.1 修改首页结构
打开 pages/index/index.wxml,清空里面的内容,改成这样:
<!-- pages/index/index.wxml -->
<view class="container">
<!-- 标题 -->
<view class="header">
<text class="title">今日天气</text>
</view>
<!-- 天气信息区域 -->
<view class="weather-card" wx:if="{{loading}}">
<text>正在加载天气数据...</text>
</view>
<view class="weather-card" wx:else>
<view class="weather-main">
<text class="city">{{city}}</text>
<text class="temp">{{temperature}}°C</text>
<text class="weather-icon">{{weatherEmoji}}</text>
</view>
<view class="weather-detail">
<text>湿度:{{humidity}}%</text>
<text>风速:{{windSpeed}} km/h</text>
</view>
<view class="forecast">
<text class="section-title">未来三天</text>
<view class="forecast-day" wx:for="{{forecast}}" wx:key="index">
<text>{{item.day}}</text>
<text>{{item.weather}}</text>
<text>{{item.temp}}°C</text>
</view>
</view>
</view>
<!-- 刷新按钮 -->
<button class="refresh-btn" bindtap="refreshWeather">刷新天气</button>
</view>
关键概念解释:
<view>:相当于 HTML 里的<div>,是一个容器标签<text>:相当于<span>,用于显示文字wx:if:条件渲染,{{loading}}为 true 时显示第一个卡片,否则显示第二个wx:for:列表渲染,遍历forecast数组显示未来三天的天气bindtap:绑定点击事件,refreshWeather是 JS 里定义的方法名
6.2 写页面的逻辑
打开 pages/index/index.js:
// pages/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
loading: true, // 是否正在加载
city: '', // 城市
temperature: '', // 温度
humidity: '', // 湿度
windSpeed: '', // 风速
weatherEmoji: '', // 天气图标
forecast: [] // 未来三天预报
},
/**
* 生命周期函数--页面加载时执行
*/
onLoad() {
this.fetchWeatherData()
},
/**
* 获取天气数据
*/
fetchWeatherData() {
// 显示加载状态
this.setData({
loading: true
})
// 调用微信的内置 API 获取用户位置
wx.getLocation({
type: 'wgs84',
success: (res) => {
const latitude = res.latitude
const longitude = res.longitude
// 这里调用天气 API(实际项目中需要申请 API Key)
// 为了演示,我们用模拟数据
setTimeout(() => {
const mockData = {
city: '北京市',
temperature: '22',
humidity: '45',
windSpeed: '12',
weatherEmoji: '☀️',
forecast: [
{ day: '明天', weather: '晴', temp: '24' },
{ day: '后天', weather: '多云', temp: '20' },
{ day: '大后天', weather: '雨', temp: '18' }
]
}
this.setData({
...mockData,
loading: false
})
}, 500)
},
fail: (err) => {
// 用户拒绝获取位置,使用默认城市
console.log('获取位置失败', err)
this.setData({
city: '北京市',
loading: false
})
}
})
},
/**
* 刷新天气
*/
refreshWeather() {
this.fetchWeatherData()
},
/**
* 生命周期函数--页面渲染完成
*/
onReady() {
// 页面渲染完成后执行
}
})
关键概念解释:
Page():定义一个页面的逻辑,每个页面都要有一个Page()函数data:页面的数据,用this.setData()来更新,更新后界面会自动刷新onLoad():页面加载时执行,只执行一次wx.getLocation():微信提供的获取地理位置的 APIwx:if和wx:for:都是微信小程序的模板语法
6.3 写页面的样式
打开 pages/index/index.wxss:
/* pages/index/index.wxss */
.container {
padding: 30rpx;
min-height: 100vh;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.header {
text-align: center;
margin-bottom: 40rpx;
}
.title {
color: #ffffff;
font-size: 48rpx;
font-weight: bold;
text-shadow: 2rpx 2rpx 4rpx rgba(0,0,0,0.2);
}
.weather-card {
background: rgba(255, 255, 255, 0.95);
border-radius: 24rpx;
padding: 40rpx;
margin-bottom: 30rpx;
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.1);
}
.weather-main {
display: flex;
justify-content: space-around;
align-items: center;
margin-bottom: 30rpx;
}
.city {
font-size: 36rpx;
color: #333;
font-weight: bold;
}
.temp {
font-size: 72rpx;
color: #667eea;
font-weight: bold;
}
.weather-icon {
font-size: 60rpx;
}
.weather-detail {
display: flex;
justify-content: space-around;
padding: 20rpx 0;
border-top: 1rpx solid #eee;
border-bottom: 1rpx solid #eee;
margin-bottom: 20rpx;
}
.weather-detail text {
color: #666;
font-size: 26rpx;
}
.section-title {
font-size: 28rpx;
color: #333;
font-weight: bold;
display: block;
margin-bottom: 15rpx;
}
.forecast-day {
display: flex;
justify-content: space-between;
padding: 15rpx 0;
border-bottom: 1rpx dashed #eee;
}
.forecast-day:last-child {
border-bottom: none;
}
.forecast-day text {
color: #666;
font-size: 26rpx;
}
.refresh-btn {
background: #ffffff;
color: #667eea;
border: none;
border-radius: 50rpx;
font-size: 30rpx;
font-weight: bold;
padding: 24rpx 0;
width: 80%;
margin: 0 auto;
display: block;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
}
.refresh-btn:active {
opacity: 0.8;
transform: scale(0.98);
}
关键概念解释:
rpx:微信小程序特有的响应式单位,750rpx = 屏幕宽度linear-gradient:CSS 渐变背景rgba:带透明度的颜色box-shadow:阴影效果:active:按钮按下时的状态
6.4 运行效果
现在,在开发者工具里点击“编译”按钮(或者按快捷键 Ctrl+B / Mac 上是 Cmd+B),你会看到模拟器里出现了一个漂亮的天气页面。
点击”刷新天气”按钮,页面会重新加载数据。
第七步:配置权限和必要信息
你的小程序要做很多事情,有些功能需要向用户申请权限。比如刚才的天气小程序需要获取位置,这就涉及权限配置。
7.1 配置权限
打开 app.json,添加权限声明:
{
"pages": [
"pages/index/index"
],
"window": {
"navigationBarBackgroundColor": "#667eea",
"navigationBarTextStyle": "white",
"navigationBarTitleText": "今日天气",
"backgroundColor": "#f5f5f5"
},
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
},
"requiredPrivateInfos": [
"getLocation"
]
}
注意: permission 配置是新增的要求,如果你要调用位置相关的 API,必须在这里声明。
7.2 配置地图选点(如果需要)
如果你的小程序要用到地图,还需要在 app.json 里配置:
{
"plugins": {
"mapPlugin": {
"version": "1.0.0",
"provider": "wx1234567890abcdef"
}
}
}
第八步:预览和调试
代码写好了,怎么验证效果呢?
8.1 模拟器预览
开发者工具左侧是代码区,右侧是预览区。点击工具栏的“编译”按钮,代码就会在模拟器里运行。
模拟器可以模拟不同的手机型号和屏幕尺寸,右上角有个下拉菜单可以选择不同的设备。
8.2 真机预览
如果你想在自己的手机上看看真实效果:
- 点击工具栏的“预览”按钮
- 用微信扫描弹出的二维码
- 手机上的”微信开发者工具”就会打开你的小程序
8.3 调试技巧
遇到问题怎么办?用微信开发者工具的调试功能:
// 在 JS 文件中打印日志
console.log('调试信息', someVariable)
// 断点调试
// 在代码行号处点击,会出现红点,表示设置断点
// 刷新页面后,代码会在断点处暂停,你可以查看变量值
右侧的”调试器”面板可以查看:
- Wxml:查看页面结构
- Storage:查看本地存储的数据
- Network:查看网络请求
- Console:查看日志输出
- Performance:性能分析
第九步:申请上线(发布小程序)
这一步是很多人最关心的:怎么让别人也能用到我的小程序?
9.1 完善小程序信息
在登录微信公众平台(mp.weixin.qq.com)后,进入“设置” → “基本设置”,完善以下信息:
- 小程序名称:最好和你的功能相关,容易记住
- 小程序简介:简洁描述小程序是做什么的
- 服务类别:选择一个最贴近你小程序功能的类别
- 运营地区:选择你服务的地区
9.2 上传代码
在开发者工具里,点击工具栏的“上传”按钮,填写版本号(比如 1.0.0)和备注,点击确定。代码就会被上传到微信的服务器。
9.3 提交审核
上传完成后,回到微信公众平台,进入“开发管理” → “版本管理”,找到你上传的版本,点击“提交审核”。
审核时需要填写:
- 小程序代码:选择刚才上传的版本
- 功能页面:选择你要审核的功能页面
- 测试账号:如果有需要登录的功能,提供测试账号密码
- 类目:确认小程序的类别
- 小程序简介:补充描述
9.4 等待审核
微信会在 1-7 个工作日内完成审核。你可以在后台查看审核状态。
审核可能会因为以下原因被拒绝:
- 内容违规
- 功能不完善
- 缺少必要的隐私协议
- 类目选择不当
如果被拒绝,根据提示修改后重新提交即可。
9.5 发布上线
审核通过后,点击“发布”按钮,你的小程序就正式上线了!
用户可以在微信里搜索你的小程序名称,或者通过分享链接/小程序码来使用你的小程序。
第十步:发布后的注意事项
小程序上线不代表结束了,后续的维护同样重要。
10.1 用户体验反馈
上线后留意用户的反馈和建议,可以通过以下方式收集:
- 小程序内的”意见反馈”功能
- 微信群、QQ 群
- 后台的用户评论
10.2 数据分析
微信公众平台提供了数据看板(”分析” → “用户分析”),你可以看到:
- 用户来源
- 页面访问量(PV)和独立访客(UV)
- 用户留存率
- 使用时长
这些数据能帮你判断小程序哪里做得好、哪里需要改进。
10.3 版本更新
发现问题或者有新功能要加?重复第九步的流程:
- 修改代码
- 在开发者工具里上传新版本
- 提交审核
- 发布上线
常见问题 Q&A
Q:个人小程序和企业小程序有什么区别?
个人小程序不能进行商业支付,不能接入微信支付,功能受限较多。企业/组织小程序则可以接入支付、有更多高级接口权限,但需要营业执照等材料。
Q:小程序审核被拒了怎么办?
首先看清楚拒审原因,通常是内容或功能问题。修改后再提交即可,没有次数限制。如果不确定哪里有问题,可以在公众号后台联系客服。
Q:怎么给小程序加搜索功能?
小程序的搜索功能需要接入微信的搜索 API,并在 app.json 里配置。个人类型的小程序可能没有这个权限。
Q:小程序可以发布到多个平台吗?
目前微信小程序是独立的生态。如果你想同时做支付宝小程序、百度小程序等,需要分别开发,但代码可以复用大部分逻辑。
给新手的几条实用建议
从小处着手:别一上来就想做一个”超级应用”,先做一个最简单的版本,验证思路是否正确。
善用开发者文档:微信官方文档非常详细,遇到不懂的随时查阅:
https://developers.weixin.qq.com/miniprogram/dev/framework/遇到问题多搜索:很多常见问题别人已经遇到过并解决了,搜索引擎 + 关键词通常能找到答案。
别怕报错:每个程序员都遇到过各种报错,报错信息通常会告诉你问题在哪,耐心读一读。
保存好你的代码:建议使用 Git 管理代码,这样每次修改都有记录,出问题也能回退。
写到这里,你已经从”什么都不懂”走到了”能把小程序上线”这一步。可能你觉得中间有些地方还不太明白,这完全正常—— programming 这东西就是越练越熟,多试几次就顺手了。
记住,每个厉害的开发者都是从”Hello World”开始的。你的第一个小程序可能很简单,甚至有点丑,但那又怎样?那是你亲手做的东西,而且你已经完成了从注册到上线的全流程。
接下来,想做什么功能,就去做吧。
