
文章分类:新闻资讯 发布时间:2026-09-27 原文作者:小程序开发 阅读( )

先泼一盆冷水:Node.js不能直接开发微信小程序。微信小程序的前端跑在WebView里,用的是WXML、WXSS和JavaScript,跟Node.js八竿子打不着。那为什么还有那么多人喊着“用Node.js开发小程序”?因为真正的后端逻辑、数据库操作、接口转发,全得靠Node.js来撑。你看到的那些小程序,点个按钮能查天气、能下单、能聊天,背后全是Node.js在干活。所以这篇文章教你的,不是用Node.js写小程序页面,而是用Node.js把小程序的后端搭起来,让前端有数据可用。
先说清楚你要准备什么。电脑上装好Node.js(官网下LTS版本,一路下一步就行),装好微信开发者工具(去微信公众平台注册个小程序账号,拿到AppID),再准备一个能写代码的编辑器,VS Code就行,免费的。这三样凑齐,你就有了开工的资本。别怕,整个过程不需要你懂什么高深的理论,跟着我一步步来,两小时之内你就能看到自己的小程序跑起来。
第一步,初始化项目。打开终端,找个文件夹,输入`npm init -y`,这会在当前目录生成一个package.json文件。然后装几个必须的包:`npm install express`(用来搭HTTP服务器)、`npm install axios`(用来转发请求)、`npm install mysql2`(连接数据库,如果你暂时不想碰数据库,也可以先用JSON文件模拟数据)。装完这些,你的项目骨架就出来了。我见过太多人卡在这一步——不是装不上,而是不知道自己装了什么。简单说,express是服务员,负责接待前端的请求;axios是跑腿的,负责帮你向外面的API要数据;mysql2是仓库管理员,负责存取你的业务数据。
接下来写一个最简单的服务器。在项目根目录新建一个app.js文件,敲下面这段代码:
const express = require('express');
const app = express();
app.use(express.json());
app.get('/api/hello', (req, res) => {
res.json({ message: 'Hello from Node.js!' });
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
然后在终端输入`node app.js`,浏览器打开`http://localhost:3000/api/hello`,你会看到一串JSON。这就说明你的Node.js后端已经活了。别看这个例子简单,它包含了一个完整请求周期的全部要素:前端发请求、后端接收、处理、返回数据。后面所有复杂功能都是在这个基础上长出来的。
现在把小程序前端接上。打开微信开发者工具,新建一个小程序项目,在index.wxml里放一个按钮,在index.js里用`wx.request`调用你刚才写的接口:
url: 'http://localhost:3000/api/hello',
console.log(res.data);
这时候你会遇到一个经典坑:小程序默认不允许访问本地IP。解决方法是,在微信开发者工具右上角点击“详情”,勾选“不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书”。这一步不勾,你的请求永远发不出去。勾选之后,点一下按钮,你看控制台是不是打印出了那句“Hello from Node.js!”?恭喜,你的小程序已经能跟Node.js后端对话了。
真实项目里,你不可能只返回一句问候语。咱们来做点实际的事情——让小程序从一个公开的天气API获取数据,然后展示在页面上。后端加一个接口,用axios转发请求:
const axios = require('axios');
app.get('/api/weather', async (req, res) => {
const { city } = req.query;
const response = await axios.get(`https://api.example.com/weather?city=${city}`);
res.json(response.data);
前端拿到数据后,渲染到页面上。这一步开始有业务味道了:前端不直接碰第三方API,而是通过你的Node.js中转。好处是你可以在这个中转层里做数据清洗、缓存、权限校验,甚至把多个API合并成一个给前端用。你自己写的小程序,自己定规矩,这种感觉很爽。
数据库这块,很多人一听到就头大。其实没那么可怕。先用MySQL为例,你在本地建一个数据库,建一张表,然后写个接口往表里插数据、查数据。核心就两件事:连接数据库、写SQL语句。mysql2这个包封装得很好,你只需要这样:
const mysql = require('mysql2/promise');
const db = await mysql.createConnection({
const [rows] = await db.execute('SELECT * FROM users WHERE id = ?', [1]);
用参数化查询,别拼字符串,防止SQL注入。这一步过了,你就拥有了完整的小程序后端能力:能存数据、能取数据、能对外对接API。这时候你再回头看,那些所谓的“全栈开发”,其实就这么回事。
说点实在的。你可能会遇到一些让人抓狂的问题:端口被占用、跨域报错、数据格式不对。别慌,这些都有固定解法。端口被占用就换一个端口;跨域就在后端加`cors`中间件;数据不对就打印出来看,改到对为止。我见过太多人写代码写了三天,卡在一个小错误上,发现是少了个逗号。调试这活儿,耐心比天赋重要。
写到这里,你应该明白了:用Node.js开发微信小程序,不是让你用Node.js写界面,而是让你用Node.js把整个后端体系撑起来。前端负责长得好看,后端负责算得明白。零基础不是问题,问题是你愿不愿意动手敲第一行代码。现在,打开终端,输入`npm init -y`,你的小程序开发之旅,从这一刻就开始了。