{
  "version": "https://jsonfeed.org/version/1", 
  "title": "Vue.js", 
  "description": "The Progressive JavaScript Framework", 
  "home_page_url": "https://www.v2ex.com/go/vue", 
  "feed_url": "https://www.v2ex.com/feed/vue.json", 
  "icon": "https://cdn.v2ex.com/navatar/7504/adad/881_large.png?m=1650095191", 
  "favicon": "https://cdn.v2ex.com/navatar/7504/adad/881_normal.png?m=1650095191", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/Whbbit1999", 
        "name": "Whbbit1999", 
        "avatar": "https://cdn.v2ex.com/avatar/6671/a5d2/634904_large.png?m=1744617567"
      }, 
      "url": "https://www.v2ex.com/t/1199178", 
      "title": "shadcn-vue-admin \u5df2\u5347\u7ea7\u81f3 vite8", 
      "id": "https://www.v2ex.com/t/1199178", 
      "date_published": "2026-03-18T05:12:26+00:00", 
      "content_html": "<p>\u6211\u628a <strong>shadcn-vue-admin</strong> \u5347\u7ea7\u5230\u4e86 <strong>Vite 8</strong></p>\n<p>\u6784\u5efa\u901f\u5ea6\u5feb\u4e86\u5f88\u591a\uff0c\u6a21\u677f\u7684\u517c\u5bb9\u6027\u76ee\u524d\u770b\u4e0b\u6765\u4e5f\u6ca1\u6709\u4ec0\u4e48\u95ee\u9898\u3002</p>\n<p>shadcn-vue-admin \u6280\u672f\u6808:</p>\n<ul>\n<li>Vue 3</li>\n<li>TypeScript</li>\n<li>shadcn-vue</li>\n<li>Vite 8</li>\n<li>pinia</li>\n</ul>\n<p><a href=\"https://github.com/Whbbit1999/shadcn-vue-admin\" rel=\"nofollow\">\u4ed3\u5e93</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jsiwa", 
        "name": "jsiwa", 
        "avatar": "https://cdn.v2ex.com/avatar/7436/38f3/147448_large.png?m=1772074003"
      }, 
      "url": "https://www.v2ex.com/t/1189625", 
      "title": "\u6211\u771f\u7684\u8981\u653e\u5f03 Vue\uff0c\u6539\u7528 React \u4e86", 
      "id": "https://www.v2ex.com/t/1189625", 
      "date_published": "2026-01-30T11:40:31+00:00", 
      "content_html": "<p>\u56e0\u4e3a AI \u5df2\u7ecf\u5f7b\u5e95\u6539\u53d8\u4e86\u6211\u5199\u4ee3\u7801\u3001\u505a\u4ea7\u54c1\u7684\u65b9\u5f0f\u3002</p>\n<p>\u4e3e\u4e2a\u6700\u8fd1\u975e\u5e38\u771f\u5b9e\u7684\u4f8b\u5b50\uff1a\n\u6211\u7528 AI <strong>\u4ece\u6536\u96c6\u8d44\u6599\u3001\u4e70\u57df\u540d\u3001\u5199\u4ee3\u7801\uff0c\u5230\u4e0a\u7ebf\u4e00\u4e2a\u53ef\u8bbf\u95ee\u7684\u7f51\u7ad9\uff0c\u5168\u7a0b\u4e0d\u5230 1 \u4e2a\u5c0f\u65f6</strong>\u3002 <a href=\"https://openclawai.net/\" rel=\"nofollow\">https://openclawai.net/</a></p>\n<p>\u8fd9\u4e2a\u901f\u5ea6\uff0c\u8bf4\u5b9e\u8bdd\uff0c\u7528 Vue \u662f\u51e0\u4e4e\u505a\u4e0d\u5230\u7684\uff0c\u800c\u4e14\u6211\u66f4\u52a0\u719f\u6089 vue \u3002</p>\n<p>\u4e0d\u662f Vue \u4e0d\u597d\uff0c\u800c\u662f\uff1a\u5404\u4e2a\u5e73\u53f0\u9ed8\u8ba4\u8f93\u51fa\u7684\u5c31\u662f react \uff0c\u5982\u679c\u8fc1\u79fb\u5230 vue \u9700\u8981\u5f88\u591a\u989d\u5916\u7684 token</p>\n<p>\u800c\u7528 AI \u5199 React\uff1a</p>\n<ul>\n<li>JSX + \u51fd\u6570\u7ec4\u4ef6\uff0cAI \u547d\u4e2d\u7387\u975e\u5e38\u9ad8</li>\n<li>\u4e00\u6b21\u751f\u6210\u53ef\u8fd0\u884c\u7684\u6982\u7387\u660e\u663e\u66f4\u5927</li>\n<li>\u91cd\u6784\u3001\u62c6\u7ec4\u4ef6\u3001\u8865\u903b\u8f91\u51e0\u4e4e\u662f\u201c\u6307\u54ea\u6253\u54ea\u201d</li>\n</ul>\n<p>\u66f4\u5173\u952e\u7684\u4e00\u70b9\u662f\uff1a\n<strong>\u6211\u5bf9 React \u5176\u5b9e\u5e76\u4e0d\u7b97\u719f\u3002</strong></p>\n<p>\u4f46\u8fd9\u4ef6\u4e8b\u5df2\u7ecf\u4e0d\u518d\u91cd\u8981\u4e86\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhengfan2016", 
        "name": "zhengfan2016", 
        "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1179892", 
      "date_modified": "2025-12-19T00:28:43+00:00", 
      "content_html": "<p>\u5982\u9898\uff0c\u95ee\u4e86 gemini \uff0c\u53d1\u73b0\u7b54\u6848\u80e1\u626f\u7684\uff0cgemini \u8bf4\u5199 onclick \u4e0d\u4f1a\u89e6\u53d1 vue \u54cd\u5e94\u5f0f\uff08 ref \u5143\u7d20\u4fee\u6539\uff09\uff0c\u4f46\u662f\u6211\u5b9e\u6d4b\u5728 div \u4e0a\u5199:onclick \u786e\u5b9e\u80fd\u89e6\u53d1\u54cd\u5e94\u5f0f\u4fee\u6539,\u6240\u4ee5\u6211\u6709\u70b9\u7eb3\u95f7\uff0c\u8fd9\u4e24\u79cd\u5199\u6cd5\u5230\u5e95\u6709\u4ec0\u4e48\u533a\u522b</p>\n", 
      "date_published": "2025-12-19T00:28:14+00:00", 
      "title": "\u8bf7\u95ee vue3 \u7684 onclick \u548c @click \u6709\u4ec0\u4e48\u533a\u522b", 
      "id": "https://www.v2ex.com/t/1179892"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/unt", 
        "name": "unt", 
        "avatar": "https://cdn.v2ex.com/avatar/791c/37c0/562494_large.png?m=1756623194"
      }, 
      "url": "https://www.v2ex.com/t/1179169", 
      "date_modified": "2025-12-16T05:28:58+00:00", 
      "content_html": "\u8bf7\u95ee\u6709\u4ec0\u4e48\u7f8e\u89c2+\u529f\u80fd\u5168\u7684 vue AI chat \u7ec4\u4ef6", 
      "date_published": "2025-12-16T02:45:49+00:00", 
      "title": "\u6c42\u63a8\u8350\u7f8e\u89c2\u3001\u529f\u80fd\u5168\u7684 vue AI chat \u7ec4\u4ef6", 
      "id": "https://www.v2ex.com/t/1179169"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zedcoding", 
        "name": "zedcoding", 
        "avatar": "https://cdn.v2ex.com/avatar/9df2/ed52/473975_large.png?m=1593411274"
      }, 
      "url": "https://www.v2ex.com/t/1175912", 
      "date_modified": "2025-11-30T03:16:39+00:00", 
      "content_html": "<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/L5Ro2Tz.jpeg\"/>\n\u56fe 1 \u662f\u9886\u5bfc\u60f3\u8981\u7684\u6548\u679c \u6765\u81ea\u4ed6\u5bb6 <a href=\"https://cms-docs.shengyc.com/cms/tutorial/\" rel=\"nofollow\">https://cms-docs.shengyc.com/cms/tutorial/</a></p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/UDwoIN5.png\"/>\n\u56fe 2 \u662f\u81ea\u5df1\u627e\u5230\u7684\u5f00\u6e90 goView <a href=\"https://gitee.com/dromara/go-view\" rel=\"nofollow\">https://gitee.com/dromara/go-view</a></p>\n<p>\u60f3\u95ee\u95ee\u5927\u5bb6\u6709\u6ca1\u6709\u597d\u7684\u5e95\u5b50\u53ef\u4ee5\u4e8c\u5f00\u7684   \u4ece\u96f6\u642d\u5efa\u6709\u70b9\u56f0\u96be\u545c\u545c\u545c~</p>\n", 
      "date_published": "2025-11-30T02:52:18+00:00", 
      "title": "[\u6c42\u52a9\u8d34] \u6709\u6ca1\u6709\u63a8\u8350\u7684 vue3 \u9875\u9762\u8bbe\u8ba1\u5668 \u5927\u5c4f\u8bbe\u8ba1\u5668\uff08\u6e90\u7801\u53ef\u4ee5\u62ff\u6765\u4e8c\u5f00\u7684 \u5f00\u6e90 or \u6536\u8d39\uff09", 
      "id": "https://www.v2ex.com/t/1175912"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/seakingii", 
        "name": "seakingii", 
        "avatar": "https://cdn.v2ex.com/gravatar/576c9d4f1082ef624e59637e2030cd2b?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1174548", 
      "title": "\u6709\u6ca1\u6709\u5927\u4f6c\u5728\u6b63\u5f0f\u9879\u76ee\u91cc\u4f7f\u7528 rolldown \u4e86", 
      "id": "https://www.v2ex.com/t/1174548", 
      "date_published": "2025-11-23T14:17:15+00:00", 
      "content_html": "<p>\u6709\u6ca1\u6709\u5927\u4f6c\u5728\u6b63\u5f0f\u9879\u76ee\u91cc\u4f7f\u7528 rolldown \u4e86? \u524d\u51e0\u5929\u5c1d\u8bd5\u5728\u5df2\u6709\u7684\u9879\u76ee\u4e0a\u5207\u6362\u4e3a rolldown ,\u7acb\u9a6c\u62a5\u4e00\u5806\u7684\u9519\u8bef...</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/mizuhashi", 
        "name": "mizuhashi", 
        "avatar": "https://cdn.v2ex.com/avatar/8854/0e78/157347_large.png?m=1774621158"
      }, 
      "url": "https://www.v2ex.com/t/1172678", 
      "date_modified": "2025-11-13T22:37:58+00:00", 
      "content_html": "<p>\u6211\u4e0d\u78ba\u5b9a\u9019\u662f\u5426\u662f\u666e\u904d\u7684\u7528\u6cd5\uff0c\u4f46\u6211\u767c\u73fe <code>reactive</code> \u975e\u5e38\u9069\u5408\u7528\u4f86\u5efa\u7acb\u985e\u4f3c OO \u7684\u5c01\u88dd\u3002</p>\n<p><code>reactive</code>\u6703\u628a refs \u5c55\u5e73\uff0c\u6240\u4ee5\u53ef\u4ee5\u9019\u9ebc\u5beb\uff1a</p>\n<pre><code class=\"language-typescript\">function useClient() {\n  const name = ref('Alice')\n  const greeting = computed(() =&gt; `Hello ${name.value}`)\n\n  function updateName(newName: string) {\n    name.value = newName\n  }\n\n  return reactive({\n    name,\n    greeting,\n    updateName\n  })\n}\n</code></pre>\n<p>\u5728 component \u88cf\uff1a</p>\n<pre><code class=\"language-typescript\">const client = useClient()\nclient.greeting // =&gt; 'Hello Alice'\n\nclient.updateName('Bob')\nclient.greeting // =&gt; 'Hello Bob'\n</code></pre>\n<p>\u73fe\u5728<code>client</code>\u7ba1\u7406\u5b83\u81ea\u5df1\u7684\u72c0\u614b\uff0c\u5176\u66b4\u9732\u7684\u63a5\u53e3\u53ef\u4ee5\u76f4\u63a5\u7528\u5728\u6a21\u677f\u88cf\u3002</p>\n<p>\u6211\u5011\u4e5f\u53ef\u4ee5\u7d44\u5408\u9019\u4e9b\u5c0d\u8c61\u548c\u4fdd\u7559\u56ae\u61c9\u6027\uff1a</p>\n<pre><code class=\"language-typescript\">function useOrder(client: ReturnType&lt;typeof useClient&gt;) {\n  const createdBy = computed(() =&gt; `Created by ${client.name}`)\n\n  // \u4f60\u4e5f\u53ef\u4ee5\u5728\u9019\u88cf\u8abf\u7528 client.updateName\n\n  return reactive({\n    createdBy\n  })\n}\n\nconst client = useClient()\nconst order = useOrder(client)\norder.createdBy // =&gt; 'Created by Alice'\nclient.updateName('Bob')\norder.createdBy // =&gt; 'Created by Bob'\n</code></pre>\n<p>\u6211\u89ba\u5f97\u9019\u662f vue \u76f8\u5c0d\u65bc\u5176\u4ed6\u5eab\u7279\u5225\u7684\u5c6c\u6027\uff0c\u6211\u53ea\u9700\u8981\u50b3\u905e\u4e00\u500b\u5c0d\u8c61\uff0c\u800c\u5b83\u64c1\u6709\u81ea\u5df1\u7684\u72c0\u614b\u548c\u65b9\u6cd5\u3002</p>\n<p>\u5728\u73fe\u5be6\u4e2d\uff0c\u9019\u4e9b\u5c0d\u8c61\u4e00\u822c\u6703\u57fa\u65bc\u5f8c\u7aef\u6578\u64da\uff0c\u6211\u5011\u53ef\u4ee5\u5728\u5f8c\u7aef\u6578\u64da\u7684\u57fa\u790e\u4e0a\u64f4\u5c55\u72c0\u614b\u548c\u65b9\u6cd5\u3002</p>\n<pre><code class=\"language-typescript\">async function useOrder(client: ReturnType&lt;typeof useClient&gt;) {\n  const orderData = reactive(await fetchOrderData())\n\n  const paid = ref(false)\n\n  async function pay() {\n    const res = await paymentAPI()\n    paid.value = res.success\n  }\n\n  return reactive({\n    ...toRefs(orderData), // \u6240\u6709 orderData \u7684\u5c6c\u6027\u6703\u88ab\u66b4\u9732\n    // \u6211\u5011\u9700\u8981 toRefs \u4f86\u4fdd\u6301\u56ae\u61c9\u6027\n    paid,\n    pay\n  })\n}\n</code></pre>\n<p>\u73fe\u5728\u7d66\u5b9a\u4e00\u500b order \uff0c\u6211\u5011\u53ef\u4ee5\u76f4\u63a5\u5728\u6a21\u677f\u88cf\u7d81\u5b9a<code>order.paid</code> \u548c<code>order.pay</code>\u3002</p>\n<p>\u672c\u5e16\u5728 reddit \u4e0a\u7684\u7248\u672c\uff1a <a href=\"https://www.reddit.com/r/vuejs/comments/1owezu4/reactive_as_an_object_encapsulation/\" rel=\"nofollow\">https://www.reddit.com/r/vuejs/comments/1owezu4/reactive_as_an_object_encapsulation/</a></p>\n", 
      "date_published": "2025-11-13T22:36:27+00:00", 
      "title": "\u7528 reactive \u4f86\u5be6\u73fe oo \u5c0d\u8c61\u7684\u5c01\u88dd", 
      "id": "https://www.v2ex.com/t/1172678"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/sikuu2al", 
        "name": "sikuu2al", 
        "avatar": "https://cdn.v2ex.com/avatar/5e91/67c1/670669_large.png?m=1762418516"
      }, 
      "url": "https://www.v2ex.com/t/1172271", 
      "date_modified": "2025-11-14T04:26:34+00:00", 
      "content_html": "<p>\u7a81\u7136\u53d1\u73b0\u597d\u50cf\u4ec0\u4e48\u9879\u76ee\u5199\u53d8\u91cf\u90fd\u662f ref \u4e00\u628a\u68ad\u4e86\uff0c\u6ca1\u6709\u4e13\u95e8\u7528\u8fc7\u8fd9\u4e2a reactive \u3002op \u8bb0\u5f97\u521a\u5b66\u7684\u65f6\u5019\u8fd8\u662f\u975e\u5e38\u4ed4\u7ec6\u7684\u533a\u5206\u53d8\u91cf\u7c7b\u578b\u7684\uff0c\u662f\u5bf9\u8c61\u5c31\u7528 reactive \u3002</p>\n", 
      "date_published": "2025-11-12T06:07:16+00:00", 
      "title": "Vue \u7684 reactive \u4f1a\u6709\u4eba\u4e13\u95e8\u7528\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/1172271"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/sunmoon1983", 
        "name": "sunmoon1983", 
        "avatar": "https://cdn.v2ex.com/avatar/912f/cff7/254536_large.png?m=1764747738"
      }, 
      "url": "https://www.v2ex.com/t/1171416", 
      "date_modified": "2025-11-08T11:38:11+00:00", 
      "content_html": "<p>\u60f3\u8981\u96c6\u6210\u4e00\u4e2a\u529f\u80fd\u5f3a\u4e00\u70b9\u7684 excel \u8fdb\u6765\uff0c\u5b9e\u73b0\u7f16\u8f91\u4fee\u6539\u5220\u9664\u7b49\uff0cgemini \u7ed9\u7684\u65b9\u6848\u662f<code>LuckySheet</code>,\u5927\u8001\u4eec\u8fd8\u6709\u5176\u5b83\u65b9\u6848\u5417\uff1f</p>\n", 
      "date_published": "2025-11-08T10:26:49+00:00", 
      "title": "\u5927\u4f6c\u4eec\uff0c\u60f3\u5728 vue \u4e2d\u96c6\u6210\u4e00\u4e2a excel,\u6709\u4ec0\u4e48\u65b9\u6848\uff1f", 
      "id": "https://www.v2ex.com/t/1171416"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/leokun", 
        "name": "leokun", 
        "avatar": "https://cdn.v2ex.com/avatar/12ab/702a/625066_large.png?m=1769752032"
      }, 
      "url": "https://www.v2ex.com/t/1169815", 
      "date_modified": "2025-10-31T16:25:22+00:00", 
      "content_html": "\u533f\u540d\u7ec4\u4ef6\u4e0d\u7528\u521b\u5efa\u5e26 name \u7684 wrapper \u4e86<br />\u4e0e\u539f\u7ec4\u4ef6 100% \u4e00\u81f4\uff0c\u53ea\u662f\u66b4\u9732\u4e86\u5185\u90e8\u7684\u51fd\u6570 <a target=\"_blank\" href=\"https://github.com/vuejs/core/compare/main...leookun:core:v3.5.22#diff-28ccce6931cf4b4364f58400b93e2ae8efe180a82f885444bb5704574025a4d0\" rel=\"nofollow noopener\">https://github.com/vuejs/core/compare/main...leookun:core:v3.5.22#diff-28ccce6931cf4b4364f58400b93e2ae8efe180a82f885444bb5704574025a4d0</a><br /><br />\u5305 <a target=\"_blank\" href=\"https://www.npmjs.com/package/vue3-keep-alive\" rel=\"nofollow noopener\">https://www.npmjs.com/package/vue3-keep-alive</a><br />\u6e90\u7801 <a target=\"_blank\" href=\"https://github.com/leookun/core/tree/v3.5.22/packages/vue3-keep-alive\" rel=\"nofollow noopener\">https://github.com/leookun/core/tree/v3.5.22/packages/vue3-keep-alive</a>", 
      "date_published": "2025-10-31T16:21:59+00:00", 
      "title": "vue3 \u65e0\u6cd5\u624b\u52a8\u63a7\u5236 keepalive \u7684\u7f13\u5b58\uff5c fork \u4e86\u72ec\u7acb\u7684 keep-alive \u7ec4\u4ef6\uff5c\u652f\u6301\u624b\u52a8\u5220\u9664\u7f13\u5b58\u6216\u8005\u6dfb\u52a0\u7f13\u5b58", 
      "id": "https://www.v2ex.com/t/1169815"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/cokyhe", 
        "name": "cokyhe", 
        "avatar": "https://cdn.v2ex.com/gravatar/6d12c606f4ec41400c00a0e946d1bd87?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1162167", 
      "title": "WebStorm \u5199 \u4e2a v-for\uff0c cpu \u5c31\u72c2\u98d9", 
      "id": "https://www.v2ex.com/t/1162167", 
      "date_published": "2025-09-27T02:33:28+00:00", 
      "content_html": "<p>\u673a\u5668 MacStudio,WebStorm \u5347\u5230\u6700\u65b0 2025.2.2 \u7248\u672c\u540e\uff0c\u51e0\u4e4e\u4e0d\u8f6c\u7684\u98ce\u6247\u547c\u547c\u76f4\u54cd\uff0c\u53d1\u73b0 cpu \u5feb 100%\u4e86</p>\n<p>\u6392\u67e5\u4e00\u756a\u53d1\u73b0\u8fd9\u6837\u7684\u4ee3\u7801\u5c31\u80fd cpu \u5e72\u4e00\u534a\uff0c\u91cc\u9762\u518d\u5d4c\u5957\u4e00\u4e2a v-for \uff0ccpu \u5c31\u5360\u516b\u4e5d\u5341\u4e86\uff1a</p>\n<pre><code>&lt;li v-for=\"menu in menus\" :key=\"menu.key\"&gt;\n\n&lt;/li&gt;\n</code></pre>\n<p>\u4e4b\u524d\u4e00\u76f4\u4ee5\u4e3a\u662f ai \u63d2\u4ef6\u7684\u9505\uff0c\u5c4f\u853d\u6389\u6240\u6709 ai \u63d2\u4ef6\u540e\uff0c\u60c5\u51b5\u4f9d\u7136\u5982\u6b64\uff0c\u628a v-for \u76f8\u5173\u4ee3\u7801\u6ce8\u91ca\u6389\u4ee5\u540e\u5c31\u597d\u4e86\n\u8fd9\u662f\u4e2a\u5565\u60c5\u51b5\u554a</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/w3", 
        "name": "w3", 
        "avatar": "https://cdn.v2ex.com/avatar/33cb/b8b1/195688_large.png?m=1741592455"
      }, 
      "url": "https://www.v2ex.com/t/1161521", 
      "title": "Nuxt UI 4 \u53ef\u4ee5\u514d\u8d39\u7528 Pro \u4e86", 
      "id": "https://www.v2ex.com/t/1161521", 
      "date_published": "2025-09-24T06:31:22+00:00", 
      "content_html": "<blockquote>\n<p>With this release, we are unifying Nuxt UI and Nuxt UI Pro into a single, powerful, and completely free open-source library</p>\n</blockquote>\n<p>Blog: <a href=\"https://nuxt.com/blog/nuxt-ui-v4\" rel=\"nofollow\">https://nuxt.com/blog/nuxt-ui-v4</a></p>\n<p>Nuxt UI: <a href=\"https://ui.nuxt.com/\" rel=\"nofollow\">https://ui.nuxt.com/</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/coolair", 
        "name": "coolair", 
        "avatar": "https://cdn.v2ex.com/avatar/c4fe/52ac/36118_large.png?m=1691894552"
      }, 
      "url": "https://www.v2ex.com/t/1158324", 
      "date_modified": "2025-09-11T06:49:02+00:00", 
      "content_html": "\u53ea\u627e\u5230\u4e86 <a target=\"_blank\" href=\"https://github.com/dream2023/ele-table-editor\" rel=\"nofollow noopener\">https://github.com/dream2023/ele-table-editor</a> \u8fd9\u4e2a\uff0c\u505c\u6b62\u7ef4\u62a4\u5f88\u957f\u65f6\u95f4\u4e86\uff0c\u4e3b\u8981\u662f\u8ddf el-form \u96c6\u6210\u8d77\u6765\u6709\u5f88\u591a\u95ee\u9898\uff0c\u8fd8\u6709\u6ca1\u6709\u5176\u4ed6\u7684\u73b0\u6210\u53ef\u7528\u7684\uff1f", 
      "date_published": "2025-09-10T07:31:55+00:00", 
      "title": "Vue2 \u9664\u4e86 ele-table-editor\uff0c\u8fd8\u6709\u6ca1\u6709\u5176\u4ed6\u201c\u5b50\u8868\u5355\uff08inline-formset\uff09\u201d\u7684\u7ec4\u4ef6\uff1f", 
      "id": "https://www.v2ex.com/t/1158324"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/waiaan", 
        "name": "waiaan", 
        "avatar": "https://cdn.v2ex.com/avatar/a703/deb0/206370_large.png?m=1655257935"
      }, 
      "url": "https://www.v2ex.com/t/1155847", 
      "title": "\u8bf7\u95ee vue \u7684 defineEmits \u7c7b\u578b\u5982\u4f55\u4f7f\u7528\u52a8\u6001\u952e\u540d", 
      "id": "https://www.v2ex.com/t/1155847", 
      "date_published": "2025-08-29T09:46:56+00:00", 
      "content_html": "<pre><code class=\"language-js\">enum BaseEvent {\n  CLICK = 'click'\n}\n\ninterface CustomEvent{\n  [BaseEvent.CLICK]:string\n}\n\ndefineEmits&lt;EmitEvents&gt;()\n\n</code></pre>\n<p>\u4e0a\u9762\u8fd9\u79cd\u5199\u6cd5 @<a href=\"/member/vue\">vue</a>/compiler-sfc \u4f1a\u62a5 Unsupported computed key in type referenced by a macro \uff0c\u5e94\u8be5\u600e\u4e48\u5199\u624d\u5bf9\uff1f\u8c22\u8c22\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/andyshz", 
        "name": "andyshz", 
        "avatar": "https://cdn.v2ex.com/gravatar/e06c86479b867dd2e0930e4a9a5a5304?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1149136", 
      "date_modified": "2025-07-31T22:11:47+00:00", 
      "content_html": "<p>\u8bf7\u95ee VUE \u4f6c\u4eec\u5728\u5f00\u53d1\u5927\u8868\u5355\u7684\u65f6\u5019\u600e\u4e48\u8bbe\u8ba1\u7ed1\u5b9a\u5bf9\u8c61\u7684\uff1f\u76f4\u63a5\u5728 data \u4e2d\u58f0\u660e\u6240\u6709\u8868\u5355\u9879\u6765\u7ed1\u5b9a\u5417\uff1f\u90a3\u5c82\u4e0d\u662f\u4f1a\u6709\u5f88\u591a\u5197\u4f59\u4ee3\u7801\uff1f\u800c\u4e14\u5982\u679c\u591a\u4e2a\u7ec4\u4ef6\u90fd\u4f7f\u7528\u8fd9\u4e2a\u5bf9\u8c61\uff0c\u5bf9\u8c61\u5728\u4f20\u9012\u7684\u65f6\u5019\u662f\u4e0d\u662f\u6bcf\u4e2a\u7ec4\u4ef6\u4e2d\u53c8\u9700\u8981\u58f0\u660e\u4e00\u6b21\uff1f\n\u521a\u4ece\u540e\u7aef\u5b66\u4e60\u524d\u7aef\uff0c\u5e0c\u671b\u80fd\u6709\u5927\u54e5\u6307\u70b9\u6307\u70b9\uff0c\u6309\u7167\u540e\u7aef\u7684\u903b\u8f91\uff0c\u8fd9\u4e2a\u8868\u5355\u4e0d\u662f\u5e94\u8be5\u8bbe\u8ba1\u4e3a\u4e00\u4e2a\u5bf9\u8c61\uff0c\u6bcf\u4e2a\u7ec4\u4ef6\u76f4\u63a5\u590d\u7528\u5bf9\u8c61\u5373\u53ef\uff0c\u4f20\u9012\u4e5f\u4f20\u9012\u5bf9\u8c61\uff0c\u4f46\u662f\u73b0\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u4e0d\u5c11\u95ee\u9898\uff0c\u641c\u4e86\u4e4b\u540e\u597d\u50cf\u8bf4\u4e0d\u80fd\u7ed1\u5b9a js \u7684\u7c7b\u5bf9\u8c61\u3002\u3002\u3002\u3002\u3002\u3002</p>\n", 
      "date_published": "2025-07-31T14:43:39+00:00", 
      "title": "VUE \u5f00\u53d1\u6c42\u52a9", 
      "id": "https://www.v2ex.com/t/1149136"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/AokiNet", 
        "name": "AokiNet", 
        "avatar": "https://cdn.v2ex.com/avatar/e295/4a06/607439_large.png?m=1762313703"
      }, 
      "url": "https://www.v2ex.com/t/1148661", 
      "date_modified": "2025-07-30T05:00:17+00:00", 
      "content_html": "<p>\u63a5/t/1148645 \u7684 22 \u697c\u8bc4\u8bba\n\u201c\u8fd9\u4e2a\u6211 tm \u592a\u6709\u53d1\u8a00\u6743\u4e86\uff0c7 \u6708\u4e2d\u65ec\u63a5\u5230\u7684\u4e00\u4e2a vue3 \u7684\u4ee3\u7801\uff0c\u4e4b\u524d\u662f\u5916\u5305\u516c\u53f8\u505a\u7684\uff0c\u4e1a\u52a1\u903b\u8f91\u5c31\u662f\u505a\u95ee\u5377\u624b\u673a\u7684\uff0c\u6709\u5f88\u591a\u8868\u5355\uff0ctm \u7684\u72d7\u5916\u5305\u5d3d\u6240\u6709\u903b\u8f91\u5168\u90e8\u90fd\u662f\u76f4\u63a5\u901a\u8fc7\u4e0b\u6807\u6765\u5904\u7406\u8868\u5355\u9879\uff0c\u6211\u521a\u505a\u7684\u9700\u6c42\u78b0\u5de7\u5c31\u662f\u6539\u4e86\u5176\u4e2d\u4e00\u4e2a\u8868\u5355\u7ed3\u6784\uff0c\u6211\u9760\u8fd9\u4e2a\u4ee3\u7801\u7ed9\u6211\u770b\u7684\u5929\u5929\u5728\u5de5\u4f4d\u9a82\uff0c\u4f6c\u4f6c\u4eec\u8d76\u7d27\u4e5f\u5e2e\u6211\u9a82\u51e0\u53e5\u89e3\u89e3\u6c14\u201d</p>\n<ol>\n<li>\u5230\u5e95\u662f\u600e\u4e48\u60f3\u7684\u76f4\u63a5\u901a\u8fc7\u4e0b\u6807\u8bbf\u95ee\u8868\u5355\u9879\uff0c\u6839\u672c\u4e0d\u8003\u8651\u540e\u671f\u7ef4\u62a4\u5417?</li>\n<li>\u4e3a\u4ec0\u4e48\u4e0d\u8003\u8651\u505a\u6210\u914d\u7f6e\u9879\u81ea\u52a8\u9002\u914d\u6bcf\u4e2a\u8868\u5355\uff0c\u800c\u4e0d\u662f\u6bcf\u4e2a\u8868\u5355\u90fd\u5bf9\u5e94\u4e00\u4e2a\u9875\u9762\u6587\u4ef6\uff0c\u6bcf\u4e2a\u6587\u4ef6\u5197\u4f59\u5de8\u5927\u3002</li>\n<li>\u63a5\u53e3\u8c03\u7528\u4e3a\u4ec0\u4e48\u4e0d\u80fd\u505a\u5168\u5c40 api \uff0ctm \u590d\u5236\u51e0\u5341\u904d\u3002</li>\n<li>\u53d8\u91cf\u80fd\u4e0d\u80fd\u4e0d\u8981 abc 123 \u7684\u554a\u3002</li>\n<li>24 \u5e74\u7684\u9879\u76ee\uff0c\u90fd 24 \u5e74\u4e86\u4e3a\u4ec0\u4e48\u8fd8\u8981\u7528\u539f\u751f wx \u5f00\u53d1\u554a\u3002</li>\n</ol>\n<p>\u4e3b\u8981\u662f\u9488\u5bf9\u8fd9\u4e2a\u9879\u76ee\u4ee3\u7801\u8bc4\u4ef7\uff0c\u6ca1\u6709\u9488\u5bf9\u5916\u5305\u5d3d\u7684\u610f\u601d\u3002\n\u603b\u4e4b\u662f\u95f9\u9ebb\u4e86\uff0c\u770b\u7740\u5c31\u5934\u75bc</p>\n<p>\u9644\u90e8\u5206\u4ee3\u7801\u622a\u56fe\uff0c\u5f88\u591a\u5730\u65b9\u90fd\u5f88\u79bb\u8c31</p>\n", 
      "date_published": "2025-07-30T02:01:13+00:00", 
      "title": "\u5c4e\u4ee3\u7801\u9760\u6211\u81ea\u5df1\u9a82\u5df2\u7ecf\u4e0d\u89e3\u6c14\u4e86\uff0c\u4f6c\u4eec\u6765\u770b\u4e2a\u7b11\u8bdd", 
      "id": "https://www.v2ex.com/t/1148661"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/giserman001", 
        "name": "giserman001", 
        "avatar": "https://cdn.v2ex.com/avatar/d0cb/268c/690972_large.png?m=1727405336"
      }, 
      "url": "https://www.v2ex.com/t/1147719", 
      "title": "\u6211\u7684 mp4 \u64ad\u653e\u4e0d\u51fa\u6765\uff01", 
      "id": "https://www.v2ex.com/t/1147719", 
      "date_published": "2025-07-25T08:50:02+00:00", 
      "content_html": "\u516c\u53f8\u9879\u76ee\u7528\u5230\u7684\u89c6\u9891\u662f MP4(h265 \u7f16\u7801)\uff0c\u518d\u6709\u7684\u7535\u8111\u4e0a\u65e0\u6cd5\u64ad\u653e\uff0c\u6709\u7684\u7535\u8111\u53ef\u4ee5\u64ad\u653e\uff0c\u7ecf\u8fc7\u4e00\u756a\u641c\u7d22\u540e\u4e86\u89e3\u5230\uff0cMP4 \u7684 h265 \u7f16\u7801\u7684\u89c6\u9891\u6d41\u9700\u8981\u786c\u89e3\u7801\uff0c\u4f46\u662f\u4e00\u90e8\u5206\u8001\u673a\u5668\u7684\u786c\u4ef6\u4ed6\u662f\u4e0d\u652f\u6301\u786c\u89e3\u7801\uff0c\u8bf7\u95ee\u8fd9\u4e2a\u5982\u4f55\u7834\u5c40\uff1f\uff1f\uff1f\uff1f\uff1f"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ljlljl0", 
        "name": "ljlljl0", 
        "avatar": "https://cdn.v2ex.com/gravatar/b3582ce7e9ff1228649489efbd83d9f7?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1147424", 
      "date_modified": "2025-07-25T00:17:44+00:00", 
      "content_html": "\u76ee\u524d\u7528\u4e86 arugmentcode \u89e3\u8026\u5c31\u4f1a\u81ea\u5df1\u80e1\u4e71\u52a0\u529f\u80fd\uff0c\u8ba9\u8fc1\u79fb\u4ee3\u7801\u4e5f\u662f\u4e0d\u542c\u6307\u6325\uff0c\u5bfc\u81f4\u539f\u6765\u7684\u6548\u679c\u548c\u529f\u80fd\u5dee\u5f02\u5f88\u5927\u3002<br /><br />\u5927\u5bb6\u5bf9\u8fd9\u5757\u6709\u4ec0\u4e48\u597d\u7684\u5efa\u8bae\u5417\uff0ctrae \u611f\u89c9\u4e0d\u592a\u65b9\u5411\uff0c\u8ba9\u4ed6\u5199\u90fd\u4e0d\u4e00\u5b9a\u80fd\u5728\u4e00\u4e2a\u6587\u4ef6\u5199\u8fd9\u4e48\u591a\u3002", 
      "date_published": "2025-07-24T08:17:06+00:00", 
      "title": "\u6709\u4e00\u4e2a 8K \u884c\u7684 VUE \u4ee3\u7801\u6587\u4ef6\u7528\u4ec0\u4e48 AI \u53ef\u4ee5\u89e3\u8026", 
      "id": "https://www.v2ex.com/t/1147424"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/liuliancc", 
        "name": "liuliancc", 
        "avatar": "https://cdn.v2ex.com/avatar/d14a/43c7/522760_large.png?m=1748932441"
      }, 
      "url": "https://www.v2ex.com/t/1146719", 
      "date_modified": "2025-07-21T13:40:32+00:00", 
      "content_html": "<p>\u840c\u65b0\u5c0f\u767d\u8bf7\u6559\uff0c\u4e0d\u592a\u660e\u767d\u4e3a\u4ec0\u4e48\u4f7f\u7528 ref \u6570\u636e\u53ef\u4ee5\u53cc\u5411\u7ed1\u5b9a\uff0c\u4f7f\u7528 reactive \u6570\u636e\u65e0\u6cd5\u53cc\u5411\u7ed1\u5b9a\uff1f\u662f\u6211\u7528\u6cd5\u4e0d\u5bf9\u5417\uff1f<br/>\n\u5230\u5e95\u4ec0\u4e48\u65f6\u5019\u5e94\u8be5\u4f7f\u7528 ref \u4ec0\u4e48\u65f6\u5019\u5e94\u8be5\u4f7f\u7528 reactive \u5462\uff1f</p>\n<p><a href=\"https://play.vuejs.org/#eNp9U8Fu00AQ/ZXRXmJEsIVAHCInElQ9wAEqijj54tqTdMt6d2Wv3UCUOzeEOMAHIHFC8AP8De13MDubpNu09GLtzrx582b9ZiWeWpsOPYqJyLuqldZBh663s0LLxprWwQpanI/pU1ZODghrmLemgREVjXagA9PYTTzN/MVzUrrQWQaV0R3RuvcKD4yeywVMPWey4izMjXbH8gNO4OETjqzvFfr2miDBF+6X+Zo8CxOQdro4bKwqHdINILcwYbJpIVZRadQg3UbhPozscrQuxOzy4+fLb78ufn79++dLnvlHISqedXjQmBoV0UUUhYCMMHkW9RZj4Tqaxnc464ymh2b5haiIRypsX1knadpCTIAzPlcqZc5fcMy1PY638eoUq3e3xM+6pY8V4qjFDtsBC7HLubJdoAvpw+OXuKTzLklT9IrQdyRfY2dU7zUG2LNe1yQ7wrHa5+wEqRdvusOlQ91th/JCPXLN+EKQM/wT/m/0K7mP0sdcR3+XXnHrqn2ngir1gv6DI5rrrg1uGcN56arTPd8SUDts52WFcBy5bM9aum9OaFRNGuKKo9bYLmDZBm9L1RM6IuKSYGLL4CnUOJcauTTn7ywh08a0h410G9qE6Ea9rclEk6sWozEMN1rdm8BgZB11ROLZNWTSnL+bhgGkTFWqG7uVR8SzZAVpmrL+9EoE72eh+VWTiGUMicbzjSaYzsIgXkty6yRMvqtg1rWP1og2uIZjd211LQc+0FGVJ6hmYVUvvv+4+P0pz0JsA5Da9i7a20j5bvU3C0zoLFBfX+X1P0Ky0Q8=\" rel=\"nofollow\">https://play.vuejs.org/#eNp9U8Fu00AQ/ZXRXmJEsIVAHCInElQ9wAEqijj54tqTdMt6d2Wv3UCUOzeEOMAHIHFC8AP8De13MDubpNu09GLtzrx582b9ZiWeWpsOPYqJyLuqldZBh663s0LLxprWwQpanI/pU1ZODghrmLemgREVjXagA9PYTTzN/MVzUrrQWQaV0R3RuvcKD4yeywVMPWey4izMjXbH8gNO4OETjqzvFfr2miDBF+6X+Zo8CxOQdro4bKwqHdINILcwYbJpIVZRadQg3UbhPozscrQuxOzy4+fLb78ufn79++dLnvlHISqedXjQmBoV0UUUhYCMMHkW9RZj4Tqaxnc464ymh2b5haiIRypsX1knadpCTIAzPlcqZc5fcMy1PY638eoUq3e3xM+6pY8V4qjFDtsBC7HLubJdoAvpw+OXuKTzLklT9IrQdyRfY2dU7zUG2LNe1yQ7wrHa5+wEqRdvusOlQ91th/JCPXLN+EKQM/wT/m/0K7mP0sdcR3+XXnHrqn2ngir1gv6DI5rrrg1uGcN56arTPd8SUDts52WFcBy5bM9aum9OaFRNGuKKo9bYLmDZBm9L1RM6IuKSYGLL4CnUOJcauTTn7ywh08a0h410G9qE6Ea9rclEk6sWozEMN1rdm8BgZB11ROLZNWTSnL+bhgGkTFWqG7uVR8SzZAVpmrL+9EoE72eh+VWTiGUMicbzjSaYzsIgXkty6yRMvqtg1rWP1og2uIZjd211LQc+0FGVJ6hmYVUvvv+4+P0pz0JsA5Da9i7a20j5bvU3C0zoLFBfX+X1P0Ky0Q8=</a></p>\n<p>\u76f4\u63a5\u5c55\u793a\u4ee3\u7801\uff1a</p>\n<p>App.vue</p>\n<pre><code>&lt;script setup&gt;\nimport { ref, reactive } from 'vue'\nimport Comp from './Comp.vue'\n\n// const styleConfig = ref({\n//  fontSize: 16\n// })\nconst styleConfig = reactive({\n  fontSize: 16\n})\n&lt;/script&gt;\n\n&lt;template&gt;\n  &lt;p :style=\"{ fontSize: styleConfig.fontSize + 'px'}\"&gt;\u6211\u662f\u5b57\u4f53&lt;/p&gt;\n  &lt;Comp v-model=\"styleConfig\" /&gt;\n&lt;/template&gt;\n\n</code></pre>\n<p>Comp.vue</p>\n<pre><code>&lt;script setup lang=\"ts\"&gt;\nimport { reactive, watch } from 'vue'\n\ninterface StyleConfig {\n  fontSize: number\n}\n\ninterface Props {\n  modelValue: StyleConfig\n}\nconst props = defineProps&lt;Props&gt;()\n\ninterface Emits {\n  (e: 'update:modelValue', value: StyleConfig): void\n}\nconst emit = defineEmits&lt;Emits&gt;()\n\nconst localConfig = reactive&lt;StyleConfig&gt;({ ...props.modelValue })\n\nwatch(localConfig, (newConfig) =&gt; {\n  emit('update:modelValue', { ...newConfig })\n}, { deep: true })\n&lt;/script&gt;\n\n&lt;template&gt;\n  &lt;div&gt;\n    &lt;label&gt;\u5b57\u4f53\u5927\u5c0f&lt;/label&gt;\n    &lt;input v-model=\"localConfig.fontSize\" /&gt;\n  &lt;/div&gt;\n&lt;/template&gt;\n</code></pre>\n", 
      "date_published": "2025-07-21T13:12:33+00:00", 
      "title": "\u6c42\u52a9 Vue \u5927\u4f6c\uff0c\u4e3a\u4ec0\u4e48\u4f7f\u7528 reactive \u6570\u636e\u6ca1\u6709\u53cc\u5411\u7ed1\u5b9a\uff1f", 
      "id": "https://www.v2ex.com/t/1146719"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/boyzhang", 
        "name": "boyzhang", 
        "avatar": "https://cdn.v2ex.com/avatar/03a9/cf2f/654207_large.png?m=1742262719"
      }, 
      "url": "https://www.v2ex.com/t/1145111", 
      "title": "uniapp \u6c42\u52a9", 
      "id": "https://www.v2ex.com/t/1145111", 
      "date_published": "2025-07-14T09:03:04+00:00", 
      "content_html": "\u7528 Hbuildx \u521b\u5efa\u7684\u9879\u76ee(\u975e cli \u521b\u5efa\u7684\u9879\u76ee)\uff0c\u600e\u4e48\u4f7f\u7528\u539f\u5b50 css,\u6bd4\u5982 unocss"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yesterdaysun", 
        "name": "yesterdaysun", 
        "avatar": "https://cdn.v2ex.com/gravatar/6af580c654cfe6bbc9123e8e177c8468?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1143721", 
      "title": "Vue3 \u7f16\u5199\u7684\u6700\u4f73\u5b9e\u8df5\u662f\u600e\u6837\u7684?", 
      "id": "https://www.v2ex.com/t/1143721", 
      "date_published": "2025-07-08T05:34:05+00:00", 
      "content_html": "<p>\u6700\u8fd1\u521a\u7528\u4e0a Vue3, \u6211\u5728\u5199 Vue3 \u7684\u65f6\u5019\u603b\u611f\u89c9\u4ee3\u7801\u975e\u5e38\u7684\u6563, \u7a0d\u5fae\u590d\u6742\u7684\u9875\u9762\u91cc, \u5c31\u662f\u4e00\u5806\u7684 const ref, computed, \u66f4\u4e0d\u7528\u8bf4\u4e00\u5806\u7684 xxxLoading, xxxVisible, showXXX, hideXXX, \u611f\u89c9\u5199 Vue2 \u7684\u65f6\u5019\u4e5f\u6ca1\u8fd9\u4e48\u4e71\u8fc7, \u5982\u679c\u8bf4\u8981\u63d0\u53d6\u6240\u8c13 Composiable \u7ec4\u4ef6, \u611f\u89c9\u53c8\u662f\u4e00\u5806\u7684 useXXX, \u5bfc\u51fa\u4e00\u5806\u7684 xxx,xxx \u597d\u50cf\u4e5f\u6ca1\u597d\u5230\u54ea\u91cc\u53bb, \u662f\u6211\u5199\u7684\u59ff\u52bf\u4e0d\u5bf9\u5417? \u8fd9\u65b9\u9762\u7684\u6700\u4f73\u5b9e\u8df5\u5230\u5e95\u662f\u4ec0\u4e48, \u6709\u6ca1\u6709\u54ea\u4e2a\u5f00\u6e90\u9879\u76ee\u8ba9\u6211\u53c2\u8003\u53c2\u8003?</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jianing831", 
        "name": "jianing831", 
        "avatar": "https://cdn.v2ex.com/gravatar/9d3c6350ac2d5e6e93b654061fd91b0f?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1142366", 
      "title": "\u5f00\u53d1\u4e00\u6b3e\u8f7b\u4fbf\u7b80\u6d01\u7684\u8bba\u575b\u7a0b\u5e8f", 
      "id": "https://www.v2ex.com/t/1142366", 
      "date_published": "2025-07-01T16:31:39+00:00", 
      "content_html": "<p>\u540e\u7aef\u8bed\u8a00 NodeJs \u540e\u7aef\u6846\u67b6 ExpressJs \u6570\u636e\u5e93 MySql ui \u6846\u67b6 Vue\n\u57fa\u4e8e\u8fd9\u6837\u7684\u67b6\u6784\u5199 \u9700\u8981\u591a\u5c11\u6210\u672c \u80fd\u641e\u4e0b\u6765\n\u8981\u662f\u81ea\u5df1\u5f00\u53d1 \u9700\u8981\u4ece\u54ea\u5b66\u8d77</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/itchina110", 
        "name": "itchina110", 
        "avatar": "https://cdn.v2ex.com/avatar/2d5b/53f8/10411_large.png?m=1758701556"
      }, 
      "url": "https://www.v2ex.com/t/1141777", 
      "title": "VueConf 2025 \u6240\u6709\u6f14\u8bb2\u5609\u5bbe\u53ca\u65e5\u7a0b\u5df2\u786e\u5b9a\uff0c 7 \u6708 12 \u65e5\uff0c\u6df1\u5733\u89c1\uff01", 
      "id": "https://www.v2ex.com/t/1141777", 
      "date_published": "2025-06-29T08:28:26+00:00", 
      "content_html": "<p>VueConf 2025 \u5c06\u4e8e 7 \u6708 12 \u65e5\u5728\u6df1\u5733\u4e3e\u529e\u3002\u672c\u6b21\u4f1a\u8bae\u5171\u6709 11 \u4f4d\u6f14\u8bb2\u5609\u5bbe\u7ed9\u5927\u5bb6\u5e26\u6765\u5206\u4eab\uff01</p>\n<p>\u5927\u4f1a\u7f51\u7ad9\uff1a <a href=\"https://vueconf.cn\" rel=\"nofollow\">https://vueconf.cn</a></p>\n<p>Vue.js &amp; Vite \u4f5c\u8005\u5c06\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u6f14\u8bb2\u3002</p>\n<p>Vue &amp; Nuxt &amp; Vite \u6838\u5fc3\u56e2\u961f\u6210\u5458 Anthony Fu \u5c06\u51fa\u5e2d\u672c\u6b21\u5927\u4f1a\uff0c\u4ed6\u5c06\u7ed9\u5927\u5bb6\u5206\u4eab Vite DevTools \u8bbe\u8ba1\u54f2\u5b66\u7684\u6700\u65b0\u8fdb\u5c55\uff0c\u4ee5\u53ca\u672a\u6765\u5c55\u671b\u3002</p>\n<p>Vite \u6838\u5fc3\u56e2\u961f\u6210\u5458 Matias Capeletto \uff08 patak \uff09 \u5c06\u901a\u8fc7\u8fdc\u7a0b\u7684\u65b9\u5f0f\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a The first 5 years of Vite \u300b\u7684\u6f14\u8bb2\u3002</p>\n<p>Vue.js \u6838\u5fc3\u56e2\u961f\u6210\u5458\uff0cVue Router \u3001Pinia \u3001VueFire \u7b49\u5e93\u7684\u4f5c\u8005 Eduardo (posva) \u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a\u6d41\u7545\u7684 UI \u4e0e\u5f02\u6b65\u72b6\u6001\u7ba1\u7406\u300b\u7684\u6f14\u8bb2\u3002</p>\n<p>Vue &amp; Vue Macros &amp; Vue Language Tools \u56e2\u961f\u6210\u5458\u3001TS Macro &amp; Vue JSX Vapor \u4f5c\u8005\u9ad8\u98de\u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a Vue JSX Vapor \u7684\u8fdb\u5316\u53f2\u300b\u7684\u6f14\u8bb2\u3002</p>\n<p>Vue &amp; VueUse \u6838\u5fc3\u56e2\u961f\u6210\u5458 Doctor Wu \u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a Alien Signals\uff1aVue \u54cd\u5e94\u5f0f\u6f14\u8fdb\u4e0e\u6700\u901f Signals \u5b9e\u8df5\u300b\u7684\u6f14\u8bb2\u3002</p>\n<p>Vue.js \u6838\u5fc3\u56e2\u961f\u6210\u5458\uff0cVolar.js &amp; Vue Language Tools &amp; alien-signals \u4f5c\u8005 Johnson \u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u5e76\u5e26\u6765\u4e3b\u9898\u4e3a\u300a TSSLint \u5982\u4f55\u6d88\u9664 linter \u5728 IDE \u4e2d\u6700\u5927\u7684\u9690\u6027\u5f00\u9500\u300b\u7684\u6f14\u8bb2\u3002\u672c\u6b21\u5206\u4eab\u5c06\u4f1a\u4ecb\u7ecd TSSLint \u5982\u4f55\u901a\u8fc7\u91cd\u65b0\u8bbe\u8ba1\uff0c\u89e3\u51b3\u4e86\u4e0a\u8ff0\u6027\u80fd\u95ee\u9898\u3002</p>\n<p>\u817e\u8baf\u9ad8\u7ea7\u524d\u7aef\u5de5\u7a0b\u5e08\u5415\u6d0b\u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a\u6d4f\u89c8\u5668\u91cc\u6784\u5efa Vue\uff1a\u6e10\u8fdb\u5f0f AI+\u4f4e\u4ee3\u7801\u5f00\u53d1\u4f53\u9a8c\u300b\u7684\u6f14\u8bb2\u3002</p>\n<p>Vue.js \u6838\u5fc3\u56e2\u961f\u6210\u5458\uff0ctsdown / Vue Macros \u4f5c\u8005\u4e09\u54b2\u667a\u5b50\u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a tsdown\uff1a\u5e93\u5e93\u5305\u4e00\u5207\u300b\u7684\u6f14\u8bb2\u3002</p>\n<p>Vue Vine \u4f5c\u8005\u6c88\u9752\u5ddd\u5c06\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u4e3a\u300a Vue Vine 1.0 \u5347\u7ea7\u62a5\u544a\u300b\u7684\u5206\u4eab\u3002</p>\n<p>Vue.js \u56e2\u961f\u6210\u5458\u3001Vue Language Tools \u6838\u5fc3\u8d21\u732e\u8005\u5c71\u5439\u8272\u5fa1\u5b88\u5c06\u51fa\u5e2d\u672c\u6b21\u4f1a\u8bae\uff0c\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u300a Vue Language Tools \u7684\u589e\u91cf\u66f4\u65b0\u673a\u5236\u89e3\u6790\u300b\u7684\u5206\u4eab\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/leia", 
        "name": "leia", 
        "avatar": "https://cdn.v2ex.com/avatar/6491/7bbe/479404_large.png?m=1748357150"
      }, 
      "url": "https://www.v2ex.com/t/1140983", 
      "date_modified": "2025-06-26T13:33:11+00:00", 
      "content_html": "<h1>vue3+ElInput \u65e0\u6cd5\u8f93\u5165\u7684\u95ee\u9898</h1>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=MzU1MWJlMGNlZWI3YTBlNzFlZTgxMzY2NTdkMGUyOTZfSVMwakRIalg0TUtGUFVTNERpV2JleFlKSEk0YVZseGdfVG9rZW46SmhyaGJhRHFqb2dLc0d4a1BZOWxybWZaZ0toXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<h1>\u5f00\u7bc7</h1>\n<p>\u5199\u4e1a\u52a1\u7684\u65f6\u5019\u53d1\u73b0\uff0c\u56e0\u4e3a\u60f3\u5077\u61d2\u561b\uff0c\u76f4\u63a5\u5c31\u5728\u60f3\u5728\u5916\u90e8\u53bb\u5b9a\u4e49\u4e00\u4e2a\u53d8\u91cf\uff0c\u7136\u540e\u5199\u4e2a\u5f39\u7a97\u91cc\uff08 tsx \uff09\u7684 el-input \uff0c\u800c\u4e0d\u662f\u53c8\u53bb\u5199\u4e2a vue \u9875\u9762\uff0c\u4f46\u53d1\u73b0\u5c31\u8f93\u5165\u4e0d\u4e86\u4e86\uff0c\u800c\u4e14\u8ddf\u7740\u6587\u6863\u5199 textarea \u6ca1\u6709\u5b57\u6570\u7edf\u8ba1\u3002\u5c31\u4e24\u4e2a\u95ee\u9898\u561b</p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=MGQxNDYxODIxNDFlNjMyMTY3N2FjNDdkNTM0N2I5MjhfT2tlME1jaVZETTYzUjJxZzl2UDNNS1hPQk9LNzBHSVlfVG9rZW46UHlmc2JuR01UbzVCakV4YVFsUmxVQmZqZ3lVXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<h2>1.el-input \u65e0\u6cd5\u8f93\u5165</h2>\n<p>TSX \u7684\u5199\u6cd5\u561b\uff0c\u6700\u5f00\u59cb\u6211\u662f\u8fd9\u4e48\u5199\u7684</p>\n<pre><code class=\"language-TypeScript\">const auditText = ref('');\n  // \u5ffd\u7565\u4ee3\u7801&lt;ElInputmodel-value={auditText.value}autosize={{ minRows: 5, maxRows: 10 }}\n    max-length={50}placeholder=\"\u8bf7\u586b\u5199\u5ba1\u6838\u4e0d\u901a\u8fc7\u539f\u56e0\uff08\u6700\u5c11\u4e94\u4e2a\u5b57\uff09\"show-word-limittype=\"textarea\"\n  /&gt;\n</code></pre>\n<p>\u7136\u540e\u53d1\u73b0\u771f\u662f\u4e00\u70b9\u53cd\u5e94\u6ca1\u6709\u554a\uff0c\u7136\u540e\u770b\u4e86\u4e0b\u6587\u6863\u4e0a\u9762\u7684\u8fd9\u53e5\u8bdd</p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=NzUyNmEzZjY1MzBhNGM4ZWExOTgyN2I4MzZiMjMxODdfRmh5TFZDeVdycERjQW9Rb2lWQ0FJRzZJd3ppVDNPSHNfVG9rZW46T29VMGJYR05Gb1lTTmN4enRtNGxlVDd2Z0dmXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<pre><code class=\"language-TypeScript\">const auditText = ref&lt;string&gt;('');\nfunction test(value) {\n    console.log(value);\n    auditText.value = value;\n}\n//\u5ffd\u7565\u4ee3\u7801\n&lt;ElInput\n    model-value={auditText.value}\n    onInput={test}\n    autosize={{ minRows: 5, maxRows: 10 }}\n    max-length={50}\n    placeholder=\"\u8bf7\u586b\u5199\u5ba1\u6838\u4e0d\u901a\u8fc7\u539f\u56e0\uff08\u6700\u5c11\u4e94\u4e2a\u5b57\uff09\"\n    show-word-limit\n    type=\"textarea\"\n/&gt;\n</code></pre>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=OWRhMjY3MDJhOTFlODA3Y2EzNWNjOTQ3MmQ2OTgyYjJfeTdVS1czRlo0NG9Ja29DVjBXbUhPOUVwNGg1VFZUWWFfVG9rZW46UEdYR2JwdlR5bzFnZU94UlNaVGxvQmszZ2NnXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<p>\u4f46\u662f\u90a3\u5176\u5b9e\u4e5f\u4e0d\u7528\u8fd9\u4e48\u9ebb\u70e6\u4eba\u6587\u6863\u91cc\u4e5f\u5199\u5f97\u5f88\u6e05\u695a\u4e86<code>v-model</code>\u5c31\u884c</p>\n<pre><code class=\"language-TypeScript\">&lt;ElInput\n    v-model={auditText.value}\n    autosize={{ minRows: 5, maxRows: 10 }}\n    max-length={50}\n    placeholder=\"\u8bf7\u586b\u5199\u5ba1\u6838\u4e0d\u901a\u8fc7\u539f\u56e0\uff08\u6700\u5c11\u4e94\u4e2a\u5b57\uff09\"\n    show-word-limit\n    type=\"textarea\"\n/&gt;\n</code></pre>\n<h2>2.\u5b57\u6570\u7edf\u8ba1\u4e0d\u89c1\u4e86</h2>\n<p>\u5148\u770b\u770b\u5b98\u7f51\u7684\u5199\u6cd5\uff0c\u5b9a\u4e49\u4e2a maxlength \u518d\u5b9a\u4e49\u4e2a show-word-limit \u5c31\u6709\u5b57\u6570\u7edf\u8ba1\u4e86</p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=ZTJkODJkNTk2M2QwYTQ1NDUzMzZhYWQ0MzFjYTVhOWNfYzJNMmVMZ1gxVzB0MU02NFl0b2lOczdpNHM4S2FRNkxfVG9rZW46TGZjcGJ1M1pib21oV0Z4N3pwU2x3czNrZ29lXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<p>\u53ef\u662f\u5982\u679c\u6211\u5728 tsx \u91cc\u6309\u5b98\u7f51\u8fd9\u4e48\u5199\u4f1a\u53d1\u751f\u4ec0\u4e48\u90a3</p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=NDJkMDEyM2I4NmRkNDkxZDgyODJkYTgwOWQ3NDc2MWNfVnNnWElPTVZEMGhFbVBrZmU0WHNvclUzbjlIcmhMbUhfVG9rZW46WGptVGJlRzlnb0d2aEJ4OHp6c2xWd0dOZzVjXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=YzdjNjA1MDQyNDNlOTQyYjgwZTI0ZmYyYmM5ODk0MTRfbTU1aHllVDdCS0hicEZQSVc1QWNDWjdlZ2tlQTJkbFBfVG9rZW46TEJnZWJDbHBQb0J0UXJ4SEFudGw3QjcwZ1JkXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<p><img alt=\"image\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://jg3p0gz06cr.sg.larksuite.com/space/api/box/stream/download/asynccode/?code=NjQwODU1MzhiNjMxNzhkNDUxZjU3ODE0NGNhYTU2NDJfRmdHTjBNcGxud2xDRTZDZkVRMktuMUduWHhqeW1OQzdfVG9rZW46Qm9VU2JUa0lVb0xhb1p4bWpydGxCZ01hZ3NiXzE3NTA4MzYzNTc6MTc1MDgzOTk1N19WNA\"/></p>\n<p>\u679c\u7136\u5417,\u4e0d\u662f props \u7684\u5c5e\u6027\u5c31\u4e0d\u7528\u5199\u4e86,\u539f\u751f\u4e8b\u4ef6\u662f\u76f4\u63a5\u7ed1\u5b9a\u5728 attrs \u4e0a\u7ed9 input \u6807\u7b7e\u7684\uff0c\u6240\u4ee5\u5199\u5728 tsx \u91cc\u4f1a\u62a5\u9519\uff0c\u5199\u5728\u6a21\u7248\u91cc\u4e0d\u4f1a\u3002\u6682\u65f6\u5c31\u5ffd\u7565\u8fd9\u4e00\u884c\u68c0\u67e5\u628a~~~\u3002</p>\n<h1>\u603b\u7ed3</h1>\n<p>\u5e73\u65f6\u4f1a\u8bb0\u5f55\u4e00\u4e9b\u7b80\u5355\u4f46\u597d\u73a9\u7684\u95ee\u9898\uff0c\u6c34\u4e00\u7bc7 vue \uff0c\u6bcf\u5929\u4e00\u7bc7 vue \u4e00\u7bc7 react \u3002</p>\n<p><a href=\"https://bento.me/xibaoyu\" rel=\"nofollow\">\u5173\u4e8e\u6211\u7684\u4e00\u4e9b\u4ecb\u7ecd</a></p>\n", 
      "date_published": "2025-06-25T08:01:26+00:00", 
      "title": "vue3+ELInput \u65e0\u6cd5\u8f93\u5165\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1140983"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/puremaker", 
        "name": "puremaker", 
        "avatar": "https://cdn.v2ex.com/avatar/cc2d/7de5/647810_large.png?m=1754989837"
      }, 
      "url": "https://www.v2ex.com/t/1138410", 
      "title": "\u60f3\u95ee\u4e00\u4e0b pinia \u6301\u4e45\u5316\u5230 localStorage \u5982\u4f55\u5b9e\u73b0\u6709\u6548\u671f", 
      "id": "https://www.v2ex.com/t/1138410", 
      "date_published": "2025-06-13T07:31:14+00:00", 
      "content_html": "<p>RT \uff0c\u672c\u4eba\u505a\u4e86\u6b3e\u5c0f\u6e38\u620f\uff0c\u628a\u73a9\u5bb6\u4fe1\u606f\u5b58\u5230\u4e86 store \u91cc\u3002\u4f46\u662f\u53d1\u73b0\u5982\u679c\u67d0\u4e2a\u73a9\u5bb6\u610f\u5916\u9000\u51fa\u4e86\uff0c\u4e14\u6e38\u620f\u5bf9\u5c40\u7ed3\u675f\u4e86\uff0c\u5f53\u8fd9\u4e2a\u73a9\u5bb6\u518d\u6253\u5f00\u9875\u9762\u7684\u65f6\u5019\u8fd8\u4f1a\u88ab\u8bc6\u522b\u4e3a\u5728\u6e38\u620f\u4e2d\uff0c\u56e0\u4e3a\u4ed6\u6ca1\u6709\u7ecf\u5386\u6b63\u5e38\u7684\u7ed3\u675f\u6e38\u620f\u4ee3\u7801\uff0c\u6ca1\u6709\u53bb\u79fb\u9664\u6389\u5931\u6548\u7684\u73a9\u5bb6\u4fe1\u606f\u3002\u5f53\u7136\u6bcf\u6b21\u91cd\u8f7d\u6e38\u620f\u7684\u65f6\u5019\u7528\u73a9\u5bb6\u4fe1\u606f\u53bb\u6838\u5b9e\u6e38\u620f\u72b6\u6001\u4e5f\u53ef\u4ee5\u3002\u4f46\u662f\u6211\u60f3\u77e5\u9053\u8fd9\u4e2a\u6301\u4e45\u5316\u5230\u5e95\u80fd\u4e0d\u80fd\u8bbe\u7f6e\u6709\u6548\u671f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/panlatent", 
        "name": "panlatent", 
        "avatar": "https://cdn.v2ex.com/avatar/d30b/8fb4/90818_large.png?m=1720835206"
      }, 
      "url": "https://www.v2ex.com/t/1136320", 
      "title": "\u6709\u4ec0\u4e48\u9002\u7528\u4e8e Vue/Nuxt \u7684\u8868\u5355/\u95ee\u5377/\u8bd5\u5377+\u8bbe\u8ba1\u5668\u5e93\u4e48", 
      "id": "https://www.v2ex.com/t/1136320", 
      "date_published": "2025-06-04T07:30:05+00:00", 
      "content_html": "<p>\u6709\u7ecf\u9a8c\u7684\u8001\u54e5\u7ed9\u70b9\u63a8\u8350\u3002\u76ee\u524d\u770b\u4e86\u51e0\u4e2a\uff0c\u5728\u8bbe\u8ba1\u5668/Builder \u4e0a\u90fd\u662f\u6536\u8d39\u7684\u3002\u867d\u7136\u65e0\u53ef\u539a\u975e\uff0c\u4f46\u662f\u6bd4\u8f83\u9700\u8981\u4e00\u4e2a\u514d\u8d39/\u5546\u4e1a\u53cb\u597d\u7684\u3002</p>\n<p>\u9700\u6c42\u662f\u4e8c\u6b21\u5c01\u88c5\uff0c\u7528\u5728\u591a\u4e2a\u9879\u76ee\u91cc\uff0c\u8bbe\u8ba1\u5668/Builder \u662f\u5fc5\u8981\u7684\u3002</p>\n<p>\u5982\u679c\u81ea\u5df1\u5f00\u53d1\u5de5\u4f5c\u91cf\u53c8\u6709\u70b9\u5927\uff0c\u5bf9\u4e8e\u6211\u6765\u8bf4\u80fd\u505a\u96c6\u6210\u5c31\u7edd\u4e0d\u81ea\u5df1\u5f00\u53d1\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/iv8d", 
        "name": "iv8d", 
        "avatar": "https://cdn.v2ex.com/avatar/2273/0636/253364_large.png?m=1749459724"
      }, 
      "url": "https://www.v2ex.com/t/1134800", 
      "date_modified": "2025-05-29T09:01:41+00:00", 
      "content_html": "\u9879\u76ee\u7528\u7684 vue2 \u8001\u7248\u672c\u5462\uff0c\u6253\u5305\u662f vue cli \u7684\uff0cenv \u73af\u5883\u53d8\u91cf\u4e2d\u5b9a\u4e49\u5982\u4e0b<br />VUE_APP_DES_KEY='abcd$1234^33'<br />\u4ee3\u7801\u4e2d\u4f7f\u7528 process.env.VUE_APP_DES_KEY \u5f15\u7528\uff0c\u5c11\u4e00\u622a\uff0c\u53d8\u6210\u4e86 abcd^33 \uff0c\u5e94\u8be5\u662f\u8bc6\u522b\u6210\u53d8\u91cf\u4e86\u3002\u7f51\u4e0a\u627e\u4e86\u5f88\u591a\u65b9\u6848\uff0c\u6bd4\u5982\u52a0\u5f15\u53f7\uff0c\u52a0\u8f6c\u4e49\u7b26\\\u3002\u4e5f\u95ee\u8fc7 AI \uff0c\u65b9\u6848\u57fa\u672c\u76f8\u540c\u3002<br />1. \u52a0\u5f15\u53f7\u4ecd\u7136\u4f1a\u66ff\u6362\u53d8\u91cf<br />2. \\\u8f6c\u4e49\u5728 dev \u73af\u5883\u4e0b\u6b63\u5e38\u4e86\uff0c\u5728 prod \u6253\u5305\u540e\u4ecd\u7136\u4f1a\u66ff\u6362<br />\u6309\u7406\u4e0d\u5e94\u8be5\u5728 env \u4e0b\u653e\u654f\u611f\u4fe1\u606f\uff0c\u5948\u4f55\u76ee\u524d\u7528\u5230\u4e86\uff0c\u8bf7\u5404\u4f4d\u5927\u4f6c\u8d50\u6559", 
      "date_published": "2025-05-28T02:11:49+00:00", 
      "title": "vue_cli \u7528\u5230 env \u73af\u5883\u53d8\u91cf\u503c\u7279\u6b8a\u5b57\u7b26\u5904\u7406", 
      "id": "https://www.v2ex.com/t/1134800"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zsxzy", 
        "name": "zsxzy", 
        "avatar": "https://cdn.v2ex.com/avatar/6ced/5cd3/225840_large.png?m=1750605867"
      }, 
      "url": "https://www.v2ex.com/t/1134485", 
      "date_modified": "2025-05-26T14:38:22+00:00", 
      "content_html": "<p>\u8ba9 AI \u7edf\u8ba1\u7684 \u6c7d\u6c34\u97f3\u4e50\u7535\u8111\u7248\u7528\u4e86\u54ea\u4e9b\u5f00\u6e90\u7ec4\u4ef6</p>\n<ol>\n<li>\n<p>@<a href=\"/member/electron\">electron</a>/osx-sign</p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u5728 macOS \u7cfb\u7edf\u4e0a\u5bf9 Electron \u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u4ee3\u7801\u7b7e\u540d\u7684\u5de5\u5177\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>electron-winstaller</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u4e3a Electron \u5e94\u7528\u7a0b\u5e8f\u521b\u5efa Windows \u5b89\u88c5\u7a0b\u5e8f (Squirrel.Windows installer)\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>dayjs</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684 JavaScript \u65e5\u671f\u65f6\u95f4\u5e93\uff0c\u7528\u4e8e\u89e3\u6790\u3001\u6821\u9a8c\u3001\u64cd\u4f5c\u548c\u663e\u793a\u65e5\u671f\u548c\u65f6\u95f4\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>immer</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a JavaScript \u5e93\uff0c\u901a\u8fc7\u5728\u201c\u8349\u7a3f\u72b6\u6001\u201d\uff08 draft state \uff09\u4e0a\u8fdb\u884c\u4fee\u6539\u6765\u521b\u5efa\u4e0b\u4e00\u4e2a\u4e0d\u53ef\u53d8\u7684\u72b6\u6001\uff0c\u7b80\u5316\u4e86\u4e0d\u53ef\u53d8\u6570\u636e\u7684\u5904\u7406\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>minimist</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e Node.js \u7684\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u5668\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>nanoid</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5c0f\u5de7\u3001\u5b89\u5168\u3001URL \u53cb\u597d\u7684\u552f\u4e00\u5b57\u7b26\u4e32 ID \u751f\u6210\u5668\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>web-vitals</strong></p>\n<ul>\n<li>\u4f5c\u7528: Google \u63a8\u51fa\u7684\u4e00\u4e2a\u5e93\uff0c\u7528\u4e8e\u6d4b\u91cf\u548c\u4e0a\u62a5\u7f51\u9875\u6838\u5fc3\u6027\u80fd\u6307\u6807 (Core Web Vitals)\uff0c\u5982 LCP, FID, CLS \u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>axios</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u57fa\u4e8e Promise \u7684 HTTP \u5ba2\u6237\u7aef\uff0c\u53ef\u7528\u4e8e\u6d4f\u89c8\u5668\u548c Node.js \u73af\u5883\u4e2d\u53d1\u9001\u7f51\u7edc\u8bf7\u6c42\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>chalk</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u5728\u7ec8\u7aef\uff08\u547d\u4ee4\u884c\uff09\u4e2d\u4e3a\u6587\u672c\u6dfb\u52a0\u989c\u8272\u548c\u6837\u5f0f\u7684\u5e93\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>electron-squirrel-startup</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u5904\u7406 Electron \u5e94\u7528\u7a0b\u5e8f\u901a\u8fc7 Squirrel.Windows \u5b89\u88c5\u548c\u542f\u52a8\u65f6\u7684\u76f8\u5173\u4e8b\u4ef6\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>multistream</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5c06\u591a\u4e2a\u53ef\u8bfb\u6d41\uff08 readable streams \uff09\u5408\u5e76\u6210\u4e00\u4e2a\u5355\u4e00\u7684\u6d41\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>inquirer</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5e38\u7528\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u7528\u6237\u754c\u9762\u96c6\u5408\uff0c\u7528\u4e8e\u521b\u5efa\u590d\u6742\u7684\u547d\u4ee4\u884c\u4ea4\u4e92\u63d0\u793a\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>sanitize-html</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u6e05\u7406 HTML \u4ee3\u7801\uff0c\u79fb\u9664\u4e0d\u9700\u8981\u7684\u6807\u7b7e\u548c\u5c5e\u6027\uff0c\u9632\u6b62 XSS \u653b\u51fb\u7b49\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>qrcode</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u751f\u6210\u4e8c\u7ef4\u7801\u56fe\u50cf\u7684\u5e93\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>vue</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u6b3e\u6d41\u884c\u7684\u6e10\u8fdb\u5f0f JavaScript \u6846\u67b6\uff0c\u7528\u4e8e\u6784\u5efa\u7528\u6237\u754c\u9762\u3002</li>\n</ul>\n</li>\n<li>\n<p>@<a href=\"/member/byted-sdk\">byted-sdk</a>/account-api</p>\n<ul>\n<li>\u4f5c\u7528: \u6839\u636e\u540d\u79f0\u63a8\u6d4b\uff0c\u8fd9\u53ef\u80fd\u662f\u5b57\u8282\u8df3\u52a8\u5185\u90e8\u7528\u4e8e\u8d26\u6237\u76f8\u5173 API \u7684 SDK \u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>vue-router</strong></p>\n<ul>\n<li>\u4f5c\u7528: Vue.js \u5b98\u65b9\u7684\u8def\u7531\u7ba1\u7406\u5668\uff0c\u7528\u4e8e\u6784\u5efa\u5355\u9875\u9762\u5e94\u7528 (SPA)\u3002</li>\n</ul>\n</li>\n<li>\n<p>@<a href=\"/member/vueuse\">vueuse</a>/core</p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5305\u542b Vue \u7ec4\u5408\u5f0f API (Composition API) \u5b9e\u7528\u5de5\u5177\u7684\u96c6\u5408\u5e93\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>file-uri-to-path</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5c06 <code>file:</code> \u534f\u8bae\u7684 URI \u8f6c\u6362\u4e3a\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u8def\u5f84\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>follow-redirects</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u652f\u6301\u81ea\u52a8\u8ddf\u968f HTTP/HTTPS \u91cd\u5b9a\u5411\u7684 HTTP/HTTPS \u5ba2\u6237\u7aef\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>proxy-from-env</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4ece\u73af\u5883\u53d8\u91cf (\u5982 <code>HTTP_PROXY</code>, <code>HTTPS_PROXY</code>, <code>NO_PROXY</code>) \u4e2d\u83b7\u53d6\u4ee3\u7406\u8bbe\u7f6e\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>form-data</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u521b\u5efa <code>multipart/form-data</code> \u7c7b\u578b\u6570\u636e\u6d41\u7684\u5e93\uff0c\u5e38\u7528\u4e8e\u6587\u4ef6\u4e0a\u4f20\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>asynckit</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u5f02\u6b65\u64cd\u4f5c\u7684\u6781\u7b80\u62bd\u8c61\u5c42\uff0c\u4e3a\u6d41\u3001Promise \u548c\u56de\u8c03\u63d0\u4f9b\u4e00\u81f4\u7684 API \u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>combined-stream</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u53ef\u4ee5\u6309\u987a\u5e8f\u4ece\u4e00\u7cfb\u5217\u53ef\u8bfb\u6d41\u4e2d\u53d1\u51fa\u6570\u636e\u7684\u6d41\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>mime-types</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5de5\u5177\u5e93\uff0c\u7528\u4e8e\u6839\u636e\u6587\u4ef6\u6269\u5c55\u540d\u67e5\u627e MIME \u7c7b\u578b\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>delayed-stream</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u53ef\u4ee5\u5ef6\u8fdf\u6d41\u4e8b\u4ef6\uff08\u7279\u522b\u662f <code>data</code> \u4e8b\u4ef6\uff09\u76f4\u5230\u8c03\u7528 <code>resume()</code> \u65b9\u6cd5\u7684\u6d41\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>mime-db</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5168\u9762\u7684 MIME \u7c7b\u578b\u6570\u636e\u5e93\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>supports-color</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u68c0\u6d4b\u7ec8\u7aef\uff08\u547d\u4ee4\u884c\u73af\u5883\uff09\u662f\u5426\u652f\u6301\u989c\u8272\u4ee5\u53ca\u652f\u6301\u7684\u7ea7\u522b\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>ansi-styles</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b ANSI \u8f6c\u4e49\u7801\uff0c\u7528\u4e8e\u5728\u7ec8\u7aef\u4e2d\u8bbe\u7f6e\u6587\u672c\u6837\u5f0f\uff08\u5982\u989c\u8272\u3001\u80cc\u666f\u8272\u3001\u52a0\u7c97\u7b49\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>has-flag</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u68c0\u67e5\u547d\u4ee4\u884c\u53c2\u6570\u4e2d\u662f\u5426\u5b58\u5728\u67d0\u4e2a\u6807\u5fd7\uff08 flag \uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>color-convert</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b\u989c\u8272\u503c\u8f6c\u6362\u529f\u80fd\uff0c\u4f8b\u5982\u5728 RGB, HSL, HEX \u7b49\u4e0d\u540c\u989c\u8272\u6a21\u578b\u4e4b\u95f4\u8f6c\u6362\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>color-name</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5305\u542b\u989c\u8272\u540d\u79f0\u53ca\u5176\u5bf9\u5e94\u5341\u516d\u8fdb\u5236\u503c\u7684\u5217\u8868\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>debug</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5c0f\u578b\u7684 JavaScript \u8c03\u8bd5\u5de5\u5177\uff0c\u53ef\u4ee5\u901a\u8fc7\u73af\u5883\u53d8\u91cf\u63a7\u5236\u8c03\u8bd5\u4fe1\u606f\u7684\u8f93\u51fa\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>once</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u786e\u4fdd\u4e00\u4e2a\u51fd\u6570\u53ea\u88ab\u8c03\u7528\u4e00\u6b21\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>readable-stream</strong></p>\n<ul>\n<li>\u4f5c\u7528: Node.js \u6838\u5fc3 <code>stream</code> \u6a21\u5757\u4e2d\u53ef\u8bfb\u6d41\u63a5\u53e3\u7684\u5b9e\u73b0\uff0c\u53ef\u7528\u4e8e\u65e7\u7248 Node.js \u6216\u6d4f\u89c8\u5668\u73af\u5883\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>wrappy</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u5305\u88c5\u51fd\u6570\u7684\u5de5\u5177\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>inherits</strong></p>\n<ul>\n<li>\u4f5c\u7528: Node.js <code>util.inherits</code> \u65b9\u6cd5\u7684\u72ec\u7acb\u7248\u672c\uff0c\u7528\u4e8e\u5b9e\u73b0\u5bf9\u8c61\u95f4\u7684\u539f\u578b\u7ee7\u627f\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>util-deprecate</strong></p>\n<ul>\n<li>\u4f5c\u7528: Node.js <code>util.deprecate</code> \u65b9\u6cd5\u7684\u72ec\u7acb\u7248\u672c\uff0c\u7528\u4e8e\u6807\u8bb0\u51fd\u6570\u6216\u65b9\u6cd5\u4e3a\u5df2\u5e9f\u5f03\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>string_decoder</strong></p>\n<ul>\n<li>\u4f5c\u7528: Node.js <code>string_decoder</code> \u6a21\u5757\u7684\u72ec\u7acb\u7248\u672c\uff0c\u7528\u4e8e\u5c06 Buffer \u5bf9\u8c61\u89e3\u7801\u4e3a\u5b57\u7b26\u4e32\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>safe-buffer</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b\u4e00\u4e2a\u66f4\u5b89\u5168\u7684 Buffer \u6784\u9020\u51fd\u6570\uff0c\u4ee5\u907f\u514d\u4e00\u4e9b\u6f5c\u5728\u7684\u5b89\u5168\u95ee\u9898\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>cli-width</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u83b7\u53d6\u7ec8\u7aef\uff08\u547d\u4ee4\u884c\u754c\u9762\uff09\u7684\u53ef\u662f\u5bbd\u5ea6\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>lodash</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u73b0\u4ee3 JavaScript \u5de5\u5177\u5e93\uff0c\u63d0\u4f9b\u4e86\u8bb8\u591a\u5b9e\u7528\u7684\u51fd\u6570\uff0c\u7b80\u5316\u5e38\u89c1\u7684\u7f16\u7a0b\u4efb\u52a1\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>mute-stream</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u53ef\u4ee5\u88ab\u201c\u9759\u97f3\u201d\u7684\u76f4\u901a\u6d41\uff08 passthrough stream \uff09\uff0c\u9759\u97f3\u65f6\u6570\u636e\u4f1a\u4e22\u5931\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>run-async</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5141\u8bb8\u5f02\u6b65\u51fd\u6570\u4e32\u884c\u6216\u5e76\u884c\u6267\u884c\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>ansi-escapes</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b\u7528\u4e8e\u64cd\u4f5c\u7ec8\u7aef\u7684 ANSI \u8f6c\u4e49\u7801\uff0c\u5982\u79fb\u52a8\u5149\u6807\u3001\u6e05\u5c4f\u7b49\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>figures</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b\u5404\u79cd Unicode \u7b26\u53f7\uff0c\u5e76\u4e3a Windows CMD \u73af\u5883\u63d0\u4f9b\u4e86\u56de\u9000\u65b9\u6848\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>strip-ansi</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4ece\u5b57\u7b26\u4e32\u4e2d\u79fb\u9664 ANSI \u8f6c\u4e49\u7801\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>external-editor</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5141\u8bb8\u7528\u6237\u4f7f\u7528\u5176\u504f\u597d\u7684\u6587\u672c\u7f16\u8f91\u5668\u6765\u7f16\u8f91\u5b57\u7b26\u4e32\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>string-width</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u83b7\u53d6\u5b57\u7b26\u4e32\u5728\u7ec8\u7aef\u4e2d\u5b9e\u9645\u663e\u793a\u7684\u5bbd\u5ea6\uff08\u6240\u5360\u5217\u6570\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>cli-cursor</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u63a7\u5236\u547d\u4ee4\u884c\u754c\u9762\u4e2d\u5149\u6807\u7684\u663e\u793a\u548c\u9690\u85cf\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>wrap-ansi</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5bf9\u5305\u542b ANSI \u8f6c\u4e49\u7801\u7684\u5b57\u7b26\u4e32\u8fdb\u884c\u81ea\u52a8\u6362\u884c\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>ora</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5728\u7ec8\u7aef\u4e2d\u663e\u793a\u4f18\u96c5\u7684\u52a0\u8f7d\u52a8\u753b\uff08 spinners \uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>escape-string-regexp</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u8f6c\u4e49\u5b57\u7b26\u4e32\u4e2d\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u7279\u6b8a\u5b57\u7b26\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>is-unicode-supported</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u68c0\u6d4b\u7ec8\u7aef\u662f\u5426\u652f\u6301 Unicode \u5b57\u7b26\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>ansi-regex</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u5339\u914d ANSI \u8f6c\u4e49\u7801\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>chardet</strong></p>\n<ul>\n<li>\u4f5c\u7528: JavaScript \u7684\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>iconv-lite</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7eaf JavaScript \u5b9e\u73b0\u7684\u5b57\u7b26\u7f16\u7801\u8f6c\u6362\u5e93\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>tmp</strong></p>\n<ul>\n<li>\u4f5c\u7528: Node.js \u7684\u4e34\u65f6\u6587\u4ef6\u548c\u76ee\u5f55\u521b\u5efa\u5de5\u5177\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>safer-buffer</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e0e <code>safe-buffer</code> \u7c7b\u4f3c\uff0c\u63d0\u4f9b\u66f4\u5b89\u5168\u7684 Buffer API \uff0c\u53ef\u80fd\u662f\u5176\u66ff\u4ee3\u6216\u589e\u5f3a\u7248\u672c\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>os-tmpdir</strong></p>\n<ul>\n<li>\u4f5c\u7528: Node.js <code>os.tmpdir()</code> \u65b9\u6cd5\u7684 ponyfill \uff08\u817b\u5b50\u811a\u672c\uff09\uff0c\u63d0\u4f9b\u83b7\u53d6\u64cd\u4f5c\u7cfb\u7edf\u4e34\u65f6\u76ee\u5f55\u8def\u5f84\u7684\u529f\u80fd\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>restore-cursor</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5728\u7a0b\u5e8f\u9000\u51fa\u65f6\u4f18\u96c5\u5730\u6062\u590d\u547d\u4ee4\u884c\u5149\u6807\u7684\u663e\u793a\u72b6\u6001\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>onetime</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u786e\u4fdd\u4e00\u4e2a\u51fd\u6570\u53ea\u6267\u884c\u4e00\u6b21\uff08\u4e0e <code>once</code> \u529f\u80fd\u7c7b\u4f3c\uff0c\u4f46\u53ef\u80fd\u6765\u81ea\u4e0d\u540c\u4f5c\u8005\u6216\u6709\u7ec6\u5fae\u5dee\u522b\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>mimic-fn</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4f7f\u4e00\u4e2a\u51fd\u6570\u6a21\u4eff\u53e6\u4e00\u4e2a\u51fd\u6570\u7684\u67d0\u4e9b\u5c5e\u6027\uff08\u5982\u540d\u79f0\u3001\u957f\u5ea6\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>cli-spinners</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b\u591a\u79cd\u547d\u4ee4\u884c\u52a0\u8f7d\u52a8\u753b\uff08 spinners \uff09\u6837\u5f0f\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>is-interactive</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u68c0\u67e5\u5f53\u524d\u8fdb\u7a0b\u662f\u5426\u5728\u4ea4\u4e92\u5f0f\u7ec8\u7aef\u4e2d\u8fd0\u884c\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>log-symbols</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e3a\u65e5\u5fd7\u4fe1\u606f\u63d0\u4f9b\u5404\u79cd\u72b6\u6001\u7b26\u53f7\uff08\u5982 \u2714, \u2139, \u26a0, \u2716\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>wcwidth</strong></p>\n<ul>\n<li>\u4f5c\u7528: JavaScript \u5b9e\u73b0\u7684 <code>wcwidth()</code> \u51fd\u6570\uff0c\u7528\u4e8e\u8ba1\u7b97\u5bbd\u5b57\u7b26\uff08\u5982\u4e2d\u65e5\u97e9\u5b57\u7b26\uff09\u5728\u7ec8\u7aef\u4e2d\u5360\u636e\u7684\u5217\u6570\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>defaults</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5c06\u9ed8\u8ba4\u9009\u9879\u5bf9\u8c61\u5408\u5e76\u5230\u7528\u6237\u63d0\u4f9b\u7684\u9009\u9879\u5bf9\u8c61\u4e2d\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>clone</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5bf9 JavaScript \u5bf9\u8c61\u8fdb\u884c\u6df1\u62f7\u8d1d\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>buffer</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e3a\u6d4f\u89c8\u5668\u73af\u5883\u63d0\u4f9b Node.js Buffer API \u7684\u5b9e\u73b0\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>base64-js</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b Base64 \u7f16\u7801\u548c\u89e3\u7801\u529f\u80fd\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>ieee754</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e\u5904\u7406 IEEE754 \u6d6e\u70b9\u6570\u7684\u8bfb\u53d6\u548c\u5199\u5165\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>is-plain-object</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5224\u65ad\u4e00\u4e2a\u503c\u662f\u5426\u4e3a\u7eaf\u7cb9\u7684 JavaScript \u5bf9\u8c61\uff08\u5373\u901a\u8fc7 <code>{}</code> \u6216 <code>new Object()</code> \u521b\u5efa\u7684\u5bf9\u8c61\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>parse-srcset</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u89e3\u6790 HTML <code>&lt;img&gt;</code> \u6807\u7b7e\u7684 <code>srcset</code> \u5c5e\u6027\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>postcss</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528 JavaScript \u8f6c\u6362 CSS \u7684\u5de5\u5177\uff0c\u901a\u8fc7\u63d2\u4ef6\u4f53\u7cfb\u53ef\u4ee5\u5b9e\u73b0\u5404\u79cd CSS \u5904\u7406\u529f\u80fd\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>htmlparser2</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5bbd\u5bb9\u7684\u3001\u5feb\u901f\u7684 HTML \u548c XML \u89e3\u6790\u5668\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>picocolors</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u975e\u5e38\u5c0f\u4e14\u5feb\u901f\u7684 Node.js \u5e93\uff0c\u7528\u4e8e\u901a\u8fc7 ANSI \u989c\u8272\u4ee3\u7801\u683c\u5f0f\u5316\u7ec8\u7aef\u6587\u672c\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>source-map-js</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u751f\u6210\u548c\u4f7f\u7528 source map \u683c\u5f0f\u7684\u5e93\uff0c\u5e2e\u52a9\u8c03\u8bd5\u538b\u7f29\u6216\u8f6c\u6362\u540e\u7684\u4ee3\u7801\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>domelementtype</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e3a <code>htmlparser2</code> \u5b9a\u4e49 DOM \u5143\u7d20\u7684\u7c7b\u578b\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>entities</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u7528\u4e8e HTML/XML \u5b9e\u4f53\u7684\u7f16\u7801\u548c\u89e3\u7801\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>domhandler</strong></p>\n<ul>\n<li>\u4f5c\u7528: <code>htmlparser2</code> \u7684\u4e00\u4e2a\u5904\u7406\u5668\uff0c\u7528\u4e8e\u5c06\u89e3\u6790\u7684 HTML/XML \u6784\u5efa\u6210 DOM \u6811\u7ed3\u6784\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>domutils</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u63d0\u4f9b\u64cd\u4f5c\u7531 <code>domhandler</code> \u521b\u5efa\u7684 DOM \u7ed3\u6784\u7684\u5de5\u5177\u51fd\u6570\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>dom-serializer</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5c06 <code>domhandler</code> \u521b\u5efa\u7684 DOM \u6811\u6e32\u67d3\u56de HTML/XML \u5b57\u7b26\u4e32\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>pngjs</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7b80\u5355\u7684 PNG \u56fe\u7247\u7f16\u89e3\u7801\u5e93\uff0c\u7528\u4e8e Node.js \u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>yargs</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u5f3a\u5927\u7684\u5e93\uff0c\u7528\u4e8e\u6784\u5efa\u4ea4\u4e92\u5f0f\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u80fd\u89e3\u6790\u53c2\u6570\u3001\u751f\u6210\u5e2e\u52a9\u4fe1\u606f\u7b49\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>decamelize</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5c06\u9a7c\u5cf0\u547d\u540d\uff08 camelCase \uff09\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u4f7f\u7528\u6307\u5b9a\u5206\u9694\u7b26\u7684\u5c0f\u5199\u5b57\u7b26\u4e32\uff08\u4f8b\u5982 <code>fooBar</code> -&gt; <code>foo_bar</code>\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>require-directory</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u9012\u5f52\u5730\u904d\u5386\u6307\u5b9a\u76ee\u5f55\uff0c<code>require()</code> \u6bcf\u4e2a\u6587\u4ef6\uff0c\u5e76\u8fd4\u56de\u4e00\u4e2a\u5d4c\u5957\u7684\u54c8\u5e0c\u7ed3\u6784\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>which-module</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u6839\u636e\u7ed9\u5b9a\u7684\u6587\u4ef6\u8def\u5f84\u627e\u5230\u5176\u6240\u5c5e\u7684\u6a21\u5757\u5bf9\u8c61\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>y18n</strong></p>\n<ul>\n<li>\u4f5c\u7528: <code>yargs</code> \u4f7f\u7528\u7684\u8f7b\u91cf\u7ea7\u56fd\u9645\u5316 (i18n) \u5e93\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>find-up</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u901a\u8fc7\u5411\u4e0a\u904d\u5386\u7236\u76ee\u5f55\u6765\u67e5\u627e\u6587\u4ef6\u6216\u76ee\u5f55\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>camelcase</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5c06\u4f7f\u7528\u77ed\u6a2a\u7ebf\u3001\u70b9\u3001\u4e0b\u5212\u7ebf\u6216\u7a7a\u683c\u5206\u9694\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u9a7c\u5cf0\u547d\u540d\uff08 camelCase \uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>is-fullwidth-code-point</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u68c0\u67e5\u4e00\u4e2a\u6570\u5b57\u662f\u5426\u4e3a\u5168\u89d2\u5b57\u7b26\u7684 Unicode \u7801\u70b9\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>path-exists</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u68c0\u67e5\u6307\u5b9a\u7684\u8def\u5f84\u662f\u5426\u5b58\u5728\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>locate-path</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4ece\u591a\u4e2a\u8def\u5f84\u4e2d\u627e\u51fa\u7b2c\u4e00\u4e2a\u5b9e\u9645\u5b58\u5728\u7684\u8def\u5f84\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>p-locate</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u5f02\u6b65\u5730\u67e5\u627e\u5e76\u8fd4\u56de\u7b2c\u4e00\u4e2a\u6ee1\u8db3\u6d4b\u8bd5\u51fd\u6570\u7684 Promise \u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>p-limit</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4ee5\u6709\u9650\u7684\u5e76\u53d1\u6570\u8fd0\u884c\u591a\u4e2a\u8fd4\u56de Promise \u7684\u5f02\u6b65\u51fd\u6570\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>p-try</strong></p>\n<ul>\n<li>\u4f5c\u7528: <code>Promise.try()</code> \u7684 ponyfill \uff0c\u7528\u4e8e\u542f\u52a8\u4e00\u4e2a Promise \u94fe\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>core-js-pure</strong></p>\n<ul>\n<li>\u4f5c\u7528: JavaScript \u7684\u6a21\u5757\u5316\u6807\u51c6\u5e93\uff0c\u5305\u542b ECMAScript \u6700\u65b0\u8349\u6848\u7684 polyfills \uff08\u7eaf\u51c0\u7248\uff0c\u4e0d\u6c61\u67d3\u5168\u5c40\u4f5c\u7528\u57df\uff09\u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>js-cookie</strong></p>\n<ul>\n<li>\u4f5c\u7528: \u4e00\u4e2a\u7b80\u5355\u3001\u8f7b\u91cf\u7ea7\u7684 JavaScript API \uff0c\u7528\u4e8e\u5904\u7406\u6d4f\u89c8\u5668 cookie \u3002</li>\n</ul>\n</li>\n<li>\n<p><strong>fast-glob</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u5feb\u901f\u7684 glob \u6a21\u5f0f\u5339\u914d\u5e93\uff08\u7528\u4e8e\u6587\u4ef6\u8def\u5f84\u5339\u914d\uff09\u3002</p>\n</li>\n<li>\n<p><strong>@nodelib/fs.stat</strong>\n*   \u4f5c\u7528: \u63d0\u4f9b\u5177\u6709\u6269\u5c55 API \u7684 <code>fs.stat</code> \u548c <code>fs.lstat</code> \u65b9\u6cd5\u3002</p>\n</li>\n<li>\n<p><strong>merge2</strong>\n*   \u4f5c\u7528: \u5c06\u591a\u4e2a\u6d41\uff08 streams \uff09\u6309\u987a\u5e8f\u6216\u5e76\u884c\u5408\u5e76\u4e3a\u4e00\u4e2a\u6d41\u3002</p>\n</li>\n<li>\n<p><strong>glob-parent</strong>\n*   \u4f5c\u7528: \u4ece glob \u5b57\u7b26\u4e32\u4e2d\u63d0\u53d6\u51fa\u975e\u901a\u914d\u7b26\u90e8\u5206\u7684\u7236\u8def\u5f84\u3002</p>\n</li>\n<li>\n<p><strong>@nodelib/fs.walk</strong>\n*   \u4f5c\u7528: \u63d0\u4f9b\u904d\u5386\u76ee\u5f55\u7684\u65b9\u6cd5\u3002</p>\n</li>\n<li>\n<p><strong>micromatch</strong>\n*   \u4f5c\u7528: \u9ad8\u5ea6\u4f18\u5316\u7684\u901a\u914d\u7b26\u548c glob \u6a21\u5f0f\u5339\u914d\u5e93\u3002</p>\n</li>\n<li>\n<p><strong>is-glob</strong>\n*   \u4f5c\u7528: \u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u770b\u8d77\u6765\u50cf\u4e00\u4e2a glob \u6a21\u5f0f\u6216\u6269\u5c55 glob \u6a21\u5f0f\u3002</p>\n</li>\n<li>\n<p><strong>is-extglob</strong>\n*   \u4f5c\u7528: \u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u6269\u5c55 glob (extglob) \u6a21\u5f0f\u3002</p>\n</li>\n<li>\n<p><strong>fastq</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u5feb\u901f\u3001\u7b80\u5355\u3001\u57fa\u4e8e Promise \u7684\u5f02\u6b65\u961f\u5217\u3002</p>\n</li>\n<li>\n<p><strong>@nodelib/fs.scandir</strong>\n*   \u4f5c\u7528: \u63d0\u4f9b <code>fs.scandir</code> \u65b9\u6cd5\uff0c\u7528\u4e8e\u626b\u63cf\u76ee\u5f55\u5185\u5bb9\u3002</p>\n</li>\n<li>\n<p><strong>reusify</strong>\n*   \u4f5c\u7528: \u9ad8\u6548\u5730\u91cd\u7528\u5bf9\u8c61\uff0c\u51cf\u5c11\u5783\u573e\u56de\u6536\u3002</p>\n</li>\n<li>\n<p><strong>run-parallel</strong>\n*   \u4f5c\u7528: \u5e76\u884c\u8fd0\u884c\u4e00\u7ec4\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>queue-microtask</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u5c06\u51fd\u6570\u6392\u961f\u5230\u5fae\u4efb\u52a1\uff08 microtask \uff09\u4e2d\u6267\u884c\u7684\u5fae\u578b\u5e93\u3002</p>\n</li>\n<li>\n<p><strong>picomatch</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u975e\u5e38\u5feb\u901f\u4e14\u51c6\u786e\u7684 JavaScript glob \u6a21\u5f0f\u5339\u914d\u5668\u3002</p>\n</li>\n<li>\n<p><strong>braces</strong>\n*   \u4f5c\u7528: JavaScript \u5b9e\u73b0\u7684\u7c7b\u4f3c Bash \u7684\u82b1\u62ec\u53f7\u6269\u5c55\u529f\u80fd\uff08\u4f8b\u5982 <code>a{b,c}d</code> -&gt; <code>abd, acd</code>\uff09\u3002</p>\n</li>\n<li>\n<p><strong>fill-range</strong>\n*   \u4f5c\u7528: \u586b\u5145\u4e00\u4e2a\u6570\u5b57\u6216\u5b57\u6bcd\u8303\u56f4\uff0c\u53ef\u4ee5\u6307\u5b9a\u6b65\u957f\uff0c\u6216\u521b\u5efa\u4e00\u4e2a\u4e0e\u6b63\u5219\u8868\u8fbe\u5f0f\u517c\u5bb9\u7684\u8303\u56f4\u3002</p>\n</li>\n<li>\n<p><strong>to-regex-range</strong>\n*   \u4f5c\u7528: \u4ece\u4e24\u4e2a\u6570\u5b57\u6216\u5b57\u6bcd\u521b\u5efa\u4e00\u4e2a\u4e0e\u6b63\u5219\u8868\u8fbe\u5f0f\u517c\u5bb9\u7684\u8303\u56f4\u3002</p>\n</li>\n<li>\n<p><strong>is-number</strong>\n*   \u4f5c\u7528: \u5224\u65ad\u4e00\u4e2a\u503c\u662f\u5426\u4e3a\u6570\u5b57\u7c7b\u578b\u3002</p>\n</li>\n<li>\n<p><strong>node-machine-id</strong>\n*   \u4f5c\u7528: \u83b7\u53d6\u4e00\u4e2a\u552f\u4e00\u7684\u673a\u5668 ID \u3002</p>\n</li>\n<li>\n<p><strong>@vue/shared</strong>\n*   \u4f5c\u7528: Vue.js \u5185\u90e8\u5305\u5171\u4eab\u7684\u5de5\u5177\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>@vue/runtime-dom</strong>\n*   \u4f5c\u7528: Vue.js \u9488\u5bf9 DOM \u73af\u5883\u7684\u8fd0\u884c\u65f6\u3002</p>\n</li>\n<li>\n<p><strong>@vue/compiler-dom</strong>\n*   \u4f5c\u7528: Vue.js \u9488\u5bf9 DOM \u73af\u5883\u7684\u7f16\u8bd1\u5668\u3002</p>\n</li>\n<li>\n<p><strong>@vue/compiler-sfc</strong>\n*   \u4f5c\u7528: Vue.js \u5355\u6587\u4ef6\u7ec4\u4ef6 (SFC, .vue \u6587\u4ef6) \u7684\u7f16\u8bd1\u5668\u3002</p>\n</li>\n<li>\n<p><strong>@vue/server-renderer</strong>\n*   \u4f5c\u7528: Vue.js \u7528\u4e8e\u670d\u52a1\u5668\u7aef\u6e32\u67d3 (SSR) \u7684\u5305\u3002</p>\n</li>\n<li>\n<p><strong>csstype</strong>\n*   \u4f5c\u7528: \u4e3a TypeScript \u63d0\u4f9b\u4e25\u683c\u7c7b\u578b\u7684 CSS \u5c5e\u6027\u548c\u503c\u5b9a\u4e49\u3002</p>\n</li>\n<li>\n<p><strong>@vue/runtime-core</strong>\n*   \u4f5c\u7528: Vue.js \u7684\u8fd0\u884c\u65f6\u6838\u5fc3\uff0c\u5e73\u53f0\u65e0\u5173\u3002</p>\n</li>\n<li>\n<p><strong>@vue/reactivity</strong>\n*   \u4f5c\u7528: Vue.js \u7684\u54cd\u5e94\u5f0f\u7cfb\u7edf\u6838\u5fc3\u3002</p>\n</li>\n<li>\n<p><strong>@vue/compiler-core</strong>\n*   \u4f5c\u7528: Vue.js \u7684\u7f16\u8bd1\u5668\u6838\u5fc3\uff0c\u5e73\u53f0\u65e0\u5173\u3002</p>\n</li>\n<li>\n<p><strong>estree-walker</strong>\n*   \u4f5c\u7528: \u7528\u4e8e\u904d\u5386\u7b26\u5408 ESTree \u89c4\u8303\u7684\u62bd\u8c61\u8bed\u6cd5\u6811 (AST)\u3002</p>\n</li>\n<li>\n<p><strong>@babel/parser</strong>\n*   \u4f5c\u7528: Babel \u4f7f\u7528\u7684 JavaScript \u89e3\u6790\u5668\uff0c\u53ef\u4ee5\u5c06 JavaScript \u4ee3\u7801\u8f6c\u6362\u4e3a AST \u3002</p>\n</li>\n<li>\n<p><strong>@babel/types</strong>\n*   \u4f5c\u7528: Babel \u7528\u4e8e\u5904\u7406 AST \u8282\u70b9\u7684\u5de5\u5177\u51fd\u6570\u548c\u7c7b\u578b\u5b9a\u4e49\u3002</p>\n</li>\n<li>\n<p><strong>@babel/helper-string-parser</strong>\n*   \u4f5c\u7528: Babel \u5185\u90e8\u7528\u4e8e\u89e3\u6790\u5b57\u7b26\u4e32\u7684\u8f85\u52a9\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>@babel/helper-validator-identifier</strong>\n*   \u4f5c\u7528: Babel \u5185\u90e8\u7528\u4e8e\u9a8c\u8bc1\u6807\u8bc6\u7b26\uff08\u53d8\u91cf\u540d\u7b49\uff09\u7684\u8f85\u52a9\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>to-fast-properties</strong>\n*   \u4f5c\u7528: \u5f3a\u5236 V8 \u5f15\u64ce\u5bf9\u4e00\u4e2a\u5bf9\u8c61\u4f7f\u7528\u201c\u5feb\u901f\u5c5e\u6027\u201d\u6a21\u5f0f\uff0c\u4ee5\u4f18\u5316\u6027\u80fd\u3002</p>\n</li>\n<li>\n<p><strong>magic-string</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u64cd\u4f5c\u5b57\u7b26\u4e32\u5e76\u80fd\u751f\u6210\u5bf9\u5e94 source map \u7684\u5e93\u3002</p>\n</li>\n<li>\n<p><strong>@vue/reactivity-transform</strong>\n*   \u4f5c\u7528: Vue.js \u5b9e\u9a8c\u6027\u7684\u54cd\u5e94\u5f0f\u8bed\u6cd5\u7cd6\u8f6c\u6362\u3002</p>\n</li>\n<li>\n<p><strong>@vue/compiler-ssr</strong>\n*   \u4f5c\u7528: Vue.js \u9488\u5bf9\u670d\u52a1\u5668\u7aef\u6e32\u67d3 (SSR) \u7684\u7f16\u8bd1\u5668\u3002</p>\n</li>\n<li>\n<p><strong>@jridgewell/sourcemap-codec</strong>\n*   \u4f5c\u7528: \u7528\u4e8e\u7f16\u7801\u548c\u89e3\u7801 sourcemap VLQ (Variable Length Quantity) \u6bb5\u3002</p>\n</li>\n<li>\n<p><strong>crypto-js</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a JavaScript \u7684\u52a0\u5bc6\u6807\u51c6\u5e93\uff0c\u652f\u6301\u591a\u79cd\u52a0\u5bc6\u7b97\u6cd5\u548c\u54c8\u5e0c\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>isuri</strong>\n*   \u4f5c\u7528: \u68c0\u67e5\u4e00\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u6709\u6548\u7684 URI \u3002</p>\n</li>\n<li>\n<p><strong>rfc-3986</strong>\n*   \u4f5c\u7528: \u9a8c\u8bc1 URI \u662f\u5426\u7b26\u5408 RFC 3986 \u6807\u51c6\u3002</p>\n</li>\n<li>\n<p><strong>@vueuse/metadata</strong>\n*   \u4f5c\u7528: VueUse \u5185\u90e8\u4f7f\u7528\u7684\u5143\u6570\u636e\u3002</p>\n</li>\n<li>\n<p><strong>vue-demi</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u5f00\u53d1\u5de5\u5177\uff0c\u5141\u8bb8\u7f16\u5199\u901a\u7528\u7684 Vue \u5e93\uff0c\u4f7f\u5176\u540c\u65f6\u517c\u5bb9 Vue 2 \u548c Vue 3 \u3002</p>\n</li>\n<li>\n<p><strong>@vueuse/shared</strong>\n*   \u4f5c\u7528: VueUse \u5e93\u5171\u4eab\u7684\u5de5\u5177\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>plist</strong>\n*   \u4f5c\u7528: Apple \u7684\u5c5e\u6027\u5217\u8868 (Property List, .plist) \u6587\u4ef6\u89e3\u6790\u5668\u548c\u6784\u5efa\u5668\u3002</p>\n</li>\n<li>\n<p><strong>fs-extra</strong>\n*   \u4f5c\u7528: \u6269\u5c55\u4e86 Node.js \u5185\u7f6e <code>fs</code> \u6a21\u5757\u7684\u529f\u80fd\uff0c\u6dfb\u52a0\u4e86\u66f4\u591a\u6587\u4ef6\u7cfb\u7edf\u64cd\u4f5c\u65b9\u6cd5\uff0c\u5e76\u4e3a <code>fs</code> \u65b9\u6cd5\u589e\u52a0\u4e86 Promise \u652f\u6301\u3002</p>\n</li>\n<li>\n<p><strong>xmlbuilder</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e Node.js \u7684 XML \u6784\u5efa\u5668\u3002</p>\n</li>\n<li>\n<p><strong>graceful-fs</strong>\n*   \u4f5c\u7528: <code>fs</code> \u6a21\u5757\u7684\u66ff\u4ee3\u54c1\uff0c\u8fdb\u884c\u4e86\u4e00\u4e9b\u6539\u8fdb\uff0c\u4f8b\u5982\u66f4\u597d\u5730\u5904\u7406\u6587\u4ef6\u7cfb\u7edf\u9519\u8bef\u548c\u8d44\u6e90\u9650\u5236\u3002</p>\n</li>\n<li>\n<p><strong>universalify</strong>\n*   \u4f5c\u7528: \u5c06\u56de\u8c03\u98ce\u683c\u7684\u51fd\u6570\u8f6c\u6362\u4e3a Promise \u98ce\u683c\u7684\u51fd\u6570\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002</p>\n</li>\n<li>\n<p><strong>jsonfile</strong>\n*   \u4f5c\u7528: \u65b9\u4fbf\u5730\u8bfb\u53d6\u548c\u5199\u5165 JSON \u6587\u4ef6\u3002</p>\n</li>\n<li>\n<p><strong>lodash.template</strong>\n*   \u4f5c\u7528: Lodash \u5e93\u4e2d\u7684 <code>_.template</code> \u65b9\u6cd5\uff0c\u7528\u4e8e\u521b\u5efa\u7f16\u8bd1\u6a21\u677f\u51fd\u6570\u3002</p>\n</li>\n<li>\n<p><strong>temp</strong>\n*   \u4f5c\u7528: Node.js \u7684\u4e34\u65f6\u6587\u4ef6\u548c\u76ee\u5f55\u521b\u5efa\u5de5\u5177 (\u4e0e <code>tmp</code> \u7c7b\u4f3c\uff0c\u53ef\u80fd\u7531\u4e0d\u540c\u4f9d\u8d56\u4f7f\u7528)\u3002</p>\n</li>\n<li>\n<p><strong>lodash.templatesettings</strong>\n*   \u4f5c\u7528: Lodash \u5e93\u4e2d\u7684 <code>_.templateSettings</code> \u65b9\u6cd5\uff0c\u7528\u4e8e\u914d\u7f6e <code>_.template</code> \u7684\u884c\u4e3a\u3002</p>\n</li>\n<li>\n<p><strong>commander</strong>\n*   \u4f5c\u7528: Node.js \u547d\u4ee4\u884c\u754c\u9762\u89e3\u51b3\u65b9\u6848\uff0c\u4f7f\u521b\u5efa\u547d\u4ee4\u884c\u5de5\u5177\u66f4\u7b80\u5355\u3002</p>\n</li>\n<li>\n<p><strong>minimatch</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684 glob \u6a21\u5f0f\u5339\u914d\u5de5\u5177\u3002</p>\n</li>\n<li>\n<p><strong>glob</strong>\n*   \u4f5c\u7528: \u4e3a Node.js \u63d0\u4f9b glob \u529f\u80fd\uff08\u6587\u4ef6\u540d\u6a21\u5f0f\u5339\u914d\uff09\u3002</p>\n</li>\n<li>\n<p><strong>brace-expansion</strong>\n*   \u4f5c\u7528: \u5b9e\u73b0\u7c7b\u4f3c Bash \u7684\u82b1\u62ec\u53f7\u6269\u5c55\u529f\u80fd\uff08\u5df2\u5728 <code>braces</code> \u4e2d\u5217\u51fa\uff0c\u529f\u80fd\u76f8\u540c\uff09\u3002</p>\n</li>\n<li>\n<p><strong>concat-map</strong>\n*   \u4f5c\u7528: \u4e00\u4e2a <code>map</code> \u51fd\u6570\uff0c\u5176\u56de\u8c03\u53ef\u4ee5\u8fd4\u56de\u4e00\u4e2a\u6570\u7ec4\u6216\u5355\u4e2a\u503c\uff0c\u7ed3\u679c\u4f1a\u88ab\u5c55\u5e73\u3002</p>\n</li>\n<li>\n<p><strong>fs.realpath</strong>\n*   \u4f5c\u7528: Node.js <code>fs.realpath</code> \u65b9\u6cd5\u7684\u5b9e\u73b0\u6216 ponyfill \uff0c\u7528\u4e8e\u89e3\u6790\u7b26\u53f7\u94fe\u63a5\u5e76\u8fd4\u56de\u89c4\u8303\u5316\u7684\u7edd\u5bf9\u8def\u5f84\u3002</p>\n</li>\n<li>\n<p><strong>path-is-absolute</strong>\n*   \u4f5c\u7528: Node.js <code>path.isAbsolute()</code> \u65b9\u6cd5\u7684 ponyfill \uff0c\u5224\u65ad\u8def\u5f84\u662f\u5426\u4e3a\u7edd\u5bf9\u8def\u5f84\u3002</p>\n</li>\n<li>\n<p><strong>inflight</strong>\n*   \u4f5c\u7528: \u9632\u6b62\u5bf9\u540c\u4e00\u8d44\u6e90\u53d1\u8d77\u91cd\u590d\u7684\u5f02\u6b65\u8bf7\u6c42\uff0c\u800c\u662f\u5c06\u56de\u8c03\u6dfb\u52a0\u5230\u6b63\u5728\u8fdb\u884c\u7684\u8bf7\u6c42\u4e0a\u3002</p>\n</li>\n<li>\n<p><strong>mkdirp</strong>\n*   \u4f5c\u7528: \u9012\u5f52\u5730\u521b\u5efa\u76ee\u5f55\uff0c\u7c7b\u4f3c Unix \u547d\u4ee4 <code>mkdir -p</code>\u3002</p>\n</li>\n<li>\n<p><strong>rimraf</strong>\n*   \u4f5c\u7528: Node.js \u5b9e\u73b0\u7684 <code>rm -rf</code> \u547d\u4ee4\uff0c\u7528\u4e8e\u9012\u5f52\u5730\u5220\u9664\u6587\u4ef6\u548c\u76ee\u5f55\u3002</p>\n</li>\n</ol>\n", 
      "date_published": "2025-05-26T14:37:24+00:00", 
      "title": "\u7edf\u8ba1\u57fa\u4e8e vue \u7684\u6c7d\u6c34\u97f3\u4e50\u7535\u8111\u7248\u7528\u4e86\u54ea\u4e9b\u5f00\u6e90\u7ec4\u4ef6", 
      "id": "https://www.v2ex.com/t/1134485"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/SonicKang", 
        "name": "SonicKang", 
        "avatar": "https://cdn.v2ex.com/gravatar/0b17963b5e0423a5362ba57b395ba300?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1134102", 
      "date_modified": "2025-05-26T11:05:44+00:00", 
      "content_html": "", 
      "date_published": "2025-05-24T16:43:13+00:00", 
      "title": "ant-design-vue \u597d\u50cf\u4e0d\u600e\u4e48\u7ef4\u62a4\u4e86\uff0c vue \u6709\u4ec0\u4e48\u6bd4\u8f83\u9760\u8c31\u7684 ui \u7ec4\u4ef6\u5e93\u5417", 
      "id": "https://www.v2ex.com/t/1134102"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/staceycomcn111", 
        "name": "staceycomcn111", 
        "avatar": "https://cdn.v2ex.com/gravatar/11713968139aeb326c975eaae00811f7?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1133539", 
      "date_modified": "2025-05-22T07:11:00+00:00", 
      "content_html": "\u6211\u5f00\u53d1\u4e86\u4e00\u4e2a\u4e8c\u6b21\u5c01\u88c5 element-plus \u7684\u7ec4\u4ef6\u5e93\uff0c\u6211\u60f3\u7ed9\u7ec4\u4ef6\u5e93\u8bbe\u7f6e\u4e00\u5957 element-plus \u7684\u4e3b\u9898\uff0c\u7136\u540e\u6211\u53c8\u60f3\u8ba9\u4f7f\u7528\u65b9\u914d\u7f6e element-plus \u4e3b\u9898\u65f6\uff0c\u6309\u7167 element-plus \u5b98\u7f51\u4e3b\u9898\u914d\u7f6e\u5c31\u884c\uff0c\u4e0d\u7528\u5173\u5fc3\u7ec4\u4ef6\u5e93\u7684\u4e3b\u9898\uff0c\u5e76\u4e14\u80fd\u591f\u8986\u76d6\u7ec4\u4ef6\u5e93\u7684\u4e3b\u9898\uff0c\u6709\u4ec0\u4e48\u597d\u7684\u529e\u6cd5\u5417\uff1f gpt \u4e5f\u6ca1\u5e2e\u5230\u6211", 
      "date_published": "2025-05-22T06:35:36+00:00", 
      "title": "\u5173\u4e8e\u4e8c\u6b21\u5c01\u88c5 element-plus \u7ec4\u4ef6\u5e93\u4e3b\u9898\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1133539"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/itchina110", 
        "name": "itchina110", 
        "avatar": "https://cdn.v2ex.com/avatar/2d5b/53f8/10411_large.png?m=1758701556"
      }, 
      "url": "https://www.v2ex.com/t/1130826", 
      "title": "\ud83c\udf89 VueConf 2025 \u6765\u5566\uff0c 7 \u6708 12 \u65e5\uff0c\u6df1\u5733\u89c1\uff01", 
      "id": "https://www.v2ex.com/t/1130826", 
      "date_published": "2025-05-10T02:52:47+00:00", 
      "content_html": "<p>\u6bcf\u4e00\u5e74\u7684 VueConf \uff0c\u90fd\u662f Vue \u5f00\u53d1\u8005\u4eec\u7684\u72c2\u6b22\uff01</p>\n<p>\u4eca\u5e74\uff0c\u6211\u4eec\u5c06\u518d\u6b21\u76f8\u805a\u5728\u6df1\u5733\uff08\u8001\u5730\u65b9\uff09\uff0c\u5171\u540c\u8fce\u6765 VueConf 2025 \uff01</p>\n<p>\ud83d\udc68\u200d\ud83d\udcbb\ud83d\udc69\u200d\ud83d\udcbb \u672c\u6b21\u5927\u4f1a\u5c06\u6709 11 \u4f4d\u6f14\u8bb2\u5609\u5bbe \u767b\u573a\u2014\u2014\u65e2\u6709\u5927\u5bb6\u719f\u6089\u7684\u8001\u670b\u53cb\uff0c\u4e5f\u6709\u9996\u6b21\u4eae\u76f8\u7684\u65b0\u9762\u5b54\u3002\u65e0\u8bba\u4f60\u662f Vue \u7684\u8d44\u6df1\u7231\u597d\u8005\uff0c\u8fd8\u662f\u521a\u5165\u95e8\u7684\u65b0\u624b\uff0c\u8fd9\u91cc\u90fd\u80fd\u627e\u5230\u5c5e\u4e8e\u4f60\u7684\u6280\u672f\u5e72\u8d27\u4e0e\u7075\u611f\u706b\u82b1\uff01</p>\n<p>\ud83d\udd25 \u4e3a\u4ec0\u4e48\u4e0d\u80fd\u9519\u8fc7 VueConf 2025 \uff1f</p>\n<ul>\n<li>\u7b2c\u4e00\u65f6\u95f4\u4e86\u89e3 Vue \u7684\u524d\u6cbf\u52a8\u6001</li>\n<li>\u4e0e\u793e\u533a\u5927\u795e\u9762\u5bf9\u9762\u4ea4\u6d41</li>\n<li>\u6536\u83b7\u5b9e\u6218\u7ecf\u9a8c\u4e0e\u843d\u5730\u6848\u4f8b</li>\n<li>\u611f\u53d7\u6d53\u6d53\u7684\u793e\u533a\u6c1b\u56f4\u4e0e\u70ed\u60c5</li>\n<li>\ud83c\udfab \u95e8\u7968\u6b63\u5728\u70ed\u552e\u4e2d\uff0c\u6570\u91cf\u6709\u9650\uff0c\u5148\u5230\u5148\u5f97\uff01</li>\n</ul>\n<p>\u7acb\u5373\u62a2\u7968 \ud83d\udc49 <a href=\"https://vueconf.cn/\" rel=\"nofollow\">https://vueconf.cn/</a></p>\n<p>\u8ba9\u6211\u4eec\u4e00\u8d77\u5728\u6df1\u5733\uff0c\u611f\u53d7 Vue \u7684\u9b45\u529b\uff01</p>\n<p>VueConf 2025 \uff0c\u4e0d\u89c1\u4e0d\u6563\uff01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Pursue9", 
        "name": "Pursue9", 
        "avatar": "https://cdn.v2ex.com/gravatar/07e8ae562be3b705b2e605f9f321bd74?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1128910", 
      "date_modified": "2025-04-29T09:34:13+00:00", 
      "content_html": "\u4eca\u5929\u6253\u5f00 npmjs \uff0c\u53d1\u73b0\u6700\u65b0\u7248\u672c\u7684 vue \u8fd8\u662f 3.5.13 \uff0c \u600e\u4e48 5 \u4e2a\u6708\u4e0d\u66f4\u65b0\u4e86\uff0c\u53d1\u751f\u4e86\u4ec0\u4e48<br /><br />\u5982\u56fe\uff1a<br /><br /><a target=\"_blank\" href=\"https://i.imgur.com/FgtKqDG.png\" rel=\"nofollow noopener\" target=\"_blank\"><img src=\"https://i.imgur.com/FgtKqDG.png\" class=\"embedded_image\" rel=\"noreferrer\"></a>", 
      "date_published": "2025-04-29T07:57:08+00:00", 
      "title": "vue \u600e\u4e48 5 \u4e2a\u6708\u4e0d\u66f4\u65b0\u4e86", 
      "id": "https://www.v2ex.com/t/1128910"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhengfan2016", 
        "name": "zhengfan2016", 
        "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1126963", 
      "date_modified": "2025-04-21T10:30:19+00:00", 
      "content_html": "<p>\u5982\u9898\uff0c\u5199\u4e86\u4e24\u4e2a\u7b80\u5355\u7684 vue demo \uff0c\u5b9e\u9645\u4e1a\u52a1\u4ee3\u7801\u6bd4\u8fd9\u4e2a\u590d\u6742\u5f88\u591a</p>\n<p>\u5355\u5411\u6570\u636e\u6d41\u7248\u7b80\u5355 demo<br/>\nlayouts.vue\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/pnZUs1N.png\"/>\nAComponent.vue\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/J6vhn3e.png\"/>\nBComponent.vue\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/hbao3f6.png\"/></p>\n<p>\u72b6\u6001\u7ba1\u7406\u6d41\u7248\u7b80\u5355 demo<br/>\nlayouts.vue\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/Xr2vj6j.png\"/>\nAComponent.vue\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/E5alo1k.png\"/>\nBComponent.vue\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/nJXZ0rG.png\"/></p>\n", 
      "date_published": "2025-04-21T04:07:37+00:00", 
      "title": "\u524d\u7aef props \u5355\u5411\u6570\u636e\u6d41 vs \u72b6\u6001\u7ba1\u7406\u6d41 \u4f60\u66f4\u80fd\u63a5\u53d7\u54ea\u79cd\u4ee3\u7801", 
      "id": "https://www.v2ex.com/t/1126963"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Mogugugugu", 
        "name": "Mogugugugu", 
        "avatar": "https://cdn.v2ex.com/avatar/d92e/7173/175311_large.png?m=1759030105"
      }, 
      "url": "https://www.v2ex.com/t/1126043", 
      "date_modified": "2025-04-17T01:14:10+00:00", 
      "content_html": "<p>\u73af\u5883\uff1aWindows 11 \u4e13\u4e1a\u5de5\u4f5c\u7ad9\u7248 \u7248\u672c\u53f7 24H2 / 23H2</p>\n<p>WSL \u7248\u672c\uff1a2.4.12.0<br/>\n\u5185\u6838\u7248\u672c\uff1a5.15.167.4-1<br/>\n\u7f51\u7edc\u6a21\u5f0f\uff1aMirrored    </p>\n<p>WSL2 \u5b89\u88c5\u7684\u662f Ubuntu 22.04.5 LTS</p>\n<p>\u76ee\u524d\u9047\u5230\u7684\u95ee\u9898\u662f \u5f00\u542f\u7cfb\u7edf\u4ee3\u7406\uff08\u65e0\u8bba\u662f Fiddler Everywhere \u6216\u8005 Clash Verge \uff09\u540e\uff0c\u4f1a\u51fa\u73b0\u4e00\u4e9b\u8bf7\u6c42\u7279\u522b\u7279\u522b\u6162\u7684\u60c5\u51b5\u3002</p>\n<p>\u6211\u662f\u4f7f\u7528 Cursor +WSL2 \u5f00\u53d1\u7684\u6a21\u5f0f\uff0c\u542f\u52a8\u4e00\u4e2a vue3 \u7684\u9879\u76ee\uff0c\u53d1\u73b0\u6bcf\u6b21\u53ea\u8981\u6253\u5f00\u7cfb\u7edf\u4ee3\u7406\uff0c\u5237\u65b0\u9875\u9762\u603b\u4f1a\u6709\u51e0\u4e2a\u8bf7\u6c42\u9700\u8981\u52a0\u8f7d\u51e0\u5341\u79d2\u751a\u81f3 1 \u5206\u949f\u4ee5\u4e0a\u624d\u80fd\u8bf7\u6c42\u5b8c\u6210\uff0c\u800c\u4e14 vue \u7684 hot reload \u4e5f\u5b8c\u5168\u6ca1\u529e\u6cd5\u7528\uff0c\u5361\u4f4f\u7684\u8bf7\u6c42\u5e76\u4e0d\u662f\u56fa\u5b9a\u7684\uff0c\u4f46\u6bcf\u6b21\u90fd\u4f1a\u968f\u673a\u5361\u4f4f\u51e0\u4e2a\u3002</p>\n<p>\u76ee\u524d\u6000\u7591\u7684\u70b9\uff0c\u5f3a\u5236\u5237\u65b0\u9875\u9762\u540e\uff0c\u5728\u5f00\u53d1\u6a21\u5f0f\u4e0b\uff0c\u53ef\u80fd\u9700\u8981\u52a0\u8f7d\u51e0\u5341\u4e0a\u767e\u4e2a\u6587\u4ef6\uff0c\u662f\u4e0d\u662f\u5927\u91cf\u6587\u4ef6\u52a0\u8f7d\u5bfc\u81f4\u7684\u8fd9\u4e2a\u95ee\u9898\uff1f</p>\n<p>\u6211\u5e94\u8be5\u5982\u4f55\u6392\u67e5\u548c\u89e3\u51b3\u95ee\u9898\uff1f\u6c42\u5927\u4f6c\u6307\u70b9\u3002</p>\n", 
      "date_published": "2025-04-17T01:12:13+00:00", 
      "title": "WSL2 + System Proxy \u540e\uff0c vite \u542f\u52a8\u7684\u9879\u76ee\uff0c\u968f\u673a\u4e00\u90e8\u5206\u7f51\u7edc\u8bf7\u6c42\u53d8\u5f97\u5de8\u6162\uff0c\u6c42\u6307\u5bfc\u3002", 
      "id": "https://www.v2ex.com/t/1126043"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ZGame", 
        "name": "ZGame", 
        "avatar": "https://cdn.v2ex.com/gravatar/f6f7e7b5ae8183a462163a3c473b8ba4?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1126031", 
      "date_modified": "2025-04-17T01:29:21+00:00", 
      "content_html": "<p>\u4f1a\u5728\u4e00\u4e9b\u8001\u7248\u672c\u7684 android tv \u4e0a\u767d\u5c4f\uff0c\u5404\u4f4d\u6709\u77e5\u9053\u89e3\u51b3\u529e\u6cd5\u5417</p>\n", 
      "date_published": "2025-04-17T00:36:27+00:00", 
      "title": "vue vite \u6253\u5305 \u767d\u5c4f\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1126031"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/villivateur", 
        "name": "villivateur", 
        "avatar": "https://cdn.v2ex.com/avatar/233d/26cb/273091_large.png?m=1768533916"
      }, 
      "url": "https://www.v2ex.com/t/1124212", 
      "date_modified": "2025-04-09T08:39:49+00:00", 
      "content_html": "<p>\u9879\u76ee\u5730\u5740 <a href=\"https://github.com/am32-firmware/am32-configurator\" rel=\"nofollow\">https://github.com/am32-firmware/am32-configurator</a></p>\n<p>\u6211\u5728 Ubuntu 20.04 \u548c Ubuntu 24.04 \u4e0a\uff0c\u7528 nodejs 18-23 \u90fd\u65e0\u6cd5\u6210\u529f build \uff0c\u5747\u62a5 typescript \u8bed\u6cd5\u9519\u8bef\u3002\u53ef\u89c1 <a href=\"https://github.com/am32-firmware/am32-configurator/issues/29\" rel=\"nofollow\">https://github.com/am32-firmware/am32-configurator/issues/29</a></p>\n<p>\u6211\u5e76\u4e0d\u60f3\u6539\u4ed6\u7684\u6e90\u7801\uff0c\u6211\u89c9\u5f97\u8fd9\u80af\u5b9a\u662f\u73af\u5883\u95ee\u9898\u3002</p>\n<p>\u6709\u8c01\u80fd\u5e2e\u5fd9\u89e3\u51b3\u73af\u5883\u95ee\u9898\uff0c\u544a\u8bc9\u6211\u4f60\u7684\u5404\u79cd\u5de5\u5177\u7248\u672c\u53f7\uff0c\u4ee5\u53ca\u652f\u4ed8\u5b9d / Paypal \u8d26\u53f7\uff0c\u6211\u53d1 88 \u5143\u7ea2\u5305\uff08\u4e0d\u591a\uff0c\u5e0c\u671b\u4e13\u4e1a\u7684 V \u53cb\u80fd\u5e2e\u4e2a\u5fd9\uff09</p>\n", 
      "date_published": "2025-04-09T05:44:04+00:00", 
      "title": "\u5916\u884c\u641e\u524d\u7aef\u6784\u5efa\u73af\u5883\u771f\u7684\u5f88\u5934\u75bc\uff0c\u6709\u8c01\u80fd\u5e2e\u5fd9\u641e\u5b9a\u8fd9\u4e2a Nuxt3 \u5f00\u6e90\u9879\u76ee\u7684\u6784\u5efa\uff1f\u6709\u507f\u3002", 
      "id": "https://www.v2ex.com/t/1124212"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/leaveeel", 
        "name": "leaveeel", 
        "avatar": "https://cdn.v2ex.com/gravatar/d61c8cc42010197ba09d19ae97874ca5?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1122466", 
      "title": "vue \u6307\u4ee4\u66f4\u65b0\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1122466", 
      "date_published": "2025-04-01T02:08:16+00:00", 
      "content_html": "\u6628\u5929\u4e0b\u73ed\u524d\u78b0\u5230\u4e00\u4e2a\u95ee\u9898\uff0c\u6211\u662f\u81ea\u5df1\u5199\u7684 loading \u7ec4\u4ef6\uff0c\u6ce8\u518c\u4e86\u5168\u5c40\u6307\u4ee4\u3002\u5728\u6307\u4ee4\u5f15\u7528\u7684\u65f6\u5019\u5982\u679c loading \u662f\u5bf9\u8c61\u5728\u66f4\u65b0\u5c5e\u6027\u65f6\u6307\u4ee4\u65b9\u6cd5 updated \u4e0d\u4f1a\u6355\u83b7\u5230\u4fee\u6539\uff0cv-loading \u7528\u6269\u5c55\u8fd0\u7b97\u6216\u8005\u5728 template \u91cc\u5f15\u7528\u5219\u80fd\u6b63\u786e\u66f4\u65b0\u72b6\u6001\u3002\u80fd\u5728\u54ea\u91cc\u505a\u4e9b\u8c03\u6574\u5417\uff1f<br /><br />![code]( <a target=\"_blank\" href=\"https://imgur.com/a/1GmgAgO\" rel=\"nofollow noopener\">https://imgur.com/a/1GmgAgO</a>)<br /><br />![direactive]( <a target=\"_blank\" href=\"https://imgur.com/a/mLmEw9I\" rel=\"nofollow noopener\">https://imgur.com/a/mLmEw9I</a>)<br /><br /><br /><br />\u53e6\u5916\uff0c\u4e0d\u786e\u5b9a\u81ea\u5df1\u5c01\u88c5\u901a\u7528\u7ec4\u4ef6\u7684\u5fc5\u8981\u6027\uff0c\u73b0\u5728\u7684\u662f C \u7aef\u9879\u76ee\u6709 ui \u8981\u6c42\u6ca1\u7528\u6a21\u677f\uff0c\u4f46\u4e5f\u6709\u50cf form \u3001table \u3001dialog \u7b49\u6a21\u5757\uff0c\u56e0\u4e3a\u5de5\u4f5c\u91cf\u4e0d\u5927\u6211\u73b0\u5728\u90fd\u5355\u72ec\u62bd\u51fa\u4e86\u7ec4\u4ef6\u5e93\u5199\u4e86\u6587\u6863\u3002\u8d8a\u4f18\u5316\u8d8a\u89c9\u5f97\u548c element \u7684\u7ec4\u4ef6\u529f\u80fd\u662f\u5dee\u4e0d\u591a\u7684\u53ea\u662f ui \u4e0d\u540c\uff0c\u5f15\u7528 element \u7136\u540e\u81ea\u5b9a\u4e49\u6837\u5f0f\uff0c\u4e0d\u6ee1\u8db3\u7684\u529f\u80fd\u4e5f\u53ef\u4ee5\u4e8c\u6b21\u5c01\u88c5\u81ea\u5df1\u6dfb\u52a0\uff0c\u6309\u9700\u52a0\u8f7d\u6253\u5305\u53ef\u80fd\u66f4\u65b9\u4fbf\uff1f"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhengfan2016", 
        "name": "zhengfan2016", 
        "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1121573", 
      "date_modified": "2025-03-27T10:30:29+00:00", 
      "content_html": "<p>\u5982\u9898\uff0c\u6211\u611f\u89c9 nuxt.js \u52a0\u5165 app route \u53ef\u4ee5\u5f88\u5927\u7a0b\u5ea6\u7684\u6539\u5584 vue sfc \u7684\u95ee\u9898</p>\n<p>\u65e7\u7684 page route \u7ed3\u6784\uff0c\u7ecf\u5e38 page \u548c component \u4e24\u4e2a\u76ee\u5f55\u6765\u56de\u8df3</p>\n<pre><code>- page\n - about.tsx\n- component # \u7eaf\u7ec4\u4ef6\n - componentA.tsx\n - componentB.tsx\n- container # \u548c\u4e1a\u52a1\u8026\u5408\u7684\u7ec4\u4ef6\n - componentC.tsx\n</code></pre>\n<p>app route \u6587\u4ef6\u7ed3\u6784\u7c7b\u4f3c\u8fd9\u6837\uff0c\u53ea\u5728 about \u9875\u9762\u4f7f\u7528\u7684\u7ec4\u4ef6\u5b8c\u5168\u53ef\u4ee5\u653e\u5728 about \u4e0b\uff0c\u5982\u679c\u51fa\u73b0\u591a\u9875\u9762\u590d\u7528\u7ec4\u4ef6\u518d\u5347\u7ea7\u5230 component \u6216\u8005 container \u76ee\u5f55</p>\n<pre><code>- page\n - about\n  - page.tsx\n  - componentA.tsx\n  - componentB.tsx\n  - componentC.tsx\n</code></pre>\n", 
      "date_published": "2025-03-27T09:20:14+00:00", 
      "title": "\u4e3a\u4ec0\u4e48 vue \u7684 nuxt.js \u4e0d\u8ddf\u8fdb nextjs \u7684 app route \u76ee\u5f55\u7ed3\u6784", 
      "id": "https://www.v2ex.com/t/1121573"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/tiRolin", 
        "name": "tiRolin", 
        "avatar": "https://cdn.v2ex.com/gravatar/34a55186afde13a3880f2970ecaeffdc?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1119152", 
      "title": "\u4f7f\u7528 Ant design X vue \u7ec4\u4ef6\u5e93\u600e\u4e48\u89e3\u51b3\u65e0\u6cd5\u6b63\u786e\u5c55\u793a MarkDown \u683c\u5f0f\u5b57\u7b26\u4e32\u7684\u95ee\u9898\uff1f", 
      "id": "https://www.v2ex.com/t/1119152", 
      "date_published": "2025-03-17T13:09:07+00:00", 
      "content_html": "<p>\u662f\u8fd9\u6837\u7684\uff0c\u6211\u6bd5\u8bbe\u641e\u4e86\u4e00\u4e2a AI \u5bf9\u8bdd\uff0c\u4f46\u662f\u5462\uff0c\u8fd9\u4e2a AI \u5bf9\u8bdd\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u662f markdown \u683c\u5f0f\uff0c\u4f46\u662f\u6211\u524d\u7aef\u65e0\u6cd5\u6b63\u786e\u89e3\u6790\uff0c\u6700\u540e\u5b57\u7b26\u4e32\u683c\u5f0f\u5c31\u4f1a\u53d8\u6210\u4e0b\u9762\u8fd9\u6837</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://rolin-typora.oss-cn-guangzhou.aliyuncs.com/ab6144e3c84323838e19456b87e5ed7.png\"/></p>\n<p>\u8fd9\u91cc\u663e\u7136\u6ca1\u6709\u6b63\u786e\u89e3\u6790\u51fa\u6837\u5f0f\u6765\uff0c\u6211\u8bd5\u4e86\u5f88\u591a\u65b9\u6cd5\u90fd\u6ca1\u80fd\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u5404\u4e2a ai \u95ee\u4e86\u4e2a\u904d\u4e86\uff0c\u7136\u540e\u53bb\u7f51\u4e0a\u627e\u4e86\u597d\u591a\u65b9\u6cd5\uff0c\u8fd8\u662f\u6ca1\u641e\u5b9a\uff0c\u4e0b\u9762\u662f\u6211\u8fd9\u4e2a\u9875\u9762\u7684\u6e90\u7801\uff0c\u6709\u6ca1\u6709\u5927\u4f6c\u5e2e\u6211\u770b\u770b\u5230\u5e95\u8be5\u600e\u4e48\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u554a\uff1f\u5c0f\u5f1f\u6211\u611f\u6fc0\u4e0d\u5c3d\u554a</p>\n<pre><code>&lt;template&gt;\n  &lt;div class=\"layout\"&gt;\n    &lt;div class=\"menu\"&gt;\n      &lt;RouterLink to=\"/\" class=\"re-home\"&gt;\u8fd4\u56de\u9996\u9875&lt;/RouterLink&gt;\n      &lt;!-- Logo --&gt;\n      &lt;div class=\"logo\"&gt;\n        &lt;img :src=\"logo\" draggable=\"false\" alt=\"logo\" class=\"logo-img\" /&gt;\n        &lt;span class=\"logo-span\"&gt;\u67d1\u6a58\u667a\u80fd\u95ee\u7b54&lt;/span&gt;\n      &lt;/div&gt;\n    &lt;/div&gt;\n    &lt;div class=\"chat\"&gt;\n      &lt;!-- \u6d88\u606f\u5217\u8868 --&gt;\n      &lt;Bubble.List\n        :items=\"messages\"\n        class=\"messages\"\n        style=\"flex: 1\"\n        :messageRender=\"renderMarkdown\"\n        :roles=\"{\n          ai: {\n            placement: 'start',\n            typing: { step: 5, interval: 20 },\n            styles: {\n              content: {\n                borderRadius: '16px'\n              }\n            }\n          },\n          local: {\n            placement: 'end',\n            variant: 'shadow'\n          }\n        }\"\n      /&gt;\n\n      &lt;!-- \u8f93\u5165\u6846 --&gt;\n      &lt;Sender\n        :value=\"content\"\n        class=\"sender\"\n        @submit=\"onSubmit\"\n        @update:value=\"(val) =&gt; (content = val)\"\n      /&gt;\n    &lt;/div&gt;\n  &lt;/div&gt;\n&lt;/template&gt;\n\n&lt;script setup&gt;\nimport { ref, h } from 'vue'\nimport { Conversations, Prompts, Sender, Bubble } from 'ant-design-x-vue'\nimport { Edit, Delete } from '@element-plus/icons-vue'\nimport reqAIChat from '@/api/chat/index'\nimport { message } from 'ant-design-vue'\nimport { ElMessage } from 'element-plus'\nimport logo from '@/assets/images/logo.png'\nimport { marked } from 'marked'\nimport hljs from 'highlight.js'\nimport 'highlight.js/styles/github.css'\nmarked.setOptions({\n  highlight: (code) =&gt; hljs.highlightAuto(code).value,\n  breaks: true,\n  gfm: true\n})\n\nmarked.use({\n  renderer: {\n    link(href, title, text) {\n      return `&lt;a href=\"${href}\" target=\"_blank\" rel=\"noopener\"&gt;${text}&lt;/a&gt;`\n    }\n  }\n})\nconst renderMarkdown = (content, item) =&gt; {\n  if (item?.isMarkdown) {\n    return h('Typography', { class: 'markdown-container' }, [\n      h('div', {\n        innerHTML: marked.parse(content), // Vue 3 \u76f4\u63a5\u6ce8\u5165 HTML\n        class: 'markdown-body'\n      })\n    ])\n  }\n  return content // \u666e\u901a\u6587\u672c\u76f4\u63a5\u8fd4\u56de\n}\nconst content = ref('')\n\nconst messages = ref([\n  {\n    key: '1',\n    content:\n      '## Markdown \u6d4b\u8bd5\\n[\u94fe\u63a5]( https://x.ant.design)1. **\u6a59\uff08 Orange \uff09**\uff1a\u5305\u62ec\u751c\u6a59\u548c\u9178\u6a59\uff0c\u751c\u6a59\u4e2d\u53c8\u5206\u4e3a\u8110\u6a59\u3001\u74e6\u4f26\u897f\u4e9a\u6a59\u7b49\u30022. **\u67d1\u6a58\uff08 Mandarin \uff09**\uff1a\u4e5f\u79f0\u4e3a\u871c\u6a58\uff0c\u5305\u62ec\u5404\u79cd\u5c0f\u578b\u3001\u6613\u5265\u76ae\u7684\u67d1\u6a58\u30023. **\u67da\u5b50\uff08 Pomelo \uff09**\uff1a\u4e5f\u79f0\u4e3a\u6587\u65e6\uff0c\u662f\u67d1\u6a58\u7c7b\u4e2d\u6700\u5927\u7684\u4e00\u79cd\u30024. **\u67e0\u6aac\uff08 Lemon \uff09**\uff1a\u4ee5\u5176\u9178\u5473\u548c\u9999\u6c14\u95fb\u540d\u30025. **\u9752\u67e0\uff08 Lime \uff09**\uff1a\u6bd4\u67e0\u6aac\u5c0f\uff0c\u9178\u5473\u8f83\u8f7b\u30026. **\u8461\u8404\u67da\uff08 Grapefruit \uff09**\uff1a\u5927\u5c0f\u548c\u5f62\u72b6\u7c7b\u4f3c\u8461\u8404\uff0c\u5473\u9053\u53ef\u4ee5\u662f\u751c\u7684\u4e5f\u53ef\u4ee5\u662f\u9178\u7684\u3002',\n    role: 'ai',\n    variant: 'primary',\n    isMarkdown: true\n  }\n])\nconst activeKey = ref('0')\nconst conversationsItems = ref(\n  Array.from({ length: 2 }).map((_, index) =&gt; ({\n    key: `item${index + 1}`,\n    label: `\u672a\u547d\u540d\u5bf9\u8bdd ${index + 1}`\n  }))\n)\nconst onSubmit = async (nextContent) =&gt; {\n  if (!nextContent) return\n  messages.value.push({\n    key: `${messages.value.length + 1}`,\n    content: nextContent,\n    role: 'local',\n    variant: 'shadow'\n  })\n  content.value = ''\n  try {\n    const res = await reqAIChat({ message: nextContent })\n    if (!res) {\n      ElMessage({\n        message: '\u8bf7\u6c42\u5931\u8d25',\n        type: 'error'\n      })\n      return\n    }\n\n    messages.value.push({\n      key: `${messages.value.length + 1}`,\n      content: res,\n      role: 'ai',\n      variant: 'primary',\n      isMarkdown: true\n    })\n  } catch (error) {\n    ElMessage({\n      message: '\u8bf7\u6c42\u51fa\u9519',\n      type: 'error'\n    })\n  }\n}\nconst onAddConversation = () =&gt; {\n  conversationsItems.value.push({\n    key: `${conversationsItems.value.length + 1}`,\n    label: `\u672a\u547d\u540d\u5bf9\u8bdd${conversationsItems.value.length + 1}`\n  })\n  activeKey.value = `${conversationsItems.value.length + 1}`\n}\n\nconst menuConfig = (conversation) =&gt; {\n  return {\n    items: [\n      {\n        label: '\u7f16\u8f91',\n        key: 'edit',\n        icon: () =&gt; h(Edit)\n      },\n      {\n        label: '\u5220\u9664',\n        key: 'delete',\n        icon: () =&gt; h(Delete),\n        danger: true\n      }\n    ],\n    onClick: (menuInfo) =&gt; {\n      message.info(`\u70b9\u51fb ${conversation.key} - ${menuInfo.key}`)\n    }\n  }\n}\n&lt;/script&gt;\n\n&lt;style scoped&gt;\n.markdown-body {\n  padding: 12px 16px;\n  line-height: 1.7;\n\n  /* \u5fc5\u987b\u7ee7\u627f\u5b57\u4f53 */\n  font-family: inherit;\n\n  /* \u4ee3\u7801\u5757\u6837\u5f0f */\n  pre {\n    padding: 12px;\n    border-radius: 8px;\n    background: #f6f8fa !important;\n  }\n\n  code {\n    font-family: 'SFMono-Regular', Consolas, monospace;\n  }\n}\n.markdown-body {\n  line-height: 1.6;\n  color: #333;\n}\n\n.re-home {\n  display: inline-block;\n  padding: 10px 20px;\n  margin: 12px;\n  background: #ffa500;\n  color: white;\n  text-decoration: none;\n  border-radius: 4px;\n  font-size: 14px;\n  font-weight: bold;\n  text-align: center;\n  transition: background-color 0.3s ease;\n}\n.layout {\n  width: 100%;\n  min-width: 1000px;\n  height: 722px;\n  display: flex;\n  background: #fff;\n  font-family: AlibabaPuHuiTi, sans-serif;\n}\n\n.menu {\n  padding: 24px 0;\n  /* background: #fff; */\n  width: 280px;\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n  background: rgba(245, 245, 245, 0.5);\n}\n\n.logo {\n  display: flex;\n  height: 72px;\n  align-items: center;\n  justify-content: start;\n  padding: 0 24px;\n}\n\n.logo-img {\n  width: 24px;\n  height: 24px;\n}\n\n.logo-span {\n  margin: 0 8px;\n  font-weight: bold;\n  color: #333;\n  font-size: 16px;\n}\n\n.add-btn {\n  background: #1677ff0f;\n  border: 1px solid #1677ff34;\n  width: calc(100% - 24px);\n  cursor: pointer;\n  margin: 0 12px 24px 12px;\n  font-size: 14px;\n  height: 32px;\n  padding: 4px 15px;\n  border-radius: 6px;\n}\n.add-btn:hover {\n  color: #69b1ff;\n}\n\n.chat {\n  height: 100%;\n  width: 100%;\n  max-width: 700px;\n  margin: 0 auto;\n  box-sizing: border-box;\n  display: flex;\n  flex-direction: column;\n  padding: 24px;\n  gap: 16px;\n}\n&lt;/style&gt;\n\n</code></pre>\n<p>\u8fd9\u91cc content \u91cc\u5df2\u7ecf\u6709\u4e00\u4e9b\u5199\u6b7b\u7684\u5185\u5bb9\u4e86\uff0c\u90a3\u662f\u6211\u7528\u6765\u6d4b\u8bd5\u7684\uff0c\u5c31\u662f\u60f3\u7740\u5982\u679c\u53ef\u4ee5\u89e3\u6790\u4e86\u90a3\u4e48\u8fd9\u4e9b\u5199\u6b7b\u7684\u5185\u5bb9\u662f\u4f1a\u88ab\u6b63\u786e\u89e3\u6790\u4e0a\u53bb\u7684\uff0c\u4f46\u662f\u6211\u770b\u4e86\u597d\u4e45\u90fd\u6ca1\u641e\u61c2\u8be5\u600e\u4e48\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u6240\u4ee5\u8fd9\u4e2a\u5199\u6b7b\u7684\u5185\u5bb9\u4e5f\u4e00\u76f4\u7559\u7740\u4e86</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/EricYuan1", 
        "name": "EricYuan1", 
        "avatar": "https://cdn.v2ex.com/avatar/b331/dc8e/651160_large.png?m=1767800073"
      }, 
      "url": "https://www.v2ex.com/t/1117419", 
      "title": "shadcn\uff0c shadcnvue \u5168\u662f\u57fa\u4e8e tailwindcss \u7684\uff0c\u6ca1\u6709\u57fa\u4e8e unocss \u7684\u561b\uff1f", 
      "id": "https://www.v2ex.com/t/1117419", 
      "date_published": "2025-03-11T00:45:14+00:00", 
      "content_html": "\u4ffa\u6240\u77e5\u9053\u7684\u4e00\u4e2a\u5e93\u662f naive UI \uff0c\u4f46\u662f\u4e0d\u662f shadcn \u90a3\u79cd\u5f62\u5f0f\u3002\u5982\u679c\u60f3\u8981\u4f7f\u7528 shadcn \u7684\u540c\u65f6\u4f7f\u7528 unocss \u9700\u8981\u5b89\u88c5\u63d2\u4ef6\uff0c\u4f46\u662f\u8ba9\u6211\u6076\u5fc3\u7684\u662f\u8fd8\u5fc5\u987b\u5f97\u5148\u5b89\u88c5\u4e00\u6ce2 tw\u2026."
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jenson47", 
        "name": "jenson47", 
        "avatar": "https://cdn.v2ex.com/gravatar/949831cfa2cee366448982baa1fb6c95?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1116274", 
      "title": "vue3 \u7684 template typescript \u652f\u6301\u7a00\u70c2\uff0c\u9000\u5751", 
      "id": "https://www.v2ex.com/t/1116274", 
      "date_published": "2025-03-06T02:46:15+00:00", 
      "content_html": "<p>\u622a\u6b62\u76ee\u524d vue3 \u5df2\u7ecf\u53d1\u5e03 4 \u5e74\u591a\u4e86\uff0c\u7528\u4e86\u51e0\u4e2a\u6708 vue3 \uff0ctemplate \u7684 typescript \u652f\u6301\u771f\u7684\u7a00\u70c2\u3002</p>\n<p>\u4e0d\u5439\u4e0d\u9ed1\uff0c\u5982\u679c\u8bf4 tsx \u7684 typescript \u652f\u6301\u8ddf vue3 \u7684 template \u652f\u6301\u5dee\u8ddd\u4e0d\u5927\uff0c\u4e5f\u5c31\u4e0d\u8bf4\u4e86\uff0ctsc \u68c0\u67e5 template \u65e0\u6cd5\u63d0\u793a\u7ec4\u4ef6\u4e0d\u5b58\u5728\u7684\u5c5e\u6027\uff0c\u5b98\u65b9 vscode \u63d2\u4ef6 vue official 2.2.8 \u7248\u672c \u7528\u8d77\u6765\u66f4\u662f\u8ba9\u4eba\u86cb\u75bc\uff0c\u7ec4\u4ef6\u81ea\u52a8\u8bc6\u522b\u98d8\u5ffd\u4e0d\u5b9a\uff0c\u9ad8\u4eae\u4e5f\u662f\u98d8\u5ffd\u4e0d\u5b9a\uff0c\u5c31\u8fde script \u90e8\u5206\u63d0\u793a\u4e5f\u4f1a\u51fa\u9519\u3002</p>\n<p>\u4e5f\u8bb8\u4f60\u4f1a\u8bf4\u91cd\u542f\u8bd5\u8bd5\uff0c\u65e0\u6cd5\u81ea\u52a8\u5bfc\u5165\uff0c\u624b\u52a8\u5bfc\u5165\u5440\uff0ctemplate \u652f\u6301\u4e0d\u884c\uff0c\u4f60\u4e5f\u53ef\u4ee5\u7528 tsx \u5199\u5440</p>\n<p>\u4e5f\u6709\u4eba\u8bf4\uff0c\u6211\u5199\u4ee3\u7801\u5c31\u662f\u4e00\u628a\u68ad\uff0c\u590d\u5236\u7c98\u8d34\uff0c\u4ec0\u4e48 typescript \uff0c\u76f4\u63a5 anyscript \u548c unkonwscript \u8d70\u8d77</p>\n<p>\u6211\u53ea\u80fd\u8bf4\u5bf9\u5bf9\u5bf9</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/sunorg", 
        "name": "sunorg", 
        "avatar": "https://cdn.v2ex.com/gravatar/f9fd0e47a762ec045123ad8879a63221?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1116262", 
      "date_modified": "2025-03-06T02:14:21+00:00", 
      "content_html": "\u6709\u4e00\u4e2a\u9700\u6c42\uff0c\u9ad8\u4e86\u5feb 2 \u5929\uff0c\u6ca1\u641e\u5b9a\uff0c\u8bf7\u6559\u4e0b\u8fbe\u4eba\u3002<br /><br />\u9700\u6c42\uff1a<br />const  data=ref({<br />\tid:xxx,ref:\u5173\u8054\u67d0\u4e2a\u7ec4\u4ef6\uff0cchildren:[<br />       \tid:xxx,ref:\u5173\u8054\u67d0\u4e2a\u7ec4\u4ef6\uff0cchildren:[]<br />        id:xxx,ref:\u5173\u8054\u67d0\u4e2a\u7ec4\u4ef6\uff0cchildren:[]<br />    ]<br />})<br /><br />------------<br />\u5c1d\u8bd5 1: \u52a8\u6001\u6e32\u67d3\uff1a<br />     &lt;KeepAlive&gt;<br />              &lt;component :is=\"\u67d0 item.ref\" /&gt;<br />     &lt;/KeepAlive&gt;<br /><br />\u5c1d\u8bd5 2\uff1a\u5168\u5c40\u6ce8\u518c\u4e00\u4e2a\u7ec4\u4ef6\u6c60\uff0c\u5b58\u50a8\u5148\u5b9e\u4f8b\u5316\u7684\u7ec4\u4ef6\uff0c\u7136\u540e\u901a\u8fc7\u7d22\u5f15\u65b9\u5f0f\u6765\u6302\u8f7d<br />\t\t\t&lt;KeepAlive&gt;<br />              &lt;DirectiveWrapper<br />                :component-id=\"\u67d0 item.componentId\" <br />                :component=\"getComponentById(\u67d0 item.componentId)\"<br />              /&gt;<br />            &lt;/KeepAlive&gt;<br /><br /><br /><br />\u95ee\u9898\uff1a<br />     \u5f53 ref \u53ef\u4ee5\u5728 data \u91cc\u7684\u5b50\u7236\u8282\u70b9\u4ea4\u6362\u65f6\uff0c\u7ec4\u4ef6\u4f1a\u88ab\u91cd\u65b0\u6e32\u67d3\u521d\u59cb\u5316\uff0c\u4e22\u5931\u4e86\u72b6\u6001\u3002 \u4f7f\u7528\u8fc7\uff0c\u56e0\u4e3a\u6ca1\u6709\u5171\u4eab\u6570\u636e\u7684\u9700\u6c42\uff0c\u4e5f\u5c1d\u8bd5\u8fc7\u76f4\u63a5\u5b58\u7ec4\u4ef6\u72b6\u6001\u7684\uff0c\u4f46\u8be5\u4e22\u5931\u8fd8\u662f\u4e22\u5931\u3002<br /><br /><br />\u9700\u8981\u5927\u5bb6\u7ed9\u70b9\u601d\u8def\u65b9\u5411\uff0c\u9700\u8981\u89e3\u51b3\u6307\u5b9a\u7ec4\u4ef6\u4e0d\u88ab\u91cd\u65b0\u6e32\u67d3\u3002", 
      "date_published": "2025-03-06T02:14:02+00:00", 
      "title": "\u7ec4\u4ef6\u6301\u4e45\u5316\u7684\u95ee\u9898\u8bf7\u6559", 
      "id": "https://www.v2ex.com/t/1116262"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/chenliangngng", 
        "name": "chenliangngng", 
        "avatar": "https://cdn.v2ex.com/gravatar/780a5460ba7bbd960d7046fa4ad1e463?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1115381", 
      "title": "Vue3 tsx \u5e94\u8be5\u7528 props \u8fd8\u662f emit \u4f20\u9012\u4e8b\u4ef6\uff1f", 
      "id": "https://www.v2ex.com/t/1115381", 
      "date_published": "2025-03-03T01:55:19+00:00", 
      "content_html": "<p>\u672c\u4eba\u4e4b\u524d\u7531\u4e8e\u957f\u671f\u5199 react \uff0c\u66f4\u503e\u5411\u4e8e props \u6a21\u5f0f\u4e5f\u5c31\u662f\u76f4\u63a5\u628a onChange \u4f5c\u4e3a\u53c2\u6570\uff0c\u4f46\u5e73\u65f6\u8fd8\u662f\u8001\u8001\u5b9e\u5b9e\u9047\u5230\u4e8b\u4ef6\u51fd\u6570\u5c31\u7528 emit \u4f20\u9012</p>\n<p>\u6700\u8fd1 ai \u544a\u8bc9\u6211 props \u4e0d\u662f\u6700\u4f73\u5b9e\u8df5\uff0cemit \u662f\u6700\u4f73\u5b9e\u8df5\uff0c\u53ef\u6211\u7528 cursor \u7ed9\u6211\u751f\u6210\u7684\u4ee3\u7801\u6e05\u4e00\u8272\u90fd\u662f props \u6a21\u5f0f\uff0c\u7ed9\u6211\u6574\u4e0d\u4f1a\u4e86</p>\n<p>\u5176\u5b9e\u6211\u611f\u89c9\u7528 Vue3 tsx \u7684\u8bdd\uff0c\u4ec0\u4e48 v-model \u548c emit \u8fd9\u4e9b\u90fd\u6ca1\u5fc5\u8981\u4e86\uff0c\u548c react \u4e00\u6837 props \u5230\u5e95\u5c31\u597d\u4e86</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/tlerbao", 
        "name": "tlerbao", 
        "avatar": "https://cdn.v2ex.com/avatar/9deb/c5d9/421999_large.png?m=1745547699"
      }, 
      "url": "https://www.v2ex.com/t/1109294", 
      "date_modified": "2025-02-06T23:56:31+00:00", 
      "content_html": "<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/P0nItO4.png\"/> </p>\n<p>\u54ea\u4f4d\u5927\u4f6c\u7ed9\u6211\u8bb2\u8bb2\uff0c\u8fd9\u91cc\u9762\u7684\u539f\u7406</p>\n<pre><code> &lt;Hello :title=\"\" :item=\"\" /&gt;\n</code></pre>\n<p>\u8fd9\u4e2a T \u662f\u6839\u636e\u7b2c\u4e00\u4e2a Prop \u53c2\u6570\u63a8\u5012\u7684\uff1f</p>\n<p>\u6839\u636e\u987a\u5e8f\u6765\u7684\uff1f\u8fd8\u662f\u600e\u6837\uff1f\u5f53\u6709\u591a\u4e2a Prop \u65f6\uff0c</p>\n<p>\u662f\u6839\u636e\u8c03\u7528\u7ec4\u4ef6\u5199\u7684 Prop \u987a\u5e8f\uff0c\u8fd8\u662f\u5b9a\u4e49 Prop \u987a\u5e8f\uff0c\u8fd8\u662f\u600e\u6837\uff1f</p>\n<p>\u5b8c\u5168\u61f5\u903c\u4e2d\uff1f</p>\n", 
      "date_published": "2025-02-06T03:58:18+00:00", 
      "title": "\u8bdd\u8bf4\u6211\u600e\u4e48\u5c31\u61f5\u903c\u4e86\u5462\uff1f Vue3 \u7684\u6cdb\u578b\u7ec4\u4ef6 generic=\"T\"\uff1f", 
      "id": "https://www.v2ex.com/t/1109294"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jenson47", 
        "name": "jenson47", 
        "avatar": "https://cdn.v2ex.com/gravatar/949831cfa2cee366448982baa1fb6c95?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1108526", 
      "title": "\u8bf7\u6559 Vue3 + typescript \u6700\u4f73\u5b9e\u8df5\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1108526", 
      "date_published": "2025-02-01T09:10:42+00:00", 
      "content_html": "<p>\u5982\u9898\uff0c\u6211\u53d1\u73b0 vscode \u4e0b\u4f7f\u7528 vue \u5b98\u65b9\u63d2\u4ef6\uff0c\u4f7f\u7528 vue3+typescript \u53bb\u5f00\u53d1\uff0c\u6211\u53d1\u73b0\u5728 template \u4e0a typescript \u662f\u6ca1\u6548\u679c\u3002\n\u6bd4\u5982</p>\n<ol>\n<li>\u7b2c\u4e09\u65b9\u6269\u5c55\u81ea\u52a8\u5f15\u5165</li>\n<li>\u5c5e\u6027\u81ea\u52a8\u8bc6\u522b [\u770b\u60c5\u51b5] </li>\n<li>\u4e0d\u5b58\u5728\u5c5e\u6027\u6216\u65b9\u6cd5\u65e0\u6cd5\u63d0\u793a\u9519\u8bef\uff0c\u603b\u4e4b typescript \u4e0d\u751f\u6548</li>\n<li>\u5b98\u65b9\u63d2\u4ef6\u5076\u5c14\u98d8</li>\n</ol>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jadelike", 
        "name": "jadelike", 
        "avatar": "https://cdn.v2ex.com/avatar/026d/6aa0/444925_large.png?m=1752823699"
      }, 
      "url": "https://www.v2ex.com/t/1103248", 
      "title": "vue3 \u7eaf\u524d\u7aef\u5982\u4f55\u751f\u6210 icns \u683c\u5f0f\u56fe\u7247\uff1f", 
      "id": "https://www.v2ex.com/t/1103248", 
      "date_published": "2025-01-07T08:53:53+00:00", 
      "content_html": "<p><code> </code>\u5982\u9898\uff0c\u6211\u73b0\u5728\u5728\u505a\u4e00\u4e2a\u9879\u76ee\uff0c\u6211\u662f Windows \uff0c\u6280\u672f\u6808\u662f VITE+VUE3+TS \uff0c\u4e0a\u4f20\u4e5f\u6ca1\u7528\u540e\u7aef\uff0c\u76f4\u63a5\u751f\u6210 blob \u683c\u5f0f\u94fe\u63a5\uff0c\uff08\u53ea\u8ba9\u4e0a\u4f20 svg \u683c\u5f0f\u56fe\u7247\uff09\u5982\uff1ablob:http://localhost:5173/0c4ef255-bec5-4377-9596-45a5a4d5501e\n<br/><br/>\n<code> </code>\u6211\u73b0\u5728\u5df2\u7ecf\u5b9e\u73b0\u4e86\u8f6c\u6362 png \u548c ico \u683c\u5f0f\u56fe\u7247\uff0c\u4f46\u8f6c\u6362 icns \u4e00\u76f4\u6ca1\u627e\u5230\u5982\u4f55\u5b9e\u73b0\uff0c\u627e\u5230\u4e00\u4e2a png2icons \uff0c\u4f46\u4e00\u76f4\u6709\u83ab\u540d\u5176\u5999\u7684\u62a5\u9519\uff0c\u6211\u8bd5\u4e86\u597d\u4e45\u4e5f\u4e0d\u884c\uff0c\u7279\u6765\u6c42\u52a9\u4e86<br/><br/>\n<code> </code>\u7b80\u5355\u9644\u4e00\u4e0b\u6211\u8f6c\u6362\u7684\u4ee3\u7801<br/><br/></p>\n<pre><code>console.log(\"Processing images...:\", props.uploadedImage);\n    // blob:http://localhost:5173/0c4ef255-bec5-4377-9596-45a5a4d5501e\n    const image = await loadImage(props.uploadedImage);\n    const smallImage: any = await resizeImage(image, 32, 32, \"png\"); // \u8c03\u6574\u4e3a\u8f93\u51fa png \u683c\u5f0f\n</code></pre>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/MRlaopeng", 
        "name": "MRlaopeng", 
        "avatar": "https://cdn.v2ex.com/gravatar/e915aefc606d734635fad82f240a5455?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1102382", 
      "date_modified": "2025-01-03T11:52:26+00:00", 
      "content_html": "<p>\u6ca1\u5199\u8fc7\u524d\u7aef\u7684\u540e\u7aef\u4eba,\n\u4eca\u5929\u521d\u5c1d vue \u6ca1\u60f3\u5230\u8fd9\u4e48\u65b9\u4fbf\n\u76f4\u63a5 npm create vue@latest \u5c31\u53ef\u4ee5\u521b\u5efa\u597d\u76ee\u5f55\u7ed3\u6784\n\u90a3\u5c82\u4e0d\u662f\u5c31\u5f97\u6309\u5b98\u65b9\u7684\u6765\u4e86?</p>\n", 
      "date_published": "2025-01-03T11:44:25+00:00", 
      "title": "\u4f60\u4eec\u5199 vue \u4e00\u5b9a\u662f\u6309\u7167 vue \u7684\u811a\u624b\u67b6\u7684\u76ee\u5f55\u7ed3\u6784\u6765\u5199\u5417?", 
      "id": "https://www.v2ex.com/t/1102382"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhengfan2016", 
        "name": "zhengfan2016", 
        "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1101860", 
      "date_modified": "2025-01-02T06:18:54+00:00", 
      "content_html": "<p>\u5982\u9898\uff0cdemo \u4ee3\u7801\u5982\u4e0b\uff0c\u6a21\u62df\u8bfb\u53d6\u540e\u7aef api \u8fd4\u56de\uff1a\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/5fZtim7.png\"/>\n<img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://i.imgur.com/6lpoilm.png\"/>\n\u4f7f\u7528 data.value \u53ef\u4ee5\u83b7\u53d6\u5230\u6570\u636e\uff0c\u4f46\u662f\u4f7f\u7528 list?.value \u83b7\u53d6\u4e0d\u5230\u6570\u636e\uff0c\u95ee\u4e86 gpt \u4e5f\u95ee\u4e0d\u51fa\u5982\u4f55\u4f7f\u7528 <code>const {data:list}</code> \u5f00\u5934\u7684\u4ee3\u7801\u8fdb\u884c\u89e3\u6784\uff0c\u96be\u9053 ref \u5c31\u6ca1\u6cd5\u89e3\u6784\u5417</p>\n", 
      "date_published": "2025-01-01T15:45:30+00:00", 
      "title": "\u5927\u4f6c\u4eec\uff0c vue3 \u65b0\u4eba\u6c42\u6559\uff0c\u5c31\u6ca1\u6709\u529e\u6cd5\u5bf9 ref \u5305\u88c5\u7684 obj \u8fdb\u884c\u89e3\u6784\u5417", 
      "id": "https://www.v2ex.com/t/1101860"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhuoyue100", 
        "name": "zhuoyue100", 
        "avatar": "https://cdn.v2ex.com/gravatar/dd65ed9aec8a3f3b86e02c7c5d3cdab5?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1101229", 
      "date_modified": "2024-12-30T04:08:36+00:00", 
      "content_html": "<div>\n</div>\n<p>const pagination = reactive({\npage: 1,\ntotal: 9,\npage_size: 3\n})\nconst showChart = computed(() =&gt; (i: number) =&gt; {\nlet offset = (pagination.page-1)*pagination.page_size\nconsole.log(i, i &gt; offset &amp;&amp; i &lt;= offset+pagination.page_size)\nreturn i &gt; offset &amp;&amp; i &lt;= offset+pagination.page_size\n})</p>\n<p>\u9996\u6b21\u5c55\u793a\u6b63\u786e\uff0c\u70b9\u51fb\u5206\u9875\u6309\u94ae\u540e\u4e0d\u5207\u6362\uff0c\u8fd9\u4e2a\u600e\u4e48\u5b9e\u73b0?</p>\n", 
      "date_published": "2024-12-30T04:01:52+00:00", 
      "title": "vue3 \u4e2d v-show \u5206\u9875\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1101229"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Dewchame", 
        "name": "Dewchame", 
        "avatar": "https://cdn.v2ex.com/avatar/0de0/4844/590725_large.png?m=1745584257"
      }, 
      "url": "https://www.v2ex.com/t/1100740", 
      "date_modified": "2024-12-28T01:22:47+00:00", 
      "content_html": "", 
      "date_published": "2024-12-27T08:03:53+00:00", 
      "title": "el-table \u4f7f\u7528 expand \u5c55\u5f00\u5012\u6570\u7b2c\u4e8c\u884c\u65f6\uff0c\u6700\u4e0b\u9762\u4e00\u884c\u4f1a\u9519\u4e71\uff0c\u6211\u628a\u7b2c\u4e00\u5217\u7684\u6570\u636e\u8fdb\u884c\u4e86\u5408\u5e76\uff0c\u6c42\u95ee\u5927\u5bb6\u600e\u4e48\u89e3\u51b3\u5440\uff1f", 
      "id": "https://www.v2ex.com/t/1100740"
    }
  ]
}