[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"public-theme-runtime":3,"navigation-bootstrap":38,"public-module-runtime":139,"posts-list-page":156},{"success":4,"data":5,"message":37,"globalStats":-1},true,{"slug":6,"name":7,"version":8,"source":9,"inheritanceChain":10,"layouts":11,"slots":17,"configKeys":32,"assets":34,"config":36},"default","Default Theme","1.0.0","builtin",[6],[12,13,14,15,16],"home","post-list","post-detail","tool-index","user-dashboard",[18,19,20,21,22,23,24,25,26,27,28,29,30,31],"layout.sidebar","layout.mobile-tabbar","home.hero","home.game-strip","home.featured-columns","home.trending-posts","home.trending-tags","post.author","post.body","post.related","post.comments","post.sidebar","tools.hero","user.summary",[33],"theme:default",{"stylesheets":35},[],{},"操作成功",{"navigation":39,"categories":95},{"main":40,"utility":64,"mobile":71,"mobileConfigured":4},[41,49,54,59],{"id":42,"name":43,"path":44,"icon":45,"color":46,"group":47,"target":48,"isVisible":4,"moduleSlug":46},1,"首页","\u002F","i-carbon-home","","MAIN","_self",{"id":50,"name":51,"path":52,"icon":53,"color":46,"group":47,"target":48,"isVisible":4,"moduleSlug":46},2,"文章列表","\u002Fposts","i-carbon-document",{"id":55,"name":56,"path":57,"icon":58,"color":46,"group":47,"target":48,"isVisible":4,"moduleSlug":46},4,"标签云","\u002Ftags","i-carbon-tag",{"id":60,"name":61,"path":62,"icon":63,"color":46,"group":47,"target":48,"isVisible":4,"moduleSlug":46},5,"关于我们","\u002Fabout","i-carbon-information",[65],{"id":66,"name":67,"path":68,"icon":69,"color":46,"group":70,"target":48,"isVisible":4,"moduleSlug":46},6,"Mj·工具箱","\u002Ftools","i-carbon-tool-box","UTILITY",[72,76,81,84,89],{"id":73,"name":74,"path":52,"icon":53,"color":46,"group":75,"target":48,"isVisible":4,"moduleSlug":46},27,"文章","MOBILE",{"id":77,"name":78,"path":79,"icon":80,"color":46,"group":75,"target":48,"isVisible":4,"moduleSlug":46},28,"游戏","\u002Fgames","i-carbon-game-console",{"id":82,"name":43,"path":44,"icon":45,"color":83,"group":75,"target":48,"isVisible":4,"moduleSlug":46},16,"#4f46e5",{"id":85,"name":86,"path":68,"icon":87,"color":88,"group":75,"target":48,"isVisible":4,"moduleSlug":46},18,"工具","i-carbon-tool-kit","#06b6d4",{"id":90,"name":91,"path":92,"icon":93,"color":94,"group":75,"target":48,"isVisible":4,"moduleSlug":46},22,"我的","\u002Fuser","i-carbon-user","#0f172a",[96,106,113,119,124,132],{"id":42,"name":97,"slug":98,"parentId":99,"sort":42,"createdAt":100,"description":101,"icon":102,"updatedAt":100,"type":103,"isVisible":4,"_count":104,"postCount":105},"技术文章","tech",null,"2026-03-31T13:24:10.236Z","技术相关文章分享","i-carbon-code","ARTICLE",{"posts":105},3,{"id":50,"name":107,"slug":108,"parentId":99,"sort":50,"createdAt":100,"description":109,"icon":110,"updatedAt":100,"type":103,"isVisible":4,"_count":111,"postCount":112},"生活随笔","life","生活感悟与随笔","i-carbon-cafe",{"posts":112},0,{"id":105,"name":114,"slug":115,"parentId":99,"sort":105,"createdAt":100,"description":116,"icon":117,"updatedAt":100,"type":103,"isVisible":4,"_count":118,"postCount":112},"资源分享","resources","实用资源下载分享","i-carbon-download",{"posts":112},{"id":55,"name":120,"slug":121,"parentId":99,"sort":55,"createdAt":100,"description":122,"icon":80,"updatedAt":100,"type":103,"isVisible":4,"_count":123,"postCount":112},"游戏专题","games","游戏相关内容",{"posts":112},{"id":60,"name":125,"slug":126,"parentId":42,"sort":127,"createdAt":128,"description":129,"icon":130,"updatedAt":128,"type":103,"isVisible":4,"_count":131,"postCount":42},"后端技术","Back-end-technology",10,"2026-04-27T11:46:35.299Z","后端开发技术分享","i-carbon-bookmark",{"posts":42},{"id":66,"name":133,"slug":134,"parentId":42,"sort":127,"createdAt":135,"description":46,"icon":136,"updatedAt":137,"type":103,"isVisible":4,"_count":138,"postCount":42},"前端技术","Front-end-technology","2026-04-27T15:35:13.787Z","i-carbon-laptop","2026-04-27T15:35:27.999Z",{"posts":42},{"success":4,"data":140,"message":37,"globalStats":-1},[141,147,152],{"slug":142,"name":143,"version":8,"frontendEntryPath":144,"loadable":145,"enabled":4,"installed":4,"dependenciesResolved":4,"status":146},"ai-keywords","AI关键词库","\u002Fai-keywords",false,"enabled",{"slug":148,"name":149,"version":150,"frontendEntryPath":79,"loadable":145,"enabled":145,"installed":4,"dependenciesResolved":4,"status":151},"game","游戏模块","1.0.1","disabled",{"slug":153,"name":154,"version":155,"frontendEntryPath":68,"loadable":145,"enabled":4,"installed":4,"dependenciesResolved":4,"status":146},"tools","工具箱模块","1.0.2",{"success":4,"data":157,"message":37,"globalStats":-1},{"list":158,"total":105,"stats":231,"page":42,"pageSize":233},[159,195,211],{"id":42,"title":160,"slug":161,"cover":46,"summary":162,"content":163,"contentFormat":164,"views":165,"likes":82,"status":166,"reviewStatus":167,"reviewRemark":99,"reviewSubmittedAt":168,"reviewedAt":169,"isTop":4,"isRecommend":4,"isVipFree":4,"publishedAt":170,"createdAt":170,"authorId":42,"categoryId":42,"category":171,"author":172,"resourceCount":112,"_count":176,"tags":177,"meta":194},"欢迎来到小米酒内容管理系统","welcome-to-mjblog","欢迎使用 MjBlog 内容管理系统，这是一个功能强大的现代化内容平台。","\u003Ch1>欢迎使用 MjBlogA\u003C\u002Fh1>\n\u003Cp>这是一篇演示文章，展示了系统的基本功能。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>序号\u003C\u002Fth>\n\u003Cth>名称\u003C\u002Fth>\n\u003Cth>年龄\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>1\u003C\u002Ftd>\n\u003Ctd>小米多\u003C\u002Ftd>\n\u003Ctd>9\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>2\u003C\u002Ftd>\n\u003Ctd>章小酒\u003C\u002Ftd>\n\u003Ctd>4\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\n\u003Cdiv class=\"md-callout md-callout-info\">\u003Cp>这里是小米多测试的标签\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Cdiv class=\"md-callout md-callout-success\">\u003Cp>这里是章小酒测试的标签\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Cdiv class=\"md-callout md-callout-danger\">\u003Cp>这里是管理员测试的标签\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Cdiv class=\"md-block md-align-center\">\u003Cp>这里是测试居中文本\u003C\u002Fp>\n\u003Chr \u002F>\n\u003C\u002Fdiv>\n\u003Cp>这里是居左测试文本\u003C\u002Fp>\n\u003Chr \u002F>\n\n\u003Cdiv class=\"md-block md-align-right\">\u003Cp>这里是居右测试文本\u003C\u002Fp>\n\u003Chr \u002F>\n\u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>这里是测试标题一\u003C\u002Fli>\n\u003Cli>这里是测试标题二\u003C\u002Fli>\n\u003Cli>这里是测试标题三\u003C\u002Fli>\n\u003Cli>这里是测试标题四\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Cul data-type=\"taskList\">\n\u003Cli data-type=\"taskItem\" data-checked=\"false\">\u003Clabel>\u003Cinput type=\"checkbox\" disabled=\"disabled\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Flabel>\u003Cdiv>这里是选择框一\u003C\u002Fdiv>\u003C\u002Fli>\n\u003Cli data-type=\"taskItem\" data-checked=\"true\">\u003Clabel>\u003Cinput type=\"checkbox\" disabled=\"disabled\" checked=\"checked\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Flabel>\u003Cdiv>这里是选择框二\u003C\u002Fdiv>\u003C\u002Fli>\n\u003Cli data-type=\"taskItem\" data-checked=\"false\">\u003Clabel>\u003Cinput type=\"checkbox\" disabled=\"disabled\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Flabel>\u003Cdiv>这里是选择框三\u003C\u002Fdiv>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Col>\n\u003Cli>这里是测试序号排列一\u003C\u002Fli>\n\u003Cli>这里是测试序号排列三\u003C\u002Fli>\n\u003Cli>这里是测试序号排列四\u003C\u002Fli>\n\u003Cli>这里是测试序号排列五\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cblockquote>\n\u003Cp>这里是引用信息测试\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>这里是\u003Ccode>行内代码\u003C\u002Fcode>测试\u003C\u002Fp>\n\u003Cp>这里是区块代码测试\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;dict&gt;\n\t\t&lt;key&gt;Arch&lt;\u002Fkey&gt;\n\t\t&lt;string&gt;x86_64&lt;\u002Fstring&gt;\n\t\t&lt;key&gt;Comment&lt;\u002Fkey&gt;\n\t\t&lt;string&gt;&lt;\u002Fstring&gt;\n\t\t&lt;key&gt;Enabled&lt;\u002Fkey&gt;\n\t\t&lt;true\u002F&gt;\n\t\t&lt;key&gt;Identifier&lt;\u002Fkey&gt;\n\t\t&lt;string&gt;com.apple.iokit.IOSkywalkFamily&lt;\u002Fstring&gt;\n\t\t&lt;key&gt;MaxKernel&lt;\u002Fkey&gt;\n\t\t&lt;string&gt;&lt;\u002Fstring&gt;\n\t\t&lt;key&gt;MinKernel&lt;\u002Fkey&gt;\n\t\t&lt;string&gt;&lt;\u002Fstring&gt;\n\t\t&lt;key&gt;Strategy&lt;\u002Fkey&gt;\n\t\t&lt;string&gt;Exclude&lt;\u002Fstring&gt;\n&lt;\u002Fdict&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n","markdown",166,"published","APPROVED","2026-04-20T17:10:37.540Z","2026-04-20T17:10:49.143Z","2026-03-24T13:24:10.268Z",{"id":42,"name":97},{"id":42,"username":173,"nickname":174,"avatar":99,"gender":175},"admin","小米酒","MALE",{"comments":42,"resources":112},[178,182,186,190],{"name":179,"slug":180,"color":181},"JavaScript","javascript","#f7df1e",{"name":183,"slug":184,"color":185},"TypeScript","typescript","#3178c6",{"name":187,"slug":188,"color":189},"Nuxt","nuxt","#00dc82",{"name":191,"slug":192,"color":193},"数据库","database","#00758f",{},{"id":196,"title":197,"slug":198,"cover":199,"summary":200,"content":201,"contentFormat":164,"views":202,"likes":112,"status":166,"reviewStatus":167,"reviewRemark":99,"reviewSubmittedAt":99,"reviewedAt":203,"isTop":145,"isRecommend":145,"isVipFree":145,"publishedAt":99,"createdAt":204,"authorId":42,"categoryId":66,"category":205,"author":206,"resourceCount":112,"_count":207,"tags":208,"meta":210},8,"Node.js 注释规范模板（AI 可用标准版）","n-o-d-e-j-s-zhu-shi-gui-fan-mu-ban-a-i-ke-yong-biao-zhun-ban","https:\u002F\u002Fmjblog.res.ziyowl.com\u002F2026\u002F04\u002F27\u002F1777304019183-9pchqeze.jpg","在 Node.js 项目开发中，清晰规范的注释不仅能够提升代码可读性，还能有效降低团队协作和维护成本。本文提供了一套完整的 Node.js 注释规范模板，涵盖文件头、类\u002F模块、函数\u002F方法、行内注释、TODO\u002FFIXME 等各类场景，并严格遵循 JSDoc 标准，支持异步函数和回调函数的规范化注释。通过统一风格、分层注释与工具辅助检查，这套规范不仅便于开发者理解代码逻辑，还能让 AI 辅助生成代码时自动遵循标准，提高开发效率与团队协作质量。","\u003Ch2>\u003Cstrong>一、总原则\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\u003Cstrong>清晰简洁\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>注释说明“为什么”和“做什么”，避免解释“怎么做”。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>\u003Cstrong>统一风格\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>团队统一中文或英文。\u003C\u002Fli>\n\u003Cli>行内注释与代码间空一格。\u003C\u002Fli>\n\u003Cli>注释首字母大写。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>\u003Cstrong>分层注释\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>文件头 → 模块\u002F类 → 函数\u002F方法 → 关键逻辑行内 → TODO\u002FFIXME\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>\u003Cstrong>工具辅助\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>推荐 ESLint + \u003Ccode>eslint-plugin-jsdoc\u003C\u002Fcode>，强制函数必须有 JSDoc 注释。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>二、文件头模板（File Header）\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\u002F**\n * @file 文件名.js\n * @description 文件功能简介\n * @author 作者名\n * @date YYYY-MM-DD\n * @version 版本号\n * @license 许可信息（可选）\n *\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>示例：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F**\n * @file userController.js\n * @description 用户模块控制器，处理注册、登录及信息管理\n * @author ZhangYaLong\n * @date 2026-03-29\n * @version 1.0.0\n *\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>三、类\u002F模块注释模板（Class\u002FModule）\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\u002F**\n * 类名\u002F模块名\n * 功能描述\n * 注意事项或使用说明\n *\u002F\nclass ClassName {}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>示例：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F**\n * UserService 类\n * 提供用户增删改查及认证功能\n * 注意：所有方法均异步执行\n *\u002F\nclass UserService {}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>四、函数\u002F方法注释模板（JSDoc 标准）\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\u002F**\n * 功能描述\n * @async (可选，异步函数)\n * @param {类型} 参数名 - 参数说明\n * @param {类型} 参数名.prop - 对象属性说明\n * @returns {类型} 返回值说明\n * @throws {Error} 异常说明\n * @deprecated (可选，废弃方法)\n * @example (可选，使用示例)\n *\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>示例：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F**\n * 根据用户ID获取用户信息\n * @async\n * @param {number} userId - 用户ID\n * @returns {Promise&lt;Object&gt;} 用户信息对象\n * @throws {Error} 当用户不存在时抛出异常\n * @example\n * const user = await getUserById(123);\n *\u002F\nasync function getUserById(userId) {}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>五、行内注释规范（Inline Comment）\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Col>\n\u003Cli>仅在关键逻辑或复杂算法处使用。\u003C\u002Fli>\n\u003Cli>单行注释使用 \u003Ccode>\u002F\u002F\u003C\u002Fcode>，多行注释使用 \u003Ccode>\u002F* ... *\u002F\u003C\u002Fcode>。\u003C\u002Fli>\n\u003Cli>注释与代码间空一格。\u003C\u002Fli>\n\u003Cli>避免注释显而易见的代码。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>示例：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F 将日期格式化为 YYYY-MM-DD\nconst formattedDate = date.toISOString().slice(0, 10);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>六、TODO \u002F FIXME 注释规范\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\u002F\u002F TODO: 待实现的功能描述\n\u002F\u002F FIXME: 待修复的问题描述\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>示例：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F TODO: 用户登录失败超过5次应锁定账户\n\u002F\u002F FIXME: 密码加密逻辑性能低，需要优化\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>七、异步函数 \u002F 回调函数模板\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\u002F**\n * 异步操作示例\n * @async\n * @param {Function} callback - 回调函数\n * @returns {Promise&lt;void&gt;}\n *\u002F\nexport async function doAsyncTask(callback) {\n    try {\n        const result = await someAsyncOperation();\n        callback(null, result);\n    } catch (err) {\n        callback(err);\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>八、Controller \u002F Service \u002F Model 模板（AI 可直接套用）\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Ch3>\u003Cstrong>Controller 模板\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>\u002F**\n * @file 模块名Controller.js\n * @description 控制器，处理接口请求逻辑\n * @author 作者名\n * @date YYYY-MM-DD\n * @version 1.0.0\n *\u002F\nimport { ModuleService } from &#39;..\u002Fservice\u002FmoduleService.js&#39;;\n​\nexport class ModuleController {\n    constructor() {\n        this.service = new ModuleService();\n    }\n​\n    \u002F**\n     * 示例接口方法\n     * @async\n     * @param {Object} ctx - 请求上下文\n     * @returns {Promise&lt;void&gt;}\n     *\u002F\n    async exampleMethod(ctx) {\n        try {\n            const data = await this.service.exampleService();\n            ctx.body = { success: true, data };\n        } catch (err) {\n            ctx.status = 400;\n            ctx.body = { success: false, message: err.message };\n        }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>\u003Cstrong>Service 模板\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>\u002F**\n * @file moduleService.js\n * @description 服务层，处理业务逻辑\n * @author 作者名\n * @date YYYY-MM-DD\n * @version 1.0.0\n *\u002F\nexport class ModuleService {\n    \u002F**\n     * 示例业务方法\n     * @async\n     * @returns {Promise&lt;Object&gt;} 返回结果\n     *\u002F\n    async exampleService() {\n        \u002F\u002F TODO: 实现业务逻辑\n        return { message: &#39;示例数据&#39; };\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>\u003Cstrong>Model 模板\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>\u002F**\n * @file moduleModel.js\n * @description 数据模型层，封装数据库操作\n *\u002F\nexport class ModuleModel {\n    \u002F**\n     * 根据 ID 查询数据\n     * @param {number} id - 数据ID\n     * @returns {Promise&lt;Object|null&gt;} 数据对象或 null\n     *\u002F\n    static async findById(id) {\n        \u002F\u002F TODO: 数据库查询逻辑\n        return null;\n    }\n​\n    \u002F**\n     * 创建数据\n     * @param {Object} data - 数据对象\n     * @returns {Promise&lt;Object&gt;} 创建成功对象\n     *\u002F\n    static async create(data) {\n        \u002F\u002F TODO: 数据库写入逻辑\n        return data;\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>九、工具函数模板（Utils）\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\u002F**\n * @file utils.js\n * @description 工具函数集合\n *\u002F\n​\n\u002F**\n * 格式化日期为 YYYY-MM-DD\n * @param {Date|string} date - 日期对象或字符串\n * @returns {string} 格式化后日期\n *\u002F\nexport function formatDate(date) {\n    const d = date instanceof Date ? date : new Date(date);\n    return d.toISOString().slice(0, 10);\n}\n​\n\u002F**\n * 获取当前时间戳（秒）\n * @returns {number} 当前时间戳\n *\u002F\nexport function nowTimestamp() {\n    return Math.floor(Date.now() \u002F 1000);\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch3>\u003Cstrong>✅ 使用方法\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Col>\n\u003Cli>AI 自动生成代码时：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n\u003Cli>文件头模板 → 自动写入文件名\u002F作者\u002F日期\u003C\u002Fli>\n\u003Cli>类\u002F函数模板 → 套用 JSDoc 标准\u003C\u002Fli>\n\u003Cli>行内注释 → AI 生成关键逻辑时自动生成\u003C\u002Fli>\n\u003Cli>TODO\u002FFIXME → 标记 AI 未实现部分\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>ESLint + \u003Ccode>eslint-plugin-jsdoc\u003C\u002Fcode> 可辅助检查规范\u003C\u002Fli>\n\u003Cli>所有模块可直接复制粘贴使用\u003C\u002Fli>\n\u003C\u002Fol>\n",19,"2026-04-27T15:35:50.431Z","2026-04-27T15:29:27.606Z",{"id":66,"name":133},{"id":42,"username":173,"nickname":174,"avatar":99,"gender":175},{"comments":112,"resources":112},[209],{"name":183,"slug":184,"color":185},{},{"id":212,"title":213,"slug":214,"cover":215,"summary":216,"content":217,"contentFormat":164,"views":218,"likes":112,"status":166,"reviewStatus":167,"reviewRemark":99,"reviewSubmittedAt":219,"reviewedAt":220,"isTop":145,"isRecommend":145,"isVipFree":145,"publishedAt":99,"createdAt":221,"authorId":42,"categoryId":60,"category":222,"author":223,"resourceCount":112,"_count":224,"tags":225,"meta":230},7,"Windows WSL 全流程安装与管理教程（详细版）","w-i-n-d-o-w-s-w-s-l-an-zhuang-yu-shi-yong-jiao-cheng","https:\u002F\u002Fmjblog.res.ziyowl.com\u002F2026\u002F04\u002F27\u002F1777304700742-egbj82f8.jpg","Windows Subsystem for Linux（WSL）为 Windows 用户提供了一个完整的 Linux 开发环境，无需虚拟机或双系统。本文从零开始，详细讲解 WSL 的安装与配置，包括如何安装 WSL 与 Linux 发行版、实现 Windows 与 Linux 之间的文件互通、安装 SSH 并进行远程管理，以及查询 WSL 的 IP 地址等实用技巧。通过掌握这些操作，你可以在 Windows 上高效管理 Linux 系统，轻松进行开发、运维与学习。","\u003Cp>Windows Subsystem for Linux（WSL）是 Windows 上的 Linux 子系统，允许你在 Windows 上运行完整 Linux 环境，无需虚拟机或双系统。本文将带你从零开始，详细讲解 WSL 的安装、Linux 系统安装、文件管理、SSH 远程管理及网络查询，帮助你高效使用 WSL。\u003C\u002Fp>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>1️⃣ 检查系统环境\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Windows 版本\u003C\u002Fstrong>：Windows 10 2004 或更高版本，推荐 Windows 11。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>开启虚拟化技术\u003C\u002Fstrong>：\u003Col>\n\u003Cli>打开 \u003Cstrong>任务管理器\u003C\u002Fstrong> → \u003Cstrong>性能\u003C\u002Fstrong> → \u003Cstrong>CPU\u003C\u002Fstrong> → 查看“虚拟化”是否已启用。\u003C\u002Fli>\n\u003Cli>若未启用，请在 BIOS\u002FUEFI 设置中开启 Intel VT-x 或 AMD-V。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>以管理员身份运行 PowerShell\u003C\u002Fstrong>：确保后续命令可成功执行。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>2️⃣ 安装 WSL\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Ch3>\u003Cstrong>2.1 使用命令安装 WSL\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Col>\n\u003Cli>打开 PowerShell（管理员权限）：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --install\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>默认会安装 \u003Cstrong>WSL2\u003C\u002Fstrong> 和最新的 Ubuntu 系统。\u003C\u002Fli>\n\u003Cli>如果提示已安装 WSL，可以跳过此步骤。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>查看已安装 WSL 版本：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl -l -v\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>示例输出：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>  NAME      STATE           VERSION\n* Ubuntu    Running         2\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>\u003Cstrong>VERSION 2\u003C\u002Fstrong> 表示当前为 WSL2。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Cstrong>2.2 设置默认 WSL 版本为 2\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cp>如果默认安装的是 WSL1，可手动设置为 WSL2：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --set-version Ubuntu 2\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>设置默认 WSL 版本（新安装的 Linux 自动使用 WSL2）：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --set-default-version 2\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>3️⃣ 安装其他 Linux 发行版\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cp>WSL 支持多个 Linux 发行版，如 Debian、Kali、openSUSE 等。\u003C\u002Fp>\n\u003Col>\n\u003Cli>查看可用发行版：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --list --online\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>输出示例：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>NAME\nUbuntu-20.04\nDebian\nKali-Linux\nopenSUSE-42\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Col>\n\u003Cli>安装指定发行版：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --install -d Debian\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Col>\n\u003Cli>设置默认发行版：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --set-default Debian\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Col>\n\u003Cli>启动发行版：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl -d Debian\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>首次启动会提示创建 \u003Cstrong>Linux 用户名和密码\u003C\u002Fstrong>。\u003C\u002Fli>\n\u003Cli>完成后，你就进入了完整的 Linux 命令行环境。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>4️⃣ 更新 Linux 系统与安装常用工具\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cp>进入 WSL 后，建议先更新系统和安装一些常用工具：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 更新软件包列表\nsudo apt update\n\n# 更新系统\nsudo apt upgrade -y\n\n# 安装常用工具\nsudo apt install -y build-essential curl wget unzip htop vim nano net-tools\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>\u003Ccode>build-essential\u003C\u002Fcode>：编译工具集\u003C\u002Fli>\n\u003Cli>\u003Ccode>curl\u003C\u002Fcode>、\u003Ccode>wget\u003C\u002Fcode>：网络下载工具\u003C\u002Fli>\n\u003Cli>\u003Ccode>htop\u003C\u002Fcode>：系统资源监控\u003C\u002Fli>\n\u003Cli>\u003Ccode>vim\u003C\u002Fcode>、\u003Ccode>nano\u003C\u002Fcode>：文本编辑器\u003C\u002Fli>\n\u003Cli>\u003Ccode>net-tools\u003C\u002Fcode>：包含 ifconfig、netstat 等网络工具\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>5️⃣ Windows 与 Linux 文件互通\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cp>WSL 可以直接访问 Windows 文件，同时 Windows 也可以访问 Linux 文件。\u003C\u002Fp>\n\u003Ch3>\u003Cstrong>5.1 在 Linux 中访问 Windows 文件\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cp>Windows 驱动器在 WSL 中挂载在 \u003Ccode>\u002Fmnt\u003C\u002Fcode> 下：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 访问 C 盘\ncd \u002Fmnt\u002Fc\n\n# 查看文件\nls\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>\u003Cstrong>5.2 在 Windows 中访问 Linux 文件\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Col>\n\u003Cli>打开文件资源管理器。\u003C\u002Fli>\n\u003Cli>在地址栏输入：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode>\\\\wsl$\\Ubuntu\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>其中 \u003Ccode>Ubuntu\u003C\u002Fcode> 是你的发行版名称。\u003C\u002Fli>\n\u003Cli>可以直接浏览 Linux 文件系统，进行复制、编辑操作。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Cstrong>5.3 使用 VSCode 编辑 Linux 文件\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 在 WSL 中安装 VSCode Remote 扩展\ncode .\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>直接打开 WSL 目录进行开发，避免文件同步问题。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>6️⃣ 安装 SSH 服务\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cp>SSH 可以让你通过 Windows 或其他电脑远程管理 WSL。\u003C\u002Fp>\n\u003Ch3>\u003Cstrong>6.1 安装 OpenSSH\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">sudo apt install -y openssh-server\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>\u003Cstrong>6.2 启动 SSH 服务\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">sudo service ssh start\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>\u003Cstrong>6.3 设置开机自启\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">sudo systemctl enable ssh\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>\u003Cstrong>6.4 配置防火墙（可选）\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\">sudo ufw allow ssh\nsudo ufw enable\nsudo ufw status\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>7️⃣ 查询 WSL IP 地址\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cp>有时需要通过 SSH 或其他工具访问 WSL。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 查看网络配置\nip addr show\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>WSL2 默认使用虚拟网络，Windows 和 WSL 虽在同一台机器，但 IP 是虚拟的。\u003C\u002Fli>\n\u003Cli>获取 WSL2 IP 示例：\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-bash\">hostname -I\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>在 Windows 中 ping WSL：\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-powershell\">ping &lt;WSL_IP&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>建议将 WSL IP 配合 Windows hosts 文件或者通过 SSH 配置端口转发访问。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>8️⃣ 使用 SSH 管理 WSL\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Col>\n\u003Cli>在 Windows 安装 OpenSSH 客户端（可选 Windows 10\u002F11 默认包含）。\u003C\u002Fli>\n\u003Cli>使用命令连接 WSL：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">ssh username@&lt;WSL_IP&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>输入你在 Linux 创建的用户名和密码。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>远程执行命令：\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode class=\"language-powershell\">ssh username@&lt;WSL_IP&gt; &#39;ls -la \u002Fhome\u002Fusername&#39;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>9️⃣ WSL 常用命令汇总\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>命令\u003C\u002Fth>\n\u003Cth>功能\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>wsl -l -v\u003C\u002Ftd>\n\u003Ctd>查看已安装发行版及版本\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>wsl -d \u003C\u002Ftd>\n\u003Ctd>启动指定发行版\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>wsl --set-version  2\u003C\u002Ftd>\n\u003Ctd>设置 WSL2\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>wsl --shutdown\u003C\u002Ftd>\n\u003Ctd>关闭所有 WSL2 实例\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>explorer.exe .\u003C\u002Ftd>\n\u003Ctd>打开当前 WSL 目录到 Windows\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>sudo service start\u002Fstop\u002Frestart ssh\u003C\u002Ftd>\n\u003Ctd>管理 SSH 服务\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Chr \u002F>\n\u003Ch2>\u003Cstrong>🔟 开发与使用建议\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>开发文件\u003C\u002Fstrong>：建议在 Windows 上编辑，WSL 上运行。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>文件路径\u003C\u002Fstrong>：避免在 WSL 内直接编辑 \u003Ccode>\u002Fmnt\u002Fc\u002F...\u003C\u002Fcode> 下大文件，以提高性能。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>端口访问\u003C\u002Fstrong>：WSL2 虚拟网络和 Windows 通信通过 localhost 或 WSL IP。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>备份\u003C\u002Fstrong>：WSL 文件可通过 \u003Ccode>tar\u003C\u002Fcode> 或导出功能：\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-powershell\">wsl --export Ubuntu ubuntu_backup.tar\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr \u002F>\n\u003Ch2>✅ 总结\u003C\u002Fh2>\n\u003Cp>本文详细介绍了 WSL 的安装、Linux 系统安装、Windows 与 Linux 文件互通、SSH 管理以及 IP 查询方法。通过掌握这些基础，你可以轻松在 Windows 上运行完整 Linux 环境，进行开发、测试及远程管理，充分发挥 WSL 的便利与高效。\u003C\u002Fp>\n",20,"2026-04-27T16:07:44.128Z","2026-04-27T16:08:02.593Z","2026-04-27T11:49:24.868Z",{"id":60,"name":125},{"id":42,"username":173,"nickname":174,"avatar":99,"gender":175},{"comments":112,"resources":112},[226],{"name":227,"slug":228,"color":229},"WSL","w-s-l","#6366f1",{},{"total":55,"published":55,"draft":112,"totalViews":232},215,12]