<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>技术分享 on 夜云泊</title>
    <link>https://lifeislife.cn/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/</link>
    <description>feedId:57980998056508425+userId:73222296380546048 Recent content in 技术分享 on 夜云泊</description>
    <generator>Hugo -- 0.161.1</generator>
    <language>zh</language>
    <lastBuildDate>Sat, 22 Nov 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://lifeislife.cn/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>微信小程序开发完整流程指南</title>
      <link>https://lifeislife.cn/posts/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E5%AE%8C%E6%95%B4%E6%B5%81%E7%A8%8B%E6%8C%87%E5%8D%97/</link>
      <pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://lifeislife.cn/posts/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E5%AE%8C%E6%95%B4%E6%B5%81%E7%A8%8B%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;p&gt;微信小程序开发不仅仅是写代码，还涉及服务器购买、域名备案、小程序备案、认证等一系列流程性工作。本文记录了从零开始开发微信小程序的完整流程，包括踩坑记录和注意事项，希望能帮助其他开发者少走弯路。&lt;/p&gt;
&lt;h2 id=&#34;服务器购买&#34;&gt;服务器购买&lt;/h2&gt;
&lt;h3 id=&#34;选择云服务商&#34;&gt;选择云服务商&lt;/h3&gt;
&lt;p&gt;常见的云服务商有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阿里云（推荐）&lt;/li&gt;
&lt;li&gt;腾讯云&lt;/li&gt;
&lt;li&gt;华为云&lt;/li&gt;
&lt;li&gt;百度云&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;服务器配置建议&#34;&gt;服务器配置建议&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;小型个人小程序推荐配置：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU：1 核或 2 核&lt;/li&gt;
&lt;li&gt;内存：2GB&lt;/li&gt;
&lt;li&gt;带宽：1-3Mbps&lt;/li&gt;
&lt;li&gt;系统盘：40GB&lt;/li&gt;
&lt;li&gt;操作系统：CentOS 7.x 或 Ubuntu 18.04+&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;费用参考：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新用户通常有优惠，年费在 100-500 元不等&lt;/li&gt;
&lt;li&gt;建议先购买 1 年，测试稳定后再续费&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;购买注意事项&#34;&gt;购买注意事项&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;选择离目标用户较近的地域节点，可以降低延迟&lt;/li&gt;
&lt;li&gt;新用户可关注各大云平台的首购优惠&lt;/li&gt;
&lt;li&gt;学生用户可申请学生优惠&lt;/li&gt;
&lt;li&gt;注意查看带宽费用，避免后期流量费用过高&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;域名购买&#34;&gt;域名购买&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://wanwang.aliyun.com/newdomain/1yuan?spm=5176.8048432.J_1403848460.2.714769a3RIQTOp&amp;amp;keyword=06031612&#34;&gt;购买域名 1 元起_.xin 首年 0 元_域名优惠活动 - 阿里云权益中心&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;选择合适的域名&#34;&gt;选择合适的域名&lt;/h3&gt;
&lt;p&gt;小程序用户看不到域名，所以选择便宜的即可。用生日组合纯数字.xyz 域名最便宜。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;选购技巧：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择一个最便宜的域名时，注册时选择 2 年看看后期续费费用&lt;/li&gt;
&lt;li&gt;如果一年 18 元，两年 120 元，说明第二年费用恢复原价，太贵了不要买&lt;/li&gt;
&lt;li&gt;推荐选择续费价格稳定的域名后缀&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;常见便宜域名后缀：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.xyz&lt;/code&gt;：首年最便宜，但续费可能较贵&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.top&lt;/code&gt;：价格适中&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.site&lt;/code&gt;：价格适中&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.club&lt;/code&gt;：价格适中&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/f7cd9f9011c7b32a640c612df85d5df3.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/f7cd9f9011c7b32a640c612df85d5df3.png&#34; alt=&#34;域名价格对比&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/389f251903c6ac923c999c86bc14c58a.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/389f251903c6ac923c999c86bc14c58a.png&#34; alt=&#34;域名选择界面&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;h3 id=&#34;创建信息模板&#34;&gt;创建信息模板&lt;/h3&gt;
&lt;p&gt;下单时创建一个新的信息模板，避免之前创建过的填的信息不完善。购买之后会直接提交到域名注册局审核，信息不完善容易审核不通过。&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/11d11bf95e226b7e0e354b75d2175938.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/11d11bf95e226b7e0e354b75d2175938.png&#34; alt=&#34;创建信息模板&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信息模板填写注意事项：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;姓名必须与身份证一致&lt;/li&gt;
&lt;li&gt;地址填写详细，精确到门牌号&lt;/li&gt;
&lt;li&gt;电话号码保持畅通，可能会接到审核电话&lt;/li&gt;
&lt;li&gt;邮箱填写常用邮箱&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;域名实名认证&#34;&gt;域名实名认证&lt;/h3&gt;
&lt;p&gt;等待几小时（一般在 6 小时内），域名注册局实名认证成功，即可进行下一步备案。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实名认证材料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个人：身份证正反面照片&lt;/li&gt;
&lt;li&gt;企业：营业执照、法人身份证&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;域名解析&#34;&gt;域名解析&lt;/h3&gt;
&lt;p&gt;登录域名服务商，找到域名解析，添加解析记录。比如我在阿里云买的，从这里进入：&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/983aa81ac07af6a88b5ea59a69193528.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/983aa81ac07af6a88b5ea59a69193528.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;找到解析设置：&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/e356bc511e1442a7d5be9b465121c41e.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/e356bc511e1442a7d5be9b465121c41e.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;添加解析记录，第四步的IP地址就是你购买服务器后，服务器提供商给你的公网IP地址：&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2e15af90548937c053cb193a207591fc.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2e15af90548937c053cb193a207591fc.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;保存后，等待几分钟，解析记录就会生效。&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/a5c4ec7ac6ba8cdf4c59854d4986e0e8.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/a5c4ec7ac6ba8cdf4c59854d4986e0e8.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;h2 id=&#34;ssl证书购买与部署&#34;&gt;SSL证书购买与部署&lt;/h2&gt;
&lt;p&gt;微信小程序必须使用Https协议，所以需要购买SSL证书。阿里云有免费的证书可以测试使用，但是有效期是3个月，需要定期续费。&lt;/p&gt;
&lt;p&gt;从以下路径找到免费证书申请入口，你也可以在阿里云顶部搜索框搜索SSL，也能找到。&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/7c9ec5e3e3b37d5a2c871ba83ed15ae5.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/7c9ec5e3e3b37d5a2c871ba83ed15ae5.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/91edd3abcc92baad15388995f85d0615.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/91edd3abcc92baad15388995f85d0615.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2574a342a1a6e414ca03ba543cb67c3f.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2574a342a1a6e414ca03ba543cb67c3f.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;点击创建证书后，如实填写信息提交即可，然后等待签发：&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/9ef0b88be1877b6808cae5b2ab01e3e0.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/9ef0b88be1877b6808cae5b2ab01e3e0.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/b3c2b2c556035d5702008da8240a8c89.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/b3c2b2c556035d5702008da8240a8c89.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;快的话二十分钟就能签发，会给你发邮件提醒，之后就可以部署了：&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/1bcc2238828851e38524a1b1b2a4041f.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/1bcc2238828851e38524a1b1b2a4041f.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;点击部署，阿里云轻量ESC不支持一键部署，只能手动部署：&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/62a19ac3e263f686d409c16e34ec3f31.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/62a19ac3e263f686d409c16e34ec3f31.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;根据你的服务器类型选择SSL证书下载，我是用的Nginx。&lt;/p&gt;
&lt;p&gt;部署我求助了AI工具，需要配置Nginx，我确实不会，这里我也不太好描述，还是自行问AI工具吧。&lt;/p&gt;
&lt;h2 id=&#34;icp-备案&#34;&gt;ICP 备案&lt;/h2&gt;
&lt;p&gt;点击&lt;a href=&#34;https://beian.aliyun.com/?spm=5176.62f6de69.J_4VYgf18xNlTAyFFbOuOQe.d_beian&#34;&gt;网站备案_ICP 备案_备案迁移_App 备案_小程序备案_备案 - 阿里云&lt;/a&gt;开始备案。&lt;/p&gt;
&lt;h3 id=&#34;准备材料&#34;&gt;准备材料&lt;/h3&gt;
&lt;p&gt;需要准备身份证，根据提示填写个人信息即可。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;所需材料清单：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;身份证正反面照片（清晰、完整）&lt;/li&gt;
&lt;li&gt;手持身份证照片&lt;/li&gt;
&lt;li&gt;幕布照片（部分云服务商需要）&lt;/li&gt;
&lt;li&gt;域名证书&lt;/li&gt;
&lt;li&gt;服务器证明（购买凭证）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;备案流程&#34;&gt;备案流程&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;填写备案信息&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;主体信息（个人或企业信息）&lt;/li&gt;
&lt;li&gt;网站信息（网站名称、域名等）&lt;/li&gt;
&lt;li&gt;接入信息（服务器信息）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;域名备注十分重要，如果是商业用途就需要上传营业执照等信息，这个我没经验，请自行研究。如果是个人用途，需要注明个人使用。比如我的域名其实是为了小程序的后端使用的，我备注的内容是xxx小程序后端API使用。 这样写是无法通过审核的，默认是有商业用途。所以我改成了：&lt;strong&gt;个人工具后端&lt;/strong&gt;。
如果你是用于部署个人博客，有些省份是不能备案的，这个请你最好提前在购买域名的厂商客服那咨询一下。
有一些关键字是不能出现的，比如新闻、出版、教育、医疗等需要前置审批的内容。如果你涉及这些也需要咨询一下厂商客服。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;上传资料&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按要求上传各类证件照片&lt;/li&gt;
&lt;li&gt;确保照片清晰可见&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;真实性核验&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部分地区需要视频核验&lt;/li&gt;
&lt;li&gt;按照要求进行人脸识别&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;提交审核&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;云服务商初审（1-2 个工作日）&lt;/li&gt;
&lt;li&gt;管局审核（3-20 个工作日，各地不同）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;重要提醒&#34;&gt;重要提醒&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;不能和小程序备案同步进行！&lt;/strong&gt; ICP 备案同一个主体（人）只能进行一个备案，需要当前备案结束后才能进行下一个。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;备案时长：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首次备案：通常需要 10-20 个工作日&lt;/li&gt;
&lt;li&gt;不同省份审核时间不同&lt;/li&gt;
&lt;li&gt;遇到节假日会延长&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;我两次备案都是在10天完成。如果你在阿里云购买的服务器也是在阿里云购买域名备案，在域名关联服务器时候选的是阿里云的，那么阿里云会送服务器时长。备案花了多少条就会送多少天。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;备案网站命名规范：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个人网站不能包含企业、行业等字样&lt;/li&gt;
&lt;li&gt;不能涉及新闻、出版、教育、医疗等需要前置审批的内容&lt;/li&gt;
&lt;li&gt;建议使用通用名称，如&amp;quot;XX 个人博客&amp;quot;、&amp;ldquo;XX 个人工具&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;公安联网备案&#34;&gt;公安联网备案&lt;/h2&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/cde749a18a58deeafa4089699699b325.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/cde749a18a58deeafa4089699699b325.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;域名证书下载&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/34fac0556854cc60c4727091779991d2.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/34fac0556854cc60c4727091779991d2.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://help.aliyun.com/zh/icp-filing/basic-icp-service/the-public-security-network-for-the-record-information-fill-in-the-guide&#34;&gt;分步完成网站与APP公安联网备案申请-备案-阿里云&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/ba4afe1a8ef7eb136b0843db980457fc.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/ba4afe1a8ef7eb136b0843db980457fc.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;h2 id=&#34;小程序备案&#34;&gt;小程序备案&lt;/h2&gt;
&lt;p&gt;访问&lt;a href=&#34;https://mp.weixin.qq.com/wxamp/home/guide?lang=zh_CN&amp;amp;token=1108861003&#34;&gt;微信小程序&lt;/a&gt;公众平台进行备案。&lt;/p&gt;
&lt;h3 id=&#34;备案流程-1&#34;&gt;备案流程&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;补充小程序信息&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小程序名称&lt;/li&gt;
&lt;li&gt;简介&lt;/li&gt;
&lt;li&gt;服务类目&lt;/li&gt;
&lt;li&gt;服务范围等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;先提交微信官方审核&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;微信会审核小程序信息是否合规&lt;/li&gt;
&lt;li&gt;审核时间通常为 1-3 个工作日&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;审核通过自动提交到工信部审核&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工信部审核通过后，小程序备案完成&lt;/li&gt;
&lt;li&gt;审核时间通常为 7-20 个工作日&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;审核不通过的处理&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;审核不通过会电话联系，告知需要修改的地方&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意：电话会被小米手机标记为广告电话，请在提交审核这几天及时接听广告电话，避免错过！&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;小程序平台会站内信告知需要修改的地方，但是不如电话里说的清楚&lt;/li&gt;
&lt;li&gt;电话中不明白的可以及时问，但是错过电话就打不回去了&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;个人小程序备案说明&#34;&gt;个人小程序备案说明&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;重要提示：&lt;/strong&gt; 普通小工具类小程序不需要公司也不需要营业执照，用身份证提交就行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但是小程序备注需要注明：给自己使用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;比如我开发了一个 Strava 贴纸合成到照片的小程序&lt;/li&gt;
&lt;li&gt;我的备注是：&lt;strong&gt;用于给自己将两张图片合成为一张图片&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;备注填写技巧：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明确说明是个人使用&lt;/li&gt;
&lt;li&gt;功能描述简洁明了&lt;/li&gt;
&lt;li&gt;避免涉及商业用途&lt;/li&gt;
&lt;li&gt;避免涉及社交、支付等敏感功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;小程序备案常见问题&#34;&gt;小程序备案常见问题&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Q1: 个人小程序可以选择哪些类目？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具类（如计算器、记事本）&lt;/li&gt;
&lt;li&gt;生活服务类（非商业）&lt;/li&gt;
&lt;li&gt;体育类&lt;/li&gt;
&lt;li&gt;教育类（非学历教育）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q2: 个人小程序有哪些限制？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不能涉及支付功能&lt;/li&gt;
&lt;li&gt;不能涉及社交功能&lt;/li&gt;
&lt;li&gt;不能涉及直播功能&lt;/li&gt;
&lt;li&gt;不能发布商业广告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q3: 小程序备案失败常见原因&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;备注未说明个人使用&lt;/li&gt;
&lt;li&gt;功能超出个人类目范围&lt;/li&gt;
&lt;li&gt;服务器未备案或备案信息不一致&lt;/li&gt;
&lt;li&gt;小程序名称不符合规范&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小程序认证&#34;&gt;小程序认证&lt;/h2&gt;
&lt;p&gt;小程序认证分为&lt;strong&gt;个人认证&lt;/strong&gt;和&lt;strong&gt;企业认证&lt;/strong&gt;，两者权限有较大差异。&lt;/p&gt;
&lt;h3 id=&#34;个人小程序未认证&#34;&gt;个人小程序（未认证）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;限制：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无法使用微信支付&lt;/li&gt;
&lt;li&gt;无法使用卡券功能&lt;/li&gt;
&lt;li&gt;无法使用附近的小程序&lt;/li&gt;
&lt;li&gt;部分接口受限&lt;/li&gt;
&lt;li&gt;每日访问用户数有上限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免费&lt;/li&gt;
&lt;li&gt;审核流程简单&lt;/li&gt;
&lt;li&gt;适合个人学习和小工具开发&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;企业认证&#34;&gt;企业认证&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;认证费用：&lt;/strong&gt; 300 元/年（微信官方收取）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;所需材料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;营业执照&lt;/li&gt;
&lt;li&gt;法人身份证&lt;/li&gt;
&lt;li&gt;对公账户信息（或法人微信支付）&lt;/li&gt;
&lt;li&gt;企业邮箱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;认证流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录小程序后台，点击&amp;quot;微信认证&amp;quot;&lt;/li&gt;
&lt;li&gt;填写企业信息&lt;/li&gt;
&lt;li&gt;上传营业执照等资料&lt;/li&gt;
&lt;li&gt;选择认证方式：
&lt;ul&gt;
&lt;li&gt;对公账户打款验证（0.01 元，需 1-3 个工作日）&lt;/li&gt;
&lt;li&gt;法人微信扫码验证（即时验证，推荐）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;等待审核（通常 1-3 个工作日）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;企业认证的优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开通微信支付功能&lt;/li&gt;
&lt;li&gt;提升用户信任度&lt;/li&gt;
&lt;li&gt;解锁更多 API 接口&lt;/li&gt;
&lt;li&gt;无访问用户数限制&lt;/li&gt;
&lt;li&gt;可以使用附近的小程序功能&lt;/li&gt;
&lt;li&gt;可以发布卡券&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;认证注意事项&#34;&gt;认证注意事项&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;企业认证必须是已注册的企业&lt;/strong&gt;，个体工商户也可以&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;年审：&lt;/strong&gt; 企业认证每年需要重新认证，费用 300 元&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;认证后不可更改主体&lt;/strong&gt;，请谨慎选择&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;认证信息要真实&lt;/strong&gt;，虚假信息会导致认证失败甚至封号&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;开发环境配置&#34;&gt;开发环境配置&lt;/h2&gt;
&lt;h3 id=&#34;下载微信开发者工具&#34;&gt;下载微信开发者工具&lt;/h3&gt;
&lt;p&gt;访问&lt;a href=&#34;https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html&#34;&gt;微信开发者工具下载页面&lt;/a&gt;，根据操作系统下载对应版本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;支持平台：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 64 位&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;申请-appid&#34;&gt;申请 AppID&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录&lt;a href=&#34;https://mp.weixin.qq.com/&#34;&gt;微信公众平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;进入小程序后台&lt;/li&gt;
&lt;li&gt;在&amp;quot;开发&amp;quot; -&amp;gt; &amp;ldquo;开发管理&amp;rdquo; -&amp;gt; &amp;ldquo;开发设置&amp;quot;中查看 AppID&lt;/li&gt;
&lt;li&gt;复制 AppID 备用&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;创建第一个小程序项目&#34;&gt;创建第一个小程序项目&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;打开微信开发者工具&lt;/li&gt;
&lt;li&gt;扫码登录&lt;/li&gt;
&lt;li&gt;选择&amp;quot;小程序项目&amp;rdquo;&lt;/li&gt;
&lt;li&gt;点击&amp;quot;+&amp;ldquo;创建项目&lt;/li&gt;
&lt;li&gt;填写项目信息：
&lt;ul&gt;
&lt;li&gt;项目名称&lt;/li&gt;
&lt;li&gt;目录（选择一个空文件夹）&lt;/li&gt;
&lt;li&gt;AppID（填写之前复制的 AppID）&lt;/li&gt;
&lt;li&gt;开发模式（选择&amp;quot;小程序&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;后端服务（选择&amp;quot;不使用云服务&amp;quot;，如需要后期可更改）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;点击&amp;quot;新建&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;服务器配置&#34;&gt;服务器配置&lt;/h2&gt;
&lt;h3 id=&#34;配置服务器域名&#34;&gt;配置服务器域名&lt;/h3&gt;
&lt;p&gt;小程序只能与配置过的服务器域名进行网络通信。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录&lt;a href=&#34;https://mp.weixin.qq.com/&#34;&gt;微信公众平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;进入&amp;quot;开发&amp;quot; -&amp;gt; &amp;ldquo;开发管理&amp;rdquo; -&amp;gt; &amp;ldquo;开发设置&amp;rdquo; -&amp;gt; &amp;ldquo;服务器域名&amp;rdquo;&lt;/li&gt;
&lt;li&gt;点击&amp;quot;修改&amp;quot;&lt;/li&gt;
&lt;li&gt;分别配置：
&lt;ul&gt;
&lt;li&gt;request 合法域名（用于 wx.request）&lt;/li&gt;
&lt;li&gt;socket 合法域名（用于 wx.connectSocket）&lt;/li&gt;
&lt;li&gt;uploadFile 合法域名（用于 wx.uploadFile）&lt;/li&gt;
&lt;li&gt;downloadFile 合法域名（用于 wx.downloadFile）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;域名要求：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必须是 HTTPS 协议&lt;/li&gt;
&lt;li&gt;域名必须备案&lt;/li&gt;
&lt;li&gt;域名不能使用 IP 地址&lt;/li&gt;
&lt;li&gt;域名不能带端口号&lt;/li&gt;
&lt;li&gt;一个月内最多修改 5 次&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ssl-证书申请&#34;&gt;SSL 证书申请&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;免费证书来源：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Let&amp;rsquo;s Encrypt（推荐，免费，90 天有效期）&lt;/li&gt;
&lt;li&gt;阿里云免费证书（1 年有效期）&lt;/li&gt;
&lt;li&gt;腾讯云免费证书（1 年有效期）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;证书申请步骤（以阿里云为例）：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录阿里云控制台&lt;/li&gt;
&lt;li&gt;搜索&amp;quot;SSL 证书&amp;quot;&lt;/li&gt;
&lt;li&gt;选择&amp;quot;免费证书&amp;quot;&lt;/li&gt;
&lt;li&gt;填写域名信息&lt;/li&gt;
&lt;li&gt;选择 DNS 验证或文件验证&lt;/li&gt;
&lt;li&gt;完成验证后下载证书&lt;/li&gt;
&lt;li&gt;在服务器上配置证书（Nginx/Apache）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;nginx-配置示例&#34;&gt;Nginx 配置示例&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ssl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;yourdomain.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/path/to/cert.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate_key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/path/to/key.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_session_cache&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;shared:SSL:1m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_session_timeout&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_ciphers&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;HIGH:!aNULL:!MD5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://localhost:3000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Host&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;X-Real-IP&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# HTTP自动跳转HTTPS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;yourdomain.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;301&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$server_name$request_uri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;小程序发布流程&#34;&gt;小程序发布流程&lt;/h2&gt;
&lt;h3 id=&#34;代码开发&#34;&gt;代码开发&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在微信开发者工具中进行开发&lt;/li&gt;
&lt;li&gt;使用模拟器和真机预览测试&lt;/li&gt;
&lt;li&gt;确保代码符合微信小程序规范&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;代码上传&#34;&gt;代码上传&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在开发者工具中点击&amp;quot;上传&amp;quot;&lt;/li&gt;
&lt;li&gt;填写版本号和项目备注&lt;/li&gt;
&lt;li&gt;上传成功后可以在小程序后台看到&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;用户隐私保护指引设置&#34;&gt;用户隐私保护指引设置&lt;/h3&gt;
&lt;p&gt;必须要设置这一项，否则上线后小程序还是会有问题，但是这些问题在调试版本里都不会出现。&lt;/p&gt;
&lt;p&gt;进入账号设置：


&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/30f931394d5afe72ab5ce867f70a580d.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/30f931394d5afe72ab5ce867f70a580d.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;拉到底部找到&lt;strong&gt;用户隐私保护指引&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta charset=&#34;UTF-8&#34;&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
    &lt;title&gt;Responsive Image&lt;/title&gt;
    &lt;style&gt;
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    
    &lt;div class=&#34;post-img-view&#34;&gt;
        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/cc9fc5694f14aad01b48999c363aa55d.png&#34;&gt;
            &lt;img class=&#34;responsive-image&#34; src=&#34;https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/cc9fc5694f14aad01b48999c363aa55d.png&#34; alt=&#34;&#34;  style=&#34;margin: 0 auto;&#34;/&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    

    &lt;script&gt;
        document.addEventListener(&#34;DOMContentLoaded&#34;, function() {
            var images = document.querySelectorAll(&#34;.responsive-image&#34;);
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + &#34;px&#34;;
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
&lt;p&gt;填写完需要审核，耐心等待。&lt;/p&gt;
&lt;p&gt;为了能弹出对话框让用户同意隐私获取，需要在&lt;code&gt;app.json&lt;/code&gt;中加入这行代码：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;__usePrivacyCheck__&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样小程序会在使用到获取隐私的接口时自动弹出来。&lt;/p&gt;
&lt;p&gt;如果你的小程序定制化程度高，你也可以选择在你想要的时候弹出来，那么你需要参考官方文档&lt;a href=&#34;https://mp.weixin.qq.com/wxopen/announce?action=getannouncement&amp;amp;announce_id=1694692148&amp;amp;version=23&amp;amp;lang=zh_CN&#34;&gt;微信公众平台&lt;/a&gt;，自行修改。&lt;/p&gt;
&lt;h3 id=&#34;提交审核&#34;&gt;提交审核&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录&lt;a href=&#34;https://mp.weixin.qq.com/&#34;&gt;微信公众平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;进入&amp;quot;版本管理&amp;quot;&lt;/li&gt;
&lt;li&gt;选择刚上传的版本&lt;/li&gt;
&lt;li&gt;点击&amp;quot;提交审核&amp;quot;&lt;/li&gt;
&lt;li&gt;填写审核信息：
&lt;ul&gt;
&lt;li&gt;配置功能页面（至少添加一个页面）&lt;/li&gt;
&lt;li&gt;填写测试账号（如有登录功能）&lt;/li&gt;
&lt;li&gt;补充说明&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;提交等待审核&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;审核时长：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一般 1-7 个工作日&lt;/li&gt;
&lt;li&gt;首次审核可能较慢&lt;/li&gt;
&lt;li&gt;节假日会延长&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;审核不通过处理&#34;&gt;审核不通过处理&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;常见驳回原因：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;服务类目不符&lt;/li&gt;
&lt;li&gt;涉及未开放的接口&lt;/li&gt;
&lt;li&gt;功能描述与实际不符&lt;/li&gt;
&lt;li&gt;页面存在违规内容&lt;/li&gt;
&lt;li&gt;测试账号无法登录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;处理方法：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看驳回原因&lt;/li&gt;
&lt;li&gt;根据原因修改代码或说明&lt;/li&gt;
&lt;li&gt;重新提交审核&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;发布上线&#34;&gt;发布上线&lt;/h3&gt;
&lt;p&gt;审核通过后：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在&amp;quot;版本管理&amp;quot;中找到已通过审核的版本&lt;/li&gt;
&lt;li&gt;点击&amp;quot;发布&amp;quot;&lt;/li&gt;
&lt;li&gt;确认发布&lt;/li&gt;
&lt;li&gt;等待几分钟，小程序即可被用户搜索和使用&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;开发注意事项&#34;&gt;开发注意事项&lt;/h2&gt;
&lt;h3 id=&#34;开发规范&#34;&gt;开发规范&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;代码规范&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 ES6 语法&lt;/li&gt;
&lt;li&gt;保持代码简洁易读&lt;/li&gt;
&lt;li&gt;合理使用组件化开发&lt;/li&gt;
&lt;li&gt;添加必要的注释&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;性能优化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;图片压缩，使用 webp 格式&lt;/li&gt;
&lt;li&gt;合理使用分包加载&lt;/li&gt;
&lt;li&gt;避免频繁的 setData 操作&lt;/li&gt;
&lt;li&gt;及时清理定时器和监听器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;用户体验&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;添加 loading 提示&lt;/li&gt;
&lt;li&gt;处理网络异常情况&lt;/li&gt;
&lt;li&gt;优化首屏加载速度&lt;/li&gt;
&lt;li&gt;适配不同机型&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;常见问题&#34;&gt;常见问题&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Q1: 开发时如何调试 HTTPS 请求？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发者工具中可以勾选&amp;quot;不校验合法域名&amp;quot;&lt;/li&gt;
&lt;li&gt;但上线前必须配置好合法域名&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q2: 如何处理跨域问题？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小程序不存在跨域问题&lt;/li&gt;
&lt;li&gt;但需要在服务器域名白名单中&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q3: 小程序包大小限制？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主包不能超过 2MB&lt;/li&gt;
&lt;li&gt;所有分包总大小不能超过 20MB（使用分包优化后可达到更大）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Q4: 如何快速预览真机效果？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;点击&amp;quot;预览&amp;quot;生成二维码&lt;/li&gt;
&lt;li&gt;微信扫码即可在手机上预览&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;p&gt;微信小程序开发涉及的流程比较多，需要耐心完成每一步。主要流程总结如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;✅ &lt;strong&gt;购买服务器和域名&lt;/strong&gt;（注意选择性价比高的）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;ICP 备案&lt;/strong&gt;（10-20 个工作日，不能与小程序备案同时进行）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;小程序备案&lt;/strong&gt;（7-20 个工作日，个人备案注意备注&amp;quot;给自己使用&amp;quot;）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;小程序认证&lt;/strong&gt;（企业认证 300 元/年，个人可不认证）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;配置开发环境&lt;/strong&gt;（下载开发者工具，申请 AppID）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;配置服务器域名&lt;/strong&gt;（申请 SSL 证书，配置 HTTPS）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;开发与测试&lt;/strong&gt;（遵循开发规范，注意性能优化）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;提交审核与发布&lt;/strong&gt;（耐心等待审核，及时处理驳回）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;时间规划建议：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;备案阶段：预留 1 个月时间&lt;/li&gt;
&lt;li&gt;开发阶段：根据项目复杂度安排&lt;/li&gt;
&lt;li&gt;审核发布：预留 1 周时间&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;预算建议（个人小程序）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;服务器：100-500 元/年&lt;/li&gt;
&lt;li&gt;域名：10-100 元/年&lt;/li&gt;
&lt;li&gt;SSL 证书：免费&lt;/li&gt;
&lt;li&gt;小程序注册：免费（个人）&lt;/li&gt;
&lt;li&gt;小程序认证：可选（企业 300 元/年）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;希望这篇文章能帮助到正在开发小程序的朋友们，祝大家开发顺利！如有问题欢迎交流讨论。&lt;/p&gt;
</description>
      <content:encoded><![CDATA[<p>微信小程序开发不仅仅是写代码，还涉及服务器购买、域名备案、小程序备案、认证等一系列流程性工作。本文记录了从零开始开发微信小程序的完整流程，包括踩坑记录和注意事项，希望能帮助其他开发者少走弯路。</p>
<h2 id="服务器购买">服务器购买</h2>
<h3 id="选择云服务商">选择云服务商</h3>
<p>常见的云服务商有：</p>
<ul>
<li>阿里云（推荐）</li>
<li>腾讯云</li>
<li>华为云</li>
<li>百度云</li>
</ul>
<h3 id="服务器配置建议">服务器配置建议</h3>
<p><strong>小型个人小程序推荐配置：</strong></p>
<ul>
<li>CPU：1 核或 2 核</li>
<li>内存：2GB</li>
<li>带宽：1-3Mbps</li>
<li>系统盘：40GB</li>
<li>操作系统：CentOS 7.x 或 Ubuntu 18.04+</li>
</ul>
<p><strong>费用参考：</strong></p>
<ul>
<li>新用户通常有优惠，年费在 100-500 元不等</li>
<li>建议先购买 1 年，测试稳定后再续费</li>
</ul>
<h3 id="购买注意事项">购买注意事项</h3>
<ol>
<li>选择离目标用户较近的地域节点，可以降低延迟</li>
<li>新用户可关注各大云平台的首购优惠</li>
<li>学生用户可申请学生优惠</li>
<li>注意查看带宽费用，避免后期流量费用过高</li>
</ol>
<h2 id="域名购买">域名购买</h2>
<p><a href="https://wanwang.aliyun.com/newdomain/1yuan?spm=5176.8048432.J_1403848460.2.714769a3RIQTOp&amp;keyword=06031612">购买域名 1 元起_.xin 首年 0 元_域名优惠活动 - 阿里云权益中心</a></p>
<h3 id="选择合适的域名">选择合适的域名</h3>
<p>小程序用户看不到域名，所以选择便宜的即可。用生日组合纯数字.xyz 域名最便宜。</p>
<p><strong>选购技巧：</strong></p>
<ul>
<li>选择一个最便宜的域名时，注册时选择 2 年看看后期续费费用</li>
<li>如果一年 18 元，两年 120 元，说明第二年费用恢复原价，太贵了不要买</li>
<li>推荐选择续费价格稳定的域名后缀</li>
</ul>
<p><strong>常见便宜域名后缀：</strong></p>
<ul>
<li><code>.xyz</code>：首年最便宜，但续费可能较贵</li>
<li><code>.top</code>：价格适中</li>
<li><code>.site</code>：价格适中</li>
<li><code>.club</code>：价格适中</li>
</ul>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/f7cd9f9011c7b32a640c612df85d5df3.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/f7cd9f9011c7b32a640c612df85d5df3.png" alt="域名价格对比"  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/389f251903c6ac923c999c86bc14c58a.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/389f251903c6ac923c999c86bc14c58a.png" alt="域名选择界面"  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<h3 id="创建信息模板">创建信息模板</h3>
<p>下单时创建一个新的信息模板，避免之前创建过的填的信息不完善。购买之后会直接提交到域名注册局审核，信息不完善容易审核不通过。</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/11d11bf95e226b7e0e354b75d2175938.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/18/11d11bf95e226b7e0e354b75d2175938.png" alt="创建信息模板"  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p><strong>信息模板填写注意事项：</strong></p>
<ul>
<li>姓名必须与身份证一致</li>
<li>地址填写详细，精确到门牌号</li>
<li>电话号码保持畅通，可能会接到审核电话</li>
<li>邮箱填写常用邮箱</li>
</ul>
<h3 id="域名实名认证">域名实名认证</h3>
<p>等待几小时（一般在 6 小时内），域名注册局实名认证成功，即可进行下一步备案。</p>
<p><strong>实名认证材料：</strong></p>
<ul>
<li>个人：身份证正反面照片</li>
<li>企业：营业执照、法人身份证</li>
</ul>
<h3 id="域名解析">域名解析</h3>
<p>登录域名服务商，找到域名解析，添加解析记录。比如我在阿里云买的，从这里进入：</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/983aa81ac07af6a88b5ea59a69193528.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/983aa81ac07af6a88b5ea59a69193528.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>找到解析设置：</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/e356bc511e1442a7d5be9b465121c41e.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/e356bc511e1442a7d5be9b465121c41e.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>添加解析记录，第四步的IP地址就是你购买服务器后，服务器提供商给你的公网IP地址：</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2e15af90548937c053cb193a207591fc.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2e15af90548937c053cb193a207591fc.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>保存后，等待几分钟，解析记录就会生效。</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/a5c4ec7ac6ba8cdf4c59854d4986e0e8.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/a5c4ec7ac6ba8cdf4c59854d4986e0e8.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<h2 id="ssl证书购买与部署">SSL证书购买与部署</h2>
<p>微信小程序必须使用Https协议，所以需要购买SSL证书。阿里云有免费的证书可以测试使用，但是有效期是3个月，需要定期续费。</p>
<p>从以下路径找到免费证书申请入口，你也可以在阿里云顶部搜索框搜索SSL，也能找到。</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/7c9ec5e3e3b37d5a2c871ba83ed15ae5.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/7c9ec5e3e3b37d5a2c871ba83ed15ae5.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/91edd3abcc92baad15388995f85d0615.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/91edd3abcc92baad15388995f85d0615.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2574a342a1a6e414ca03ba543cb67c3f.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/2574a342a1a6e414ca03ba543cb67c3f.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>点击创建证书后，如实填写信息提交即可，然后等待签发：</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/9ef0b88be1877b6808cae5b2ab01e3e0.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/9ef0b88be1877b6808cae5b2ab01e3e0.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/b3c2b2c556035d5702008da8240a8c89.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/b3c2b2c556035d5702008da8240a8c89.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>快的话二十分钟就能签发，会给你发邮件提醒，之后就可以部署了：</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/1bcc2238828851e38524a1b1b2a4041f.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/04/1bcc2238828851e38524a1b1b2a4041f.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>点击部署，阿里云轻量ESC不支持一键部署，只能手动部署：</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/62a19ac3e263f686d409c16e34ec3f31.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/08/62a19ac3e263f686d409c16e34ec3f31.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>根据你的服务器类型选择SSL证书下载，我是用的Nginx。</p>
<p>部署我求助了AI工具，需要配置Nginx，我确实不会，这里我也不太好描述，还是自行问AI工具吧。</p>
<h2 id="icp-备案">ICP 备案</h2>
<p>点击<a href="https://beian.aliyun.com/?spm=5176.62f6de69.J_4VYgf18xNlTAyFFbOuOQe.d_beian">网站备案_ICP 备案_备案迁移_App 备案_小程序备案_备案 - 阿里云</a>开始备案。</p>
<h3 id="准备材料">准备材料</h3>
<p>需要准备身份证，根据提示填写个人信息即可。</p>
<p><strong>所需材料清单：</strong></p>
<ul>
<li>身份证正反面照片（清晰、完整）</li>
<li>手持身份证照片</li>
<li>幕布照片（部分云服务商需要）</li>
<li>域名证书</li>
<li>服务器证明（购买凭证）</li>
</ul>
<h3 id="备案流程">备案流程</h3>
<ol>
<li><strong>填写备案信息</strong>
<ul>
<li>主体信息（个人或企业信息）</li>
<li>网站信息（网站名称、域名等）</li>
<li>接入信息（服务器信息）</li>
</ul>
</li>
</ol>
<blockquote>
<p>域名备注十分重要，如果是商业用途就需要上传营业执照等信息，这个我没经验，请自行研究。如果是个人用途，需要注明个人使用。比如我的域名其实是为了小程序的后端使用的，我备注的内容是xxx小程序后端API使用。 这样写是无法通过审核的，默认是有商业用途。所以我改成了：<strong>个人工具后端</strong>。
如果你是用于部署个人博客，有些省份是不能备案的，这个请你最好提前在购买域名的厂商客服那咨询一下。
有一些关键字是不能出现的，比如新闻、出版、教育、医疗等需要前置审批的内容。如果你涉及这些也需要咨询一下厂商客服。</p>
</blockquote>
<ol start="2">
<li>
<p><strong>上传资料</strong></p>
<ul>
<li>按要求上传各类证件照片</li>
<li>确保照片清晰可见</li>
</ul>
</li>
<li>
<p><strong>真实性核验</strong></p>
<ul>
<li>部分地区需要视频核验</li>
<li>按照要求进行人脸识别</li>
</ul>
</li>
<li>
<p><strong>提交审核</strong></p>
<ul>
<li>云服务商初审（1-2 个工作日）</li>
<li>管局审核（3-20 个工作日，各地不同）</li>
</ul>
</li>
</ol>
<h3 id="重要提醒">重要提醒</h3>
<p><strong>不能和小程序备案同步进行！</strong> ICP 备案同一个主体（人）只能进行一个备案，需要当前备案结束后才能进行下一个。</p>
<p><strong>备案时长：</strong></p>
<ul>
<li>首次备案：通常需要 10-20 个工作日</li>
<li>不同省份审核时间不同</li>
<li>遇到节假日会延长</li>
</ul>
<blockquote>
<p>我两次备案都是在10天完成。如果你在阿里云购买的服务器也是在阿里云购买域名备案，在域名关联服务器时候选的是阿里云的，那么阿里云会送服务器时长。备案花了多少条就会送多少天。</p>
</blockquote>
<p><strong>备案网站命名规范：</strong></p>
<ul>
<li>个人网站不能包含企业、行业等字样</li>
<li>不能涉及新闻、出版、教育、医疗等需要前置审批的内容</li>
<li>建议使用通用名称，如&quot;XX 个人博客&quot;、&ldquo;XX 个人工具&rdquo;</li>
</ul>
<h2 id="公安联网备案">公安联网备案</h2>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/cde749a18a58deeafa4089699699b325.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/cde749a18a58deeafa4089699699b325.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>域名证书下载</p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/34fac0556854cc60c4727091779991d2.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/34fac0556854cc60c4727091779991d2.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p><a href="https://help.aliyun.com/zh/icp-filing/basic-icp-service/the-public-security-network-for-the-record-information-fill-in-the-guide">分步完成网站与APP公安联网备案申请-备案-阿里云</a></p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/ba4afe1a8ef7eb136b0843db980457fc.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/12/22/ba4afe1a8ef7eb136b0843db980457fc.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<h2 id="小程序备案">小程序备案</h2>
<p>访问<a href="https://mp.weixin.qq.com/wxamp/home/guide?lang=zh_CN&amp;token=1108861003">微信小程序</a>公众平台进行备案。</p>
<h3 id="备案流程-1">备案流程</h3>
<ol>
<li>
<p><strong>补充小程序信息</strong></p>
<ul>
<li>小程序名称</li>
<li>简介</li>
<li>服务类目</li>
<li>服务范围等</li>
</ul>
</li>
<li>
<p><strong>先提交微信官方审核</strong></p>
<ul>
<li>微信会审核小程序信息是否合规</li>
<li>审核时间通常为 1-3 个工作日</li>
</ul>
</li>
<li>
<p><strong>审核通过自动提交到工信部审核</strong></p>
<ul>
<li>工信部审核通过后，小程序备案完成</li>
<li>审核时间通常为 7-20 个工作日</li>
</ul>
</li>
<li>
<p><strong>审核不通过的处理</strong></p>
<ul>
<li>审核不通过会电话联系，告知需要修改的地方</li>
<li><strong>注意：电话会被小米手机标记为广告电话，请在提交审核这几天及时接听广告电话，避免错过！</strong></li>
<li>小程序平台会站内信告知需要修改的地方，但是不如电话里说的清楚</li>
<li>电话中不明白的可以及时问，但是错过电话就打不回去了</li>
</ul>
</li>
</ol>
<h3 id="个人小程序备案说明">个人小程序备案说明</h3>
<p><strong>重要提示：</strong> 普通小工具类小程序不需要公司也不需要营业执照，用身份证提交就行。</p>
<p><strong>但是小程序备注需要注明：给自己使用。</strong></p>
<p><strong>示例：</strong></p>
<ul>
<li>比如我开发了一个 Strava 贴纸合成到照片的小程序</li>
<li>我的备注是：<strong>用于给自己将两张图片合成为一张图片</strong></li>
</ul>
<p><strong>备注填写技巧：</strong></p>
<ul>
<li>明确说明是个人使用</li>
<li>功能描述简洁明了</li>
<li>避免涉及商业用途</li>
<li>避免涉及社交、支付等敏感功能</li>
</ul>
<h3 id="小程序备案常见问题">小程序备案常见问题</h3>
<p><strong>Q1: 个人小程序可以选择哪些类目？</strong></p>
<ul>
<li>工具类（如计算器、记事本）</li>
<li>生活服务类（非商业）</li>
<li>体育类</li>
<li>教育类（非学历教育）</li>
</ul>
<p><strong>Q2: 个人小程序有哪些限制？</strong></p>
<ul>
<li>不能涉及支付功能</li>
<li>不能涉及社交功能</li>
<li>不能涉及直播功能</li>
<li>不能发布商业广告</li>
</ul>
<p><strong>Q3: 小程序备案失败常见原因</strong></p>
<ul>
<li>备注未说明个人使用</li>
<li>功能超出个人类目范围</li>
<li>服务器未备案或备案信息不一致</li>
<li>小程序名称不符合规范</li>
</ul>
<h2 id="小程序认证">小程序认证</h2>
<p>小程序认证分为<strong>个人认证</strong>和<strong>企业认证</strong>，两者权限有较大差异。</p>
<h3 id="个人小程序未认证">个人小程序（未认证）</h3>
<p><strong>限制：</strong></p>
<ul>
<li>无法使用微信支付</li>
<li>无法使用卡券功能</li>
<li>无法使用附近的小程序</li>
<li>部分接口受限</li>
<li>每日访问用户数有上限</li>
</ul>
<p><strong>优势：</strong></p>
<ul>
<li>免费</li>
<li>审核流程简单</li>
<li>适合个人学习和小工具开发</li>
</ul>
<h3 id="企业认证">企业认证</h3>
<p><strong>认证费用：</strong> 300 元/年（微信官方收取）</p>
<p><strong>所需材料：</strong></p>
<ul>
<li>营业执照</li>
<li>法人身份证</li>
<li>对公账户信息（或法人微信支付）</li>
<li>企业邮箱</li>
</ul>
<p><strong>认证流程：</strong></p>
<ol>
<li>登录小程序后台，点击&quot;微信认证&quot;</li>
<li>填写企业信息</li>
<li>上传营业执照等资料</li>
<li>选择认证方式：
<ul>
<li>对公账户打款验证（0.01 元，需 1-3 个工作日）</li>
<li>法人微信扫码验证（即时验证，推荐）</li>
</ul>
</li>
<li>等待审核（通常 1-3 个工作日）</li>
</ol>
<p><strong>企业认证的优势：</strong></p>
<ul>
<li>开通微信支付功能</li>
<li>提升用户信任度</li>
<li>解锁更多 API 接口</li>
<li>无访问用户数限制</li>
<li>可以使用附近的小程序功能</li>
<li>可以发布卡券</li>
</ul>
<h3 id="认证注意事项">认证注意事项</h3>
<ol>
<li><strong>企业认证必须是已注册的企业</strong>，个体工商户也可以</li>
<li><strong>年审：</strong> 企业认证每年需要重新认证，费用 300 元</li>
<li><strong>认证后不可更改主体</strong>，请谨慎选择</li>
<li><strong>认证信息要真实</strong>，虚假信息会导致认证失败甚至封号</li>
</ol>
<h2 id="开发环境配置">开发环境配置</h2>
<h3 id="下载微信开发者工具">下载微信开发者工具</h3>
<p>访问<a href="https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html">微信开发者工具下载页面</a>，根据操作系统下载对应版本。</p>
<p><strong>支持平台：</strong></p>
<ul>
<li>Windows 64 位</li>
<li>macOS</li>
<li>Linux</li>
</ul>
<h3 id="申请-appid">申请 AppID</h3>
<ol>
<li>登录<a href="https://mp.weixin.qq.com/">微信公众平台</a></li>
<li>进入小程序后台</li>
<li>在&quot;开发&quot; -&gt; &ldquo;开发管理&rdquo; -&gt; &ldquo;开发设置&quot;中查看 AppID</li>
<li>复制 AppID 备用</li>
</ol>
<h3 id="创建第一个小程序项目">创建第一个小程序项目</h3>
<ol>
<li>打开微信开发者工具</li>
<li>扫码登录</li>
<li>选择&quot;小程序项目&rdquo;</li>
<li>点击&quot;+&ldquo;创建项目</li>
<li>填写项目信息：
<ul>
<li>项目名称</li>
<li>目录（选择一个空文件夹）</li>
<li>AppID（填写之前复制的 AppID）</li>
<li>开发模式（选择&quot;小程序&rdquo;）</li>
<li>后端服务（选择&quot;不使用云服务&quot;，如需要后期可更改）</li>
</ul>
</li>
<li>点击&quot;新建&quot;</li>
</ol>
<h2 id="服务器配置">服务器配置</h2>
<h3 id="配置服务器域名">配置服务器域名</h3>
<p>小程序只能与配置过的服务器域名进行网络通信。</p>
<p><strong>配置步骤：</strong></p>
<ol>
<li>登录<a href="https://mp.weixin.qq.com/">微信公众平台</a></li>
<li>进入&quot;开发&quot; -&gt; &ldquo;开发管理&rdquo; -&gt; &ldquo;开发设置&rdquo; -&gt; &ldquo;服务器域名&rdquo;</li>
<li>点击&quot;修改&quot;</li>
<li>分别配置：
<ul>
<li>request 合法域名（用于 wx.request）</li>
<li>socket 合法域名（用于 wx.connectSocket）</li>
<li>uploadFile 合法域名（用于 wx.uploadFile）</li>
<li>downloadFile 合法域名（用于 wx.downloadFile）</li>
</ul>
</li>
</ol>
<p><strong>域名要求：</strong></p>
<ul>
<li>必须是 HTTPS 协议</li>
<li>域名必须备案</li>
<li>域名不能使用 IP 地址</li>
<li>域名不能带端口号</li>
<li>一个月内最多修改 5 次</li>
</ul>
<h3 id="ssl-证书申请">SSL 证书申请</h3>
<p><strong>免费证书来源：</strong></p>
<ul>
<li>Let&rsquo;s Encrypt（推荐，免费，90 天有效期）</li>
<li>阿里云免费证书（1 年有效期）</li>
<li>腾讯云免费证书（1 年有效期）</li>
</ul>
<p><strong>证书申请步骤（以阿里云为例）：</strong></p>
<ol>
<li>登录阿里云控制台</li>
<li>搜索&quot;SSL 证书&quot;</li>
<li>选择&quot;免费证书&quot;</li>
<li>填写域名信息</li>
<li>选择 DNS 验证或文件验证</li>
<li>完成验证后下载证书</li>
<li>在服务器上配置证书（Nginx/Apache）</li>
</ol>
<h3 id="nginx-配置示例">Nginx 配置示例</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nginx" data-lang="nginx"><span class="line"><span class="cl"><span class="k">server</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kn">listen</span> <span class="mi">443</span> <span class="s">ssl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">server_name</span> <span class="s">yourdomain.com</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="kn">ssl_certificate</span> <span class="s">/path/to/cert.pem</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">ssl_certificate_key</span> <span class="s">/path/to/key.pem</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="kn">ssl_session_cache</span> <span class="s">shared:SSL:1m</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">ssl_session_timeout</span> <span class="mi">5m</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">ssl_ciphers</span> <span class="s">HIGH:!aNULL:!MD5</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">ssl_prefer_server_ciphers</span> <span class="no">on</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="kn">location</span> <span class="s">/</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="kn">proxy_pass</span> <span class="s">http://localhost:3000</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="kn">proxy_set_header</span> <span class="s">Host</span> <span class="nv">$host</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="kn">proxy_set_header</span> <span class="s">X-Real-IP</span> <span class="nv">$remote_addr</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># HTTP自动跳转HTTPS
</span></span></span><span class="line"><span class="cl"><span class="k">server</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kn">listen</span> <span class="mi">80</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">server_name</span> <span class="s">yourdomain.com</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kn">return</span> <span class="mi">301</span> <span class="s">https://</span><span class="nv">$server_name$request_uri</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h2 id="小程序发布流程">小程序发布流程</h2>
<h3 id="代码开发">代码开发</h3>
<ol>
<li>在微信开发者工具中进行开发</li>
<li>使用模拟器和真机预览测试</li>
<li>确保代码符合微信小程序规范</li>
</ol>
<h3 id="代码上传">代码上传</h3>
<ol>
<li>在开发者工具中点击&quot;上传&quot;</li>
<li>填写版本号和项目备注</li>
<li>上传成功后可以在小程序后台看到</li>
</ol>
<h3 id="用户隐私保护指引设置">用户隐私保护指引设置</h3>
<p>必须要设置这一项，否则上线后小程序还是会有问题，但是这些问题在调试版本里都不会出现。</p>
<p>进入账号设置：


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/30f931394d5afe72ab5ce867f70a580d.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/30f931394d5afe72ab5ce867f70a580d.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>拉到底部找到<strong>用户隐私保护指引</strong></p>
<p>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Image</title>
    <style>
        .post-img-view {
            text-align: center;
        }
        .responsive-image {
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    
    <div class="post-img-view">
        <a data-fancybox="gallery" href="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/cc9fc5694f14aad01b48999c363aa55d.png">
            <img class="responsive-image" src="https://picbed-1311007548.cos.ap-shanghai.myqcloud.com/markdown_picbed/img//2025/11/24/cc9fc5694f14aad01b48999c363aa55d.png" alt=""  style="margin: 0 auto;"/>
        </a>
    </div>
    

    <script>
        document.addEventListener("DOMContentLoaded", function() {
            var images = document.querySelectorAll(".responsive-image");
            var maxHeight = window.innerHeight / 3;
            images.forEach(function(image) {
                image.style.maxHeight = maxHeight + "px";
            });
        });
    </script>
</body>
</html></p>
<p>填写完需要审核，耐心等待。</p>
<p>为了能弹出对话框让用户同意隐私获取，需要在<code>app.json</code>中加入这行代码：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;__usePrivacyCheck__&#34;</span><span class="err">:</span> <span class="kc">true</span>
</span></span></code></pre></div><p>这样小程序会在使用到获取隐私的接口时自动弹出来。</p>
<p>如果你的小程序定制化程度高，你也可以选择在你想要的时候弹出来，那么你需要参考官方文档<a href="https://mp.weixin.qq.com/wxopen/announce?action=getannouncement&amp;announce_id=1694692148&amp;version=23&amp;lang=zh_CN">微信公众平台</a>，自行修改。</p>
<h3 id="提交审核">提交审核</h3>
<ol>
<li>登录<a href="https://mp.weixin.qq.com/">微信公众平台</a></li>
<li>进入&quot;版本管理&quot;</li>
<li>选择刚上传的版本</li>
<li>点击&quot;提交审核&quot;</li>
<li>填写审核信息：
<ul>
<li>配置功能页面（至少添加一个页面）</li>
<li>填写测试账号（如有登录功能）</li>
<li>补充说明</li>
</ul>
</li>
<li>提交等待审核</li>
</ol>
<p><strong>审核时长：</strong></p>
<ul>
<li>一般 1-7 个工作日</li>
<li>首次审核可能较慢</li>
<li>节假日会延长</li>
</ul>
<h3 id="审核不通过处理">审核不通过处理</h3>
<p><strong>常见驳回原因：</strong></p>
<ul>
<li>服务类目不符</li>
<li>涉及未开放的接口</li>
<li>功能描述与实际不符</li>
<li>页面存在违规内容</li>
<li>测试账号无法登录</li>
</ul>
<p><strong>处理方法：</strong></p>
<ul>
<li>查看驳回原因</li>
<li>根据原因修改代码或说明</li>
<li>重新提交审核</li>
</ul>
<h3 id="发布上线">发布上线</h3>
<p>审核通过后：</p>
<ol>
<li>在&quot;版本管理&quot;中找到已通过审核的版本</li>
<li>点击&quot;发布&quot;</li>
<li>确认发布</li>
<li>等待几分钟，小程序即可被用户搜索和使用</li>
</ol>
<h2 id="开发注意事项">开发注意事项</h2>
<h3 id="开发规范">开发规范</h3>
<ol>
<li>
<p><strong>代码规范</strong></p>
<ul>
<li>使用 ES6 语法</li>
<li>保持代码简洁易读</li>
<li>合理使用组件化开发</li>
<li>添加必要的注释</li>
</ul>
</li>
<li>
<p><strong>性能优化</strong></p>
<ul>
<li>图片压缩，使用 webp 格式</li>
<li>合理使用分包加载</li>
<li>避免频繁的 setData 操作</li>
<li>及时清理定时器和监听器</li>
</ul>
</li>
<li>
<p><strong>用户体验</strong></p>
<ul>
<li>添加 loading 提示</li>
<li>处理网络异常情况</li>
<li>优化首屏加载速度</li>
<li>适配不同机型</li>
</ul>
</li>
</ol>
<h3 id="常见问题">常见问题</h3>
<p><strong>Q1: 开发时如何调试 HTTPS 请求？</strong></p>
<ul>
<li>开发者工具中可以勾选&quot;不校验合法域名&quot;</li>
<li>但上线前必须配置好合法域名</li>
</ul>
<p><strong>Q2: 如何处理跨域问题？</strong></p>
<ul>
<li>小程序不存在跨域问题</li>
<li>但需要在服务器域名白名单中</li>
</ul>
<p><strong>Q3: 小程序包大小限制？</strong></p>
<ul>
<li>主包不能超过 2MB</li>
<li>所有分包总大小不能超过 20MB（使用分包优化后可达到更大）</li>
</ul>
<p><strong>Q4: 如何快速预览真机效果？</strong></p>
<ul>
<li>点击&quot;预览&quot;生成二维码</li>
<li>微信扫码即可在手机上预览</li>
</ul>
<h2 id="总结">总结</h2>
<p>微信小程序开发涉及的流程比较多，需要耐心完成每一步。主要流程总结如下：</p>
<ol>
<li>✅ <strong>购买服务器和域名</strong>（注意选择性价比高的）</li>
<li>✅ <strong>ICP 备案</strong>（10-20 个工作日，不能与小程序备案同时进行）</li>
<li>✅ <strong>小程序备案</strong>（7-20 个工作日，个人备案注意备注&quot;给自己使用&quot;）</li>
<li>✅ <strong>小程序认证</strong>（企业认证 300 元/年，个人可不认证）</li>
<li>✅ <strong>配置开发环境</strong>（下载开发者工具，申请 AppID）</li>
<li>✅ <strong>配置服务器域名</strong>（申请 SSL 证书，配置 HTTPS）</li>
<li>✅ <strong>开发与测试</strong>（遵循开发规范，注意性能优化）</li>
<li>✅ <strong>提交审核与发布</strong>（耐心等待审核，及时处理驳回）</li>
</ol>
<p><strong>时间规划建议：</strong></p>
<ul>
<li>备案阶段：预留 1 个月时间</li>
<li>开发阶段：根据项目复杂度安排</li>
<li>审核发布：预留 1 周时间</li>
</ul>
<p><strong>预算建议（个人小程序）：</strong></p>
<ul>
<li>服务器：100-500 元/年</li>
<li>域名：10-100 元/年</li>
<li>SSL 证书：免费</li>
<li>小程序注册：免费（个人）</li>
<li>小程序认证：可选（企业 300 元/年）</li>
</ul>
<p>希望这篇文章能帮助到正在开发小程序的朋友们，祝大家开发顺利！如有问题欢迎交流讨论。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
