2016年9月,微信小程序开始内测。
消息一出,整个前端圈都沸腾了。朋友圈、微博、知乎、技术社区,到处都在讨论小程序。有人兴奋,有人焦虑,有人已经开始学习小程序开发,有人在唱衰小程序。
我也是前端开发者,听到小程序的消息,心情很复杂——既觉得这是一个新的机会,又担心这是一个危机。
今天就来聊聊,微信小程序来了,到底是前端开发者的机会还是危机?
一、微信小程序是什么
在聊机会和危机之前,先说说微信小程序是什么。
微信小程序(WeChat Mini Program)是腾讯在2016年推出的一种新的应用形态,它运行在微信内部,不需要下载安装,用户扫一扫或者搜一下就能打开。
小程序的特点:
- 无需下载安装:用户不需要在应用商店下载,扫一扫或搜一下就能用
- 触手可及:用户可以通过扫码、搜索、分享、公众号关联等多种方式打开小程序
- 用完即走:用户用完之后就可以关掉,不需要卸载,不占用手机存储空间
- 体验接近原生APP:小程序的运行速度和流畅度接近原生APP,比H5好很多
- 微信生态内:小程序运行在微信内部,可以调用微信的能力(如登录、支付、分享、位置、相机等)
小程序的目标,是连接一切——线下服务、线上内容、商家和用户。张小龙说,小程序是"一种不需要下载安装即可使用的应用,它实现了应用'触手可及'的梦想,用户扫一扫或者搜一下即可打开应用,也体现了'用完即走'的理念,用户不用关心是否安装太多应用的问题。"
二、小程序和传统Web/APP的区别
小程序是一种新的应用形态,它和传统的Web、原生APP都不一样。
1. 和传统Web(H5)的区别:
| 特性 | 传统Web(H5) | 微信小程序 |
|---|---|---|
| 运行环境 | 浏览器 | 微信内置的运行环境 |
| 渲染方式 | DOM渲染 | 类似React Native的双线程渲染(逻辑层+视图层) |
| 性能 | 受浏览器限制,性能一般 | 接近原生APP,性能较好 |
| 系统能力 | 受浏览器限制,能调用的系统能力有限 | 能调用微信提供的API,系统能力较强 |
| 开发语言 | HTML/CSS/JavaScript | WXML/WXSS/JavaScript(类似但不完全相同) |
| 发布方式 | 部署到服务器,用户通过URL访问 | 提交审核,通过后在微信内发布 |
| 开放性 | 开放,任何浏览器都能访问 | 封闭,只能在微信内运行 |
2. 和原生APP的区别:
| 特性 | 原生APP | 微信小程序 |
|---|---|---|
| 下载安装 | 需要在应用商店下载安装 | 不需要下载,扫一扫或搜一下就能用 |
| 占用空间 | 占用手机存储空间 | 不占用存储空间(微信会缓存,但很小) |
| 性能 | 最好,能调用所有系统能力 | 接近原生,但受微信限制,不能调用所有系统能力 |
| 开发成本 | 高(iOS+Android两套,或者用跨平台框架) | 较低(一套代码,运行在微信内) |
| 发布审核 | 应用商店审核(App Store审核严格) | 微信审核(相对宽松,但也有规范) |
| 获客方式 | 应用商店搜索、广告、推广 | 微信生态内(扫码、搜索、分享、公众号、社群) |
| 独立性 | 独立应用,有自己的品牌和用户 | 依附于微信生态,用户是微信的用户 |
简单说,小程序是介于Web和原生APP之间的一种应用形态——比Web性能好、能调用更多系统能力,比原生APP开发成本低、获客容易、不用下载安装。
三、小程序的技术特点
作为前端开发者,我最关心的是小程序的技术特点。
小程序的开发技术,和传统的Web开发很像,但又不完全一样。
1. WXML(WeiXin Markup Language)
WXML是小程序的标记语言,类似HTML,但是有一些区别:
- 标签不同:小程序用
<view>、<text>、<image>等标签,而不是<div>、<span>、<img> - 数据绑定:用
{{}}语法,类似Vue和Angular - 列表渲染:用
wx:for,类似Vue的v-for - 条件渲染:用
wx:if/wx:elif/wx:else,类似Vue的v-if - 模板:用
<template>定义模板,用is引用 - 事件:用
bindtap、bindinput等绑定事件,类似Vue的@click
一个简单的WXML示例:
<view class="container">
<text class="title">{{title}}</text>
<view wx:for="{{list}}" wx:key="id" class="item">
<text>{{item.name}}</text>
</view>
<button bindtap="handleClick">点击我</button>
</view>2. WXSS(WeiXin Style Sheets)
WXSS是小程序的样式语言,类似CSS,但是有一些扩展:
- 尺寸单位:新增了
rpx(responsive pixel),可以根据屏幕宽度自适应 - 样式导入:用
@import导入外部样式 - 全局样式和局部样式:
app.wxss是全局样式,页面的.wxss是局部样式 - 选择器:支持大部分CSS选择器,但是不支持通配符
*、不支持部分伪类
一个简单的WXSS示例:
.container {
padding: 20rpx;
}
.title {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
.item {
padding: 10rpx 0;
border-bottom: 1rpx solid #eee;
}3. JavaScript逻辑层
小程序的逻辑层用JavaScript,但是运行环境和浏览器不同:
- 没有DOM和BOM:小程序的逻辑层没有
window、document等对象,不能操作DOM - 模块化:用
require和module.exports,类似CommonJS - 页面逻辑:每个页面有一个
.js文件,定义页面的数据、方法、生命周期 - App实例:
app.js定义全局的App实例,有全局数据和生命周期 - API:微信提供了丰富的API,如
wx.request(网络请求)、wx.login(登录)、wx.getUserInfo(获取用户信息)、wx.navigateTo(页面跳转)等
一个简单的页面JS示例:
Page({
data: {
title: '我的小程序',
list: []
},
onLoad() {
this.loadData();
},
loadData() {
wx.request({
url: 'https://api.example.com/list',
success: (res) => {
this.setData({ list: res.data });
}
});
},
handleClick() {
wx.showToast({ title: '点击了' });
}
});4. 双线程架构
小程序的渲染架构是双线程——逻辑层和视图层分离:
- 视图层:由WebView渲染,负责WXML和WXSS的渲染
- 逻辑层:由JSCore运行,负责JavaScript逻辑
- 两个线程通过微信客户端(Native)进行通信
这种架构的好处是:
- 逻辑层和视图层互不阻塞,JS执行不会阻塞UI渲染
- 性能更好,流畅度接近原生APP
- 安全性更好,JS不能直接操作DOM,避免了一些安全问题
但是也有一些限制:
- JS不能操作DOM,不能用jQuery等操作DOM的库
- 逻辑层和视图层通信有开销,频繁的数据更新可能有性能问题
- 不能用浏览器的API(如window、document、location等)
四、对前端开发者的机会
说了这么多技术细节,回到正题:小程序对前端开发者来说,有哪些机会?
1. 新的就业机会
小程序推出之后,大量的企业和商家需要开发小程序——电商、餐饮、零售、服务、教育、医疗、金融……几乎所有行业都需要小程序。
这就创造了大量的就业机会——小程序开发工程师、小程序产品经理、小程序设计师、小程序运营等。前端开发者因为有HTML/CSS/JavaScript基础,学习小程序很快,是小程序开发的主力军。
据我了解,2016年小程序内测之后,很多公司都在招小程序开发者,薪资也不低。这对前端开发者来说,是一个新的就业方向。
2. 新的创业机会
小程序降低了应用开发的门槛——不需要开发iOS和Android两套,不需要上架应用商店,不需要用户下载安装。一个前端开发者,加上一个设计师,就能开发一个小程序。
这给了前端开发者更多的创业机会——可以自己开发小程序,做工具、做内容、做电商、做服务,不需要依赖大公司,不需要大量的资金和人力。
我身边就有朋友,辞职做小程序创业,做了一个工具类小程序,用户量很快就起来了,虽然还没赚大钱,但是已经能养活自己了。
3. 技术能力的迁移和提升
小程序的开发技术(WXML/WXSS/JS)和传统的Web开发技术(HTML/CSS/JS)很像,前端开发者学习小程序的成本很低。
而且,小程序的一些技术理念(数据绑定、组件化、双线程架构)和现代前端框架(Vue、React)很像,学习小程序也能提升前端开发者的技术能力。
另外,小程序的开发涉及到微信生态、移动端开发、产品思维等,能让前端开发者拓宽视野,不仅仅是"切图仔",而是能独立开发一个完整的应用。
4. 自由职业和副业机会
小程序开发需求大,但是很多小公司和商家没有自己的开发团队,需要外包。这给了前端开发者自由职业和副业的机会。
前端开发者可以在业余时间接小程序外包项目,赚外快。一个简单的小程序,外包价格可能几千到几万,对于有经验的前端开发者来说,可能一两周就能做完。
我认识一个前端开发者,上班之余接小程序外包,一个月能接一两个项目,副业收入比工资还高。
五、对前端开发者的危机
当然,小程序也带来了一些危机,不能只看到机会。
1. 封闭生态,技术受限
小程序是封闭的——它运行在微信内部,只能用微信提供的API和组件,不能随意使用浏览器的API,不能随意引入第三方库,不能操作DOM。
这种封闭性,限制了前端开发者的技术能力。在小程序开发中,你不能用jQuery、不能用DOM操作、不能用很多前端库和框架,只能用微信提供的那一套。
长期做小程序开发,可能会让前端开发者的技术视野变窄,脱离主流的前端技术生态。
2. 去APP化,可能减少原生开发需求
小程序的目标之一是"替代一部分低频APP"——用户不需要下载那么多APP,用小程序就够了。
如果小程序真的能替代一部分APP,那么原生APP开发的需求可能会减少。这对原生开发者(iOS/Android)是危机,对前端开发者来说,虽然小程序开发需求增加了,但是整体的应用开发市场可能会被压缩。
而且,小程序依附于微信生态,开发者没有自己的用户和品牌,用户是微信的,不是你的。微信可以随时改变规则、限制能力、甚至封杀你的小程序,你没有话语权。
3. 门槛降低,竞争加剧
小程序的开发门槛比原生APP低,比Web开发也高不了多少。这意味着,更多的人可以进入小程序开发领域——前端开发者、后端开发者、设计师、甚至产品经理,都能学一学就做小程序。
门槛降低,竞争就会加剧。小程序开发者越来越多,但是需求是有限的,薪资可能会被拉低,外包价格可能会下降。
而且,小程序的开发越来越标准化、模板化,很多简单的小程序,用模板和可视化工具就能做,不需要专业的开发者。这可能会让低端的小程序开发者失去竞争力。
4. 技术栈碎片化
小程序是微信的,但是其他平台也推出了类似的产品——支付宝小程序、百度小程序、字节跳动小程序(抖音/头条)。
每个平台的小程序,技术栈都不完全一样——API不同、组件不同、审核规范不同。如果你要做多平台小程序,就要维护多套代码,或者用跨平台框架(如Taro、uni-app)。
这就导致了技术栈的碎片化——前端开发者要学微信小程序、支付宝小程序、百度小程序、字节小程序,还要学各种跨平台框架,技术栈越来越乱,学习成本越来越高。
六、前端开发者应该如何应对
面对小程序带来的机会和危机,前端开发者应该如何应对?
1. 拥抱变化,学习小程序
小程序是一个新的机会,不要抗拒,要拥抱变化。前端开发者有HTML/CSS/JavaScript基础,学习小程序很快,花一两周时间就能上手。
学习小程序,不仅能获得新的就业和创业机会,还能提升自己的技术能力,拓宽视野。
2. 夯实基础,不局限于小程序
虽然小程序是机会,但是不要只做小程序,不要把自己局限在小程序的技术栈里。
前端开发者的核心能力,是HTML/CSS/JavaScript基础、是工程化能力、是架构能力、是解决问题的能力。这些能力,在任何前端领域(Web、小程序、APP、桌面端)都是通用的。
夯实基础,提升核心能力,不要只做"小程序开发者",要做"前端工程师"。这样,无论技术怎么变,你都有竞争力。
3. 关注跨平台方案
小程序技术栈碎片化,是一个问题。关注跨平台方案(如Taro、uni-app、mpvue),用一套代码编译到多个平台,能提高开发效率,减少维护成本。
但是,跨平台框架也有局限性——性能可能不如原生、部分API可能不支持、调试可能不方便。要根据项目需求,选择合适的方案。
4. 拓宽技能栈,向全栈发展
小程序开发不仅仅是前端,还涉及到后端、数据库、产品、运营等。前端开发者可以拓宽技能栈,向全栈发展——不仅能做前端,还能做后端、做产品、做运营。
全栈开发者,能独立开发一个完整的小程序,从前端到后端,从产品到运营,都能搞定。这样的开发者,竞争力更强,创业的可能性也更大。
5. 保持学习,关注趋势
技术在不断变化,小程序也在不断进化。前端开发者要保持学习,关注技术趋势——小程序的新功能、新框架、新玩法,以及其他前端领域的新技术(如WebAssembly、PWA、Serverless等)。
只有不断学习,才能跟上技术的变化,不被淘汰。
七、写在最后
微信小程序来了,对前端开发者来说,既是机会,也是危机。
机会在于:新的就业机会、新的创业机会、技术能力的迁移和提升、自由职业和副业机会。
危机在于:封闭生态技术受限、去APP化可能减少原生开发需求、门槛降低竞争加剧、技术栈碎片化。
但是,机会和危机总是并存的。关键在于,你如何应对。
我的建议是:拥抱变化,学习小程序;夯实基础,不局限于小程序;关注跨平台方案;拓宽技能栈,向全栈发展;保持学习,关注趋势。
小程序不是洪水猛兽,也不是万能灵药。它只是一个新的技术、新的平台、新的机会。对于有准备、有能力、愿意学习的前端开发者来说,小程序是机会;对于不思进取、固步自封的开发者来说,小程序是危机。
最后,用一句话总结:技术在变,但是核心能力不变。夯实基础,保持学习,无论技术怎么变,你都能立于不败之地。
愿每一个前端开发者,都能在小程序的浪潮中,找到属于自己的机会。愿我们都能不断学习、不断成长,不被技术的浪潮淘汰。
小程序来了,你准备好了吗?
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录