{ "version": "https://jsonfeed.org/version/1", "title": "Vue.js", "description": "The Progressive Javascript Framework", "home_page_url": "go/vue", "feed_url": "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": "member/Whbbit1999", "name": "Whbbit1999", "avatar": "https://cdn.v2ex.com/avatar/6671/a5d2/634904_large.png?m=1744617567" }, "url": "t/1199178", "title": "shadcn-vue-admin \u5df2\u5347\u7ea7\u81f3 vite8", "id": "t/1199178", "date_published": "2026-03-18T05:12:26+00:00", "content_html": "

\u6211\u628a shadcn-vue-admin \u5347\u7ea7\u5230\u4e86 Vite 8

\n

\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

\n

shadcn-vue-admin \u6280\u672f\u6808:

\n\n

\u4ed3\u5e93

\n" }, { "author": { "url": "member/jsiwa", "name": "jsiwa", "avatar": "https://cdn.v2ex.com/avatar/7436/38f3/147448_large.png?m=1772074003" }, "url": "t/1189625", "title": "\u6211\u771f\u7684\u8981\u653e\u5f03 Vue\uff0c\u6539\u7528 React \u4e86", "id": "t/1189625", "date_published": "2026-01-30T11:40:31+00:00", "content_html": "

\u56e0\u4e3a AI \u5df2\u7ecf\u5f7b\u5e95\u6539\u53d8\u4e86\u6211\u5199\u4ee3\u7801\u3001\u505a\u4ea7\u54c1\u7684\u65b9\u5f0f\u3002

\n

\u4e3e\u4e2a\u6700\u8fd1\u975e\u5e38\u771f\u5b9e\u7684\u4f8b\u5b50\uff1a\n\u6211\u7528 AI \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\u3002 https://openclawai.net/

\n

\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

\n

\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

\n

\u800c\u7528 AI \u5199 React\uff1a

\n\n

\u66f4\u5173\u952e\u7684\u4e00\u70b9\u662f\uff1a\n\u6211\u5bf9 React \u5176\u5b9e\u5e76\u4e0d\u7b97\u719f\u3002

\n

\u4f46\u8fd9\u4ef6\u4e8b\u5df2\u7ecf\u4e0d\u518d\u91cd\u8981\u4e86\u3002

\n" }, { "author": { "url": "member/zhengfan2016", "name": "zhengfan2016", "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro" }, "url": "t/1179892", "date_modified": "2025-12-19T00:28:43+00:00", "content_html": "

\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

\n", "date_published": "2025-12-19T00:28:14+00:00", "title": "\u8bf7\u95ee vue3 \u7684 onclick \u548c @click \u6709\u4ec0\u4e48\u533a\u522b", "id": "t/1179892" }, { "author": { "url": "member/unt", "name": "unt", "avatar": "https://cdn.v2ex.com/avatar/791c/37c0/562494_large.png?m=1756623194" }, "url": "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": "t/1179169" }, { "author": { "url": "member/zedcoding", "name": "zedcoding", "avatar": "https://cdn.v2ex.com/avatar/9df2/ed52/473975_large.png?m=1593411274" }, "url": "t/1175912", "date_modified": "2025-11-30T03:16:39+00:00", "content_html": "

\"\"\n\u56fe 1 \u662f\u9886\u5bfc\u60f3\u8981\u7684\u6548\u679c \u6765\u81ea\u4ed6\u5bb6 https://cms-docs.shengyc.com/cms/tutorial/

\n

\"\"\n\u56fe 2 \u662f\u81ea\u5df1\u627e\u5230\u7684\u5f00\u6e90 goView https://gitee.com/dromara/go-view

\n

\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~

\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": "t/1175912" }, { "author": { "url": "member/seakingii", "name": "seakingii", "avatar": "https://cdn.v2ex.com/gravatar/576c9d4f1082ef624e59637e2030cd2b?s=73&d=retro" }, "url": "t/1174548", "title": "\u6709\u6ca1\u6709\u5927\u4f6c\u5728\u6b63\u5f0f\u9879\u76ee\u91cc\u4f7f\u7528 rolldown \u4e86", "id": "t/1174548", "date_published": "2025-11-23T14:17:15+00:00", "content_html": "

\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...

\n" }, { "author": { "url": "member/mizuhashi", "name": "mizuhashi", "avatar": "https://cdn.v2ex.com/avatar/8854/0e78/157347_large.png?m=1774621158" }, "url": "t/1172678", "date_modified": "2025-11-13T22:37:58+00:00", "content_html": "

\u6211\u4e0d\u78ba\u5b9a\u9019\u662f\u5426\u662f\u666e\u904d\u7684\u7528\u6cd5\uff0c\u4f46\u6211\u767c\u73fe reactive \u975e\u5e38\u9069\u5408\u7528\u4f86\u5efa\u7acb\u985e\u4f3c OO \u7684\u5c01\u88dd\u3002

\n

reactive\u6703\u628a refs \u5c55\u5e73\uff0c\u6240\u4ee5\u53ef\u4ee5\u9019\u9ebc\u5beb\uff1a

\n
function useClient() {\n const name = ref('Alice')\n const greeting = computed(() => `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
\n

\u5728 component \u88cf\uff1a

\n
const client = useClient()\nclient.greeting // => 'Hello Alice'\n\nclient.updateName('Bob')\nclient.greeting // => 'Hello Bob'\n
\n

\u73fe\u5728client\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

\n

\u6211\u5011\u4e5f\u53ef\u4ee5\u7d44\u5408\u9019\u4e9b\u5c0d\u8c61\u548c\u4fdd\u7559\u56ae\u61c9\u6027\uff1a

\n
function useOrder(client: ReturnType<typeof useClient>) {\n const createdBy = computed(() => `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 // => 'Created by Alice'\nclient.updateName('Bob')\norder.createdBy // => 'Created by Bob'\n
\n

\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

\n

\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

\n
async function useOrder(client: ReturnType<typeof useClient>) {\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
\n

\u73fe\u5728\u7d66\u5b9a\u4e00\u500b order \uff0c\u6211\u5011\u53ef\u4ee5\u76f4\u63a5\u5728\u6a21\u677f\u88cf\u7d81\u5b9aorder.paid \u548corder.pay\u3002

\n

\u672c\u5e16\u5728 reddit \u4e0a\u7684\u7248\u672c\uff1a https://www.reddit.com/r/vuejs/comments/1owezu4/reactive_as_an_object_encapsulation/

\n", "date_published": "2025-11-13T22:36:27+00:00", "title": "\u7528 reactive \u4f86\u5be6\u73fe oo \u5c0d\u8c61\u7684\u5c01\u88dd", "id": "t/1172678" }, { "author": { "url": "member/sikuu2al", "name": "sikuu2al", "avatar": "https://cdn.v2ex.com/avatar/5e91/67c1/670669_large.png?m=1762418516" }, "url": "t/1172271", "date_modified": "2025-11-14T04:26:34+00:00", "content_html": "

\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

\n", "date_published": "2025-11-12T06:07:16+00:00", "title": "Vue \u7684 reactive \u4f1a\u6709\u4eba\u4e13\u95e8\u7528\u5417\uff1f", "id": "t/1172271" }, { "author": { "url": "member/sunmoon1983", "name": "sunmoon1983", "avatar": "https://cdn.v2ex.com/avatar/912f/cff7/254536_large.png?m=1764747738" }, "url": "t/1171416", "date_modified": "2025-11-08T11:38:11+00:00", "content_html": "

\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\u662fLuckySheet,\u5927\u8001\u4eec\u8fd8\u6709\u5176\u5b83\u65b9\u6848\u5417\uff1f

\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": "t/1171416" }, { "author": { "url": "member/leokun", "name": "leokun", "avatar": "https://cdn.v2ex.com/avatar/12ab/702a/625066_large.png?m=1769752032" }, "url": "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
\u4e0e\u539f\u7ec4\u4ef6 100% \u4e00\u81f4\uff0c\u53ea\u662f\u66b4\u9732\u4e86\u5185\u90e8\u7684\u51fd\u6570 https://github.com/vuejs/core/compare/main...leookun:core:v3.5.22#diff-28ccce6931cf4b4364f58400b93e2ae8efe180a82f885444bb5704574025a4d0

\u5305 https://www.npmjs.com/package/vue3-keep-alive
\u6e90\u7801 https://github.com/leookun/core/tree/v3.5.22/packages/vue3-keep-alive", "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": "t/1169815" }, { "author": { "url": "member/cokyhe", "name": "cokyhe", "avatar": "https://cdn.v2ex.com/gravatar/6d12c606f4ec41400c00a0e946d1bd87?s=73&d=retro" }, "url": "t/1162167", "title": "WebStorm \u5199 \u4e2a v-for\uff0c cpu \u5c31\u72c2\u98d9", "id": "t/1162167", "date_published": "2025-09-27T02:33:28+00:00", "content_html": "

\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

\n

\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

\n
<li v-for=\"menu in menus\" :key=\"menu.key\">\n\n</li>\n
\n

\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

\n" }, { "author": { "url": "member/w3", "name": "w3", "avatar": "https://cdn.v2ex.com/avatar/33cb/b8b1/195688_large.png?m=1741592455" }, "url": "t/1161521", "title": "Nuxt UI 4 \u53ef\u4ee5\u514d\u8d39\u7528 Pro \u4e86", "id": "t/1161521", "date_published": "2025-09-24T06:31:22+00:00", "content_html": "
\n

With this release, we are unifying Nuxt UI and Nuxt UI Pro into a single, powerful, and completely free open-source library

\n
\n

Blog: https://nuxt.com/blog/nuxt-ui-v4

\n

Nuxt UI: https://ui.nuxt.com/

\n" }, { "author": { "url": "member/coolair", "name": "coolair", "avatar": "https://cdn.v2ex.com/avatar/c4fe/52ac/36118_large.png?m=1691894552" }, "url": "t/1158324", "date_modified": "2025-09-11T06:49:02+00:00", "content_html": "\u53ea\u627e\u5230\u4e86 https://github.com/dream2023/ele-table-editor \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": "t/1158324" }, { "author": { "url": "member/waiaan", "name": "waiaan", "avatar": "https://cdn.v2ex.com/avatar/a703/deb0/206370_large.png?m=1655257935" }, "url": "t/1155847", "title": "\u8bf7\u95ee vue \u7684 defineEmits \u7c7b\u578b\u5982\u4f55\u4f7f\u7528\u52a8\u6001\u952e\u540d", "id": "t/1155847", "date_published": "2025-08-29T09:46:56+00:00", "content_html": "
enum BaseEvent {\n CLICK = 'click'\n}\n\ninterface CustomEvent{\n [BaseEvent.CLICK]:string\n}\n\ndefineEmits<EmitEvents>()\n\n
\n

\u4e0a\u9762\u8fd9\u79cd\u5199\u6cd5 @vue/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

\n" }, { "author": { "url": "member/andyshz", "name": "andyshz", "avatar": "https://cdn.v2ex.com/gravatar/e06c86479b867dd2e0930e4a9a5a5304?s=73&d=retro" }, "url": "t/1149136", "date_modified": "2025-07-31T22:11:47+00:00", "content_html": "

\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

\n", "date_published": "2025-07-31T14:43:39+00:00", "title": "VUE \u5f00\u53d1\u6c42\u52a9", "id": "t/1149136" }, { "author": { "url": "member/AokiNet", "name": "AokiNet", "avatar": "https://cdn.v2ex.com/avatar/e295/4a06/607439_large.png?m=1762313703" }, "url": "t/1148661", "date_modified": "2025-07-30T05:00:17+00:00", "content_html": "

\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

\n
    \n
  1. \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?
  2. \n
  3. \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
  4. \n
  5. \u63a5\u53e3\u8c03\u7528\u4e3a\u4ec0\u4e48\u4e0d\u80fd\u505a\u5168\u5c40 api \uff0ctm \u590d\u5236\u51e0\u5341\u904d\u3002
  6. \n
  7. \u53d8\u91cf\u80fd\u4e0d\u80fd\u4e0d\u8981 abc 123 \u7684\u554a\u3002
  8. \n
  9. 24 \u5e74\u7684\u9879\u76ee\uff0c\u90fd 24 \u5e74\u4e86\u4e3a\u4ec0\u4e48\u8fd8\u8981\u7528\u539f\u751f wx \u5f00\u53d1\u554a\u3002
  10. \n
\n

\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

\n

\u9644\u90e8\u5206\u4ee3\u7801\u622a\u56fe\uff0c\u5f88\u591a\u5730\u65b9\u90fd\u5f88\u79bb\u8c31

\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": "t/1148661" }, { "author": { "url": "member/giserman001", "name": "giserman001", "avatar": "https://cdn.v2ex.com/avatar/d0cb/268c/690972_large.png?m=1727405336" }, "url": "t/1147719", "title": "\u6211\u7684 mp4 \u64ad\u653e\u4e0d\u51fa\u6765\uff01", "id": "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": "member/ljlljl0", "name": "ljlljl0", "avatar": "https://cdn.v2ex.com/gravatar/b3582ce7e9ff1228649489efbd83d9f7?s=73&d=retro" }, "url": "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

\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": "t/1147424" }, { "author": { "url": "member/liuliancc", "name": "liuliancc", "avatar": "https://cdn.v2ex.com/avatar/d14a/43c7/522760_large.png?m=1748932441" }, "url": "t/1146719", "date_modified": "2025-07-21T13:40:32+00:00", "content_html": "

\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
\n\u5230\u5e95\u4ec0\u4e48\u65f6\u5019\u5e94\u8be5\u4f7f\u7528 ref \u4ec0\u4e48\u65f6\u5019\u5e94\u8be5\u4f7f\u7528 reactive \u5462\uff1f

\n

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=

\n

\u76f4\u63a5\u5c55\u793a\u4ee3\u7801\uff1a

\n

App.vue

\n
<script setup>\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</script>\n\n<template>\n <p :style=\"{ fontSize: styleConfig.fontSize + 'px'}\">\u6211\u662f\u5b57\u4f53</p>\n <Comp v-model=\"styleConfig\" />\n</template>\n\n
\n

Comp.vue

\n
<script setup lang=\"ts\">\nimport { reactive, watch } from 'vue'\n\ninterface StyleConfig {\n fontSize: number\n}\n\ninterface Props {\n modelValue: StyleConfig\n}\nconst props = defineProps<Props>()\n\ninterface Emits {\n (e: 'update:modelValue', value: StyleConfig): void\n}\nconst emit = defineEmits<Emits>()\n\nconst localCOnfig= reactive<StyleConfig>({ ...props.modelValue })\n\nwatch(localConfig, (newConfig) => {\n emit('update:modelValue', { ...newConfig })\n}, { deep: true })\n</script>\n\n<template>\n <div>\n <label>\u5b57\u4f53\u5927\u5c0f</label>\n <input v-model=\"localConfig.fontSize\" />\n </div>\n</template>\n
\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": "t/1146719" }, { "author": { "url": "member/boyzhang", "name": "boyzhang", "avatar": "https://cdn.v2ex.com/avatar/03a9/cf2f/654207_large.png?m=1742262719" }, "url": "t/1145111", "title": "uniapp \u6c42\u52a9", "id": "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": "member/yesterdaysun", "name": "yesterdaysun", "avatar": "https://cdn.v2ex.com/gravatar/6af580c654cfe6bbc9123e8e177c8468?s=73&d=retro" }, "url": "t/1143721", "title": "Vue3 \u7f16\u5199\u7684\u6700\u4f73\u5b9e\u8df5\u662f\u600e\u6837\u7684?", "id": "t/1143721", "date_published": "2025-07-08T05:34:05+00:00", "content_html": "

\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?

\n" }, { "author": { "url": "member/jianing831", "name": "jianing831", "avatar": "https://cdn.v2ex.com/gravatar/9d3c6350ac2d5e6e93b654061fd91b0f?s=73&d=retro" }, "url": "t/1142366", "title": "\u5f00\u53d1\u4e00\u6b3e\u8f7b\u4fbf\u7b80\u6d01\u7684\u8bba\u575b\u7a0b\u5e8f", "id": "t/1142366", "date_published": "2025-07-01T16:31:39+00:00", "content_html": "

\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

\n" }, { "author": { "url": "member/itchina110", "name": "itchina110", "avatar": "https://cdn.v2ex.com/avatar/2d5b/53f8/10411_large.png?m=1758701556" }, "url": "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": "t/1141777", "date_published": "2025-06-29T08:28:26+00:00", "content_html": "

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

\n

\u5927\u4f1a\u7f51\u7ad9\uff1a https://vueconf.cn

\n

Vue.js & Vite \u4f5c\u8005\u5c06\u7ed9\u5927\u5bb6\u5e26\u6765\u4e3b\u9898\u6f14\u8bb2\u3002

\n

Vue & Nuxt & 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

\n

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

\n

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

\n

Vue & Vue Macros & Vue Language Tools \u56e2\u961f\u6210\u5458\u3001TS Macro & 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

\n

Vue & 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

\n

Vue.js \u6838\u5fc3\u56e2\u961f\u6210\u5458\uff0cVolar.js & Vue Language Tools & 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

\n

\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

\n

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

\n

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

\n

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

\n" }, { "author": { "url": "member/leia", "name": "leia", "avatar": "https://cdn.v2ex.com/avatar/6491/7bbe/479404_large.png?m=1748357150" }, "url": "t/1140983", "date_modified": "2025-06-26T13:33:11+00:00", "content_html": "

vue3+ElInput \u65e0\u6cd5\u8f93\u5165\u7684\u95ee\u9898

\n

\"image\"

\n

\u5f00\u7bc7

\n

\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

\n

\"image\"

\n

1.el-input \u65e0\u6cd5\u8f93\u5165

\n

TSX \u7684\u5199\u6cd5\u561b\uff0c\u6700\u5f00\u59cb\u6211\u662f\u8fd9\u4e48\u5199\u7684

\n
const auditText = ref('');\n // \u5ffd\u7565\u4ee3\u7801<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 />\n
\n

\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

\n

\"image\"

\n
const auditText = ref<string>('');\nfunction test(value) {\n console.log(value);\n auditText.value = value;\n}\n//\u5ffd\u7565\u4ee3\u7801\n<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/>\n
\n

\"image\"

\n

\u4f46\u662f\u90a3\u5176\u5b9e\u4e5f\u4e0d\u7528\u8fd9\u4e48\u9ebb\u70e6\u4eba\u6587\u6863\u91cc\u4e5f\u5199\u5f97\u5f88\u6e05\u695a\u4e86v-model\u5c31\u884c

\n
<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/>\n
\n

2.\u5b57\u6570\u7edf\u8ba1\u4e0d\u89c1\u4e86

\n

\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

\n

\"image\"

\n

\u53ef\u662f\u5982\u679c\u6211\u5728 tsx \u91cc\u6309\u5b98\u7f51\u8fd9\u4e48\u5199\u4f1a\u53d1\u751f\u4ec0\u4e48\u90a3

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\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

\n

\u603b\u7ed3

\n

\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

\n

\u5173\u4e8e\u6211\u7684\u4e00\u4e9b\u4ecb\u7ecd

\n", "date_published": "2025-06-25T08:01:26+00:00", "title": "vue3+ELInput \u65e0\u6cd5\u8f93\u5165\u7684\u95ee\u9898", "id": "t/1140983" }, { "author": { "url": "member/puremaker", "name": "puremaker", "avatar": "https://cdn.v2ex.com/avatar/cc2d/7de5/647810_large.png?m=1754989837" }, "url": "t/1138410", "title": "\u60f3\u95ee\u4e00\u4e0b pinia \u6301\u4e45\u5316\u5230 localStorage \u5982\u4f55\u5b9e\u73b0\u6709\u6548\u671f", "id": "t/1138410", "date_published": "2025-06-13T07:31:14+00:00", "content_html": "

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

\n" }, { "author": { "url": "member/panlatent", "name": "panlatent", "avatar": "https://cdn.v2ex.com/avatar/d30b/8fb4/90818_large.png?m=1720835206" }, "url": "t/1136320", "title": "\u6709\u4ec0\u4e48\u9002\u7528\u4e8e Vue/Nuxt \u7684\u8868\u5355/\u95ee\u5377/\u8bd5\u5377+\u8bbe\u8ba1\u5668\u5e93\u4e48", "id": "t/1136320", "date_published": "2025-06-04T07:30:05+00:00", "content_html": "

\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

\n

\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

\n

\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

\n" }, { "author": { "url": "member/iv8d", "name": "iv8d", "avatar": "https://cdn.v2ex.com/avatar/2273/0636/253364_large.png?m=1749459724" }, "url": "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
VUE_APP_DES_KEY='abcd$1234^33'
\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
1. \u52a0\u5f15\u53f7\u4ecd\u7136\u4f1a\u66ff\u6362\u53d8\u91cf
2. \\\u8f6c\u4e49\u5728 dev \u73af\u5883\u4e0b\u6b63\u5e38\u4e86\uff0c\u5728 prod \u6253\u5305\u540e\u4ecd\u7136\u4f1a\u66ff\u6362
\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": "t/1134800" }, { "author": { "url": "member/zsxzy", "name": "zsxzy", "avatar": "https://cdn.v2ex.com/avatar/6ced/5cd3/225840_large.png?m=1750605867" }, "url": "t/1134485", "date_modified": "2025-05-26T14:38:22+00:00", "content_html": "

\u8ba9 AI \u7edf\u8ba1\u7684 \u6c7d\u6c34\u97f3\u4e50\u7535\u8111\u7248\u7528\u4e86\u54ea\u4e9b\u5f00\u6e90\u7ec4\u4ef6

\n
    \n
  1. \n

    @electron/osx-sign

    \n\n
  2. \n
  3. \n

    electron-winstaller

    \n\n
  4. \n
  5. \n

    dayjs

    \n\n
  6. \n
  7. \n

    immer

    \n\n
  8. \n
  9. \n

    minimist

    \n\n
  10. \n
  11. \n

    nanoid

    \n\n
  12. \n
  13. \n

    web-vitals

    \n\n
  14. \n
  15. \n

    axios

    \n\n
  16. \n
  17. \n

    chalk

    \n\n
  18. \n
  19. \n

    electron-squirrel-startup

    \n\n
  20. \n
  21. \n

    multistream

    \n\n
  22. \n
  23. \n

    inquirer

    \n\n
  24. \n
  25. \n

    sanitize-html

    \n\n
  26. \n
  27. \n

    qrcode

    \n\n
  28. \n
  29. \n

    vue

    \n\n
  30. \n
  31. \n

    @byted-sdk/account-api

    \n\n
  32. \n
  33. \n

    vue-router

    \n\n
  34. \n
  35. \n

    @vueuse/core

    \n\n
  36. \n
  37. \n

    file-uri-to-path

    \n\n
  38. \n
  39. \n

    follow-redirects

    \n\n
  40. \n
  41. \n

    proxy-from-env

    \n\n
  42. \n
  43. \n

    form-data

    \n\n
  44. \n
  45. \n

    asynckit

    \n\n
  46. \n
  47. \n

    combined-stream

    \n\n
  48. \n
  49. \n

    mime-types

    \n\n
  50. \n
  51. \n

    delayed-stream

    \n\n
  52. \n
  53. \n

    mime-db

    \n\n
  54. \n
  55. \n

    supports-color

    \n\n
  56. \n
  57. \n

    ansi-styles

    \n\n
  58. \n
  59. \n

    has-flag

    \n\n
  60. \n
  61. \n

    color-convert

    \n\n
  62. \n
  63. \n

    color-name

    \n\n
  64. \n
  65. \n

    debug

    \n\n
  66. \n
  67. \n

    once

    \n\n
  68. \n
  69. \n

    readable-stream

    \n\n
  70. \n
  71. \n

    wrappy

    \n\n
  72. \n
  73. \n

    inherits

    \n\n
  74. \n
  75. \n

    util-deprecate

    \n\n
  76. \n
  77. \n

    string_decoder

    \n\n
  78. \n
  79. \n

    safe-buffer

    \n\n
  80. \n
  81. \n

    cli-width

    \n\n
  82. \n
  83. \n

    lodash

    \n\n
  84. \n
  85. \n

    mute-stream

    \n\n
  86. \n
  87. \n

    run-async

    \n\n
  88. \n
  89. \n

    ansi-escapes

    \n\n
  90. \n
  91. \n

    figures

    \n\n
  92. \n
  93. \n

    strip-ansi

    \n\n
  94. \n
  95. \n

    external-editor

    \n\n
  96. \n
  97. \n

    string-width

    \n\n
  98. \n
  99. \n

    cli-cursor

    \n\n
  100. \n
  101. \n

    wrap-ansi

    \n\n
  102. \n
  103. \n

    ora

    \n\n
  104. \n
  105. \n

    escape-string-regexp

    \n\n
  106. \n
  107. \n

    is-unicode-supported

    \n\n
  108. \n
  109. \n

    ansi-regex

    \n\n
  110. \n
  111. \n

    chardet

    \n\n
  112. \n
  113. \n

    iconv-lite

    \n\n
  114. \n
  115. \n

    tmp

    \n\n
  116. \n
  117. \n

    safer-buffer

    \n\n
  118. \n
  119. \n

    os-tmpdir

    \n\n
  120. \n
  121. \n

    restore-cursor

    \n\n
  122. \n
  123. \n

    onetime

    \n\n
  124. \n
  125. \n

    mimic-fn

    \n\n
  126. \n
  127. \n

    cli-spinners

    \n\n
  128. \n
  129. \n

    is-interactive

    \n\n
  130. \n
  131. \n

    log-symbols

    \n\n
  132. \n
  133. \n

    wcwidth

    \n\n
  134. \n
  135. \n

    defaults

    \n\n
  136. \n
  137. \n

    clone

    \n\n
  138. \n
  139. \n

    buffer

    \n\n
  140. \n
  141. \n

    base64-js

    \n\n
  142. \n
  143. \n

    ieee754

    \n\n
  144. \n
  145. \n

    is-plain-object

    \n\n
  146. \n
  147. \n

    parse-srcset

    \n\n
  148. \n
  149. \n

    postcss

    \n\n
  150. \n
  151. \n

    htmlparser2

    \n\n
  152. \n
  153. \n

    picocolors

    \n\n
  154. \n
  155. \n

    source-map-js

    \n\n
  156. \n
  157. \n

    domelementtype

    \n\n
  158. \n
  159. \n

    entities

    \n\n
  160. \n
  161. \n

    domhandler

    \n\n
  162. \n
  163. \n

    domutils

    \n\n
  164. \n
  165. \n

    dom-serializer

    \n\n
  166. \n
  167. \n

    pngjs

    \n\n
  168. \n
  169. \n

    yargs

    \n\n
  170. \n
  171. \n

    decamelize

    \n\n
  172. \n
  173. \n

    require-directory

    \n\n
  174. \n
  175. \n

    which-module

    \n\n
  176. \n
  177. \n

    y18n

    \n\n
  178. \n
  179. \n

    find-up

    \n\n
  180. \n
  181. \n

    camelcase

    \n\n
  182. \n
  183. \n

    is-fullwidth-code-point

    \n\n
  184. \n
  185. \n

    path-exists

    \n\n
  186. \n
  187. \n

    locate-path

    \n\n
  188. \n
  189. \n

    p-locate

    \n\n
  190. \n
  191. \n

    p-limit

    \n\n
  192. \n
  193. \n

    p-try

    \n\n
  194. \n
  195. \n

    core-js-pure

    \n\n
  196. \n
  197. \n

    js-cookie

    \n\n
  198. \n
  199. \n

    fast-glob\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

    \n
  200. \n
  201. \n

    @nodelib/fs.stat\n* \u4f5c\u7528: \u63d0\u4f9b\u5177\u6709\u6269\u5c55 API \u7684 fs.stat \u548c fs.lstat \u65b9\u6cd5\u3002

    \n
  202. \n
  203. \n

    merge2\n* \u4f5c\u7528: \u5c06\u591a\u4e2a\u6d41\uff08 streams \uff09\u6309\u987a\u5e8f\u6216\u5e76\u884c\u5408\u5e76\u4e3a\u4e00\u4e2a\u6d41\u3002

    \n
  204. \n
  205. \n

    glob-parent\n* \u4f5c\u7528: \u4ece glob \u5b57\u7b26\u4e32\u4e2d\u63d0\u53d6\u51fa\u975e\u901a\u914d\u7b26\u90e8\u5206\u7684\u7236\u8def\u5f84\u3002

    \n
  206. \n
  207. \n

    @nodelib/fs.walk\n* \u4f5c\u7528: \u63d0\u4f9b\u904d\u5386\u76ee\u5f55\u7684\u65b9\u6cd5\u3002

    \n
  208. \n
  209. \n

    micromatch\n* \u4f5c\u7528: \u9ad8\u5ea6\u4f18\u5316\u7684\u901a\u914d\u7b26\u548c glob \u6a21\u5f0f\u5339\u914d\u5e93\u3002

    \n
  210. \n
  211. \n

    is-glob\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

    \n
  212. \n
  213. \n

    is-extglob\n* \u4f5c\u7528: \u5224\u65ad\u4e00\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u6269\u5c55 glob (extglob) \u6a21\u5f0f\u3002

    \n
  214. \n
  215. \n

    fastq\n* \u4f5c\u7528: \u4e00\u4e2a\u5feb\u901f\u3001\u7b80\u5355\u3001\u57fa\u4e8e Promise \u7684\u5f02\u6b65\u961f\u5217\u3002

    \n
  216. \n
  217. \n

    @nodelib/fs.scandir\n* \u4f5c\u7528: \u63d0\u4f9b fs.scandir \u65b9\u6cd5\uff0c\u7528\u4e8e\u626b\u63cf\u76ee\u5f55\u5185\u5bb9\u3002

    \n
  218. \n
  219. \n

    reusify\n* \u4f5c\u7528: \u9ad8\u6548\u5730\u91cd\u7528\u5bf9\u8c61\uff0c\u51cf\u5c11\u5783\u573e\u56de\u6536\u3002

    \n
  220. \n
  221. \n

    run-parallel\n* \u4f5c\u7528: \u5e76\u884c\u8fd0\u884c\u4e00\u7ec4\u51fd\u6570\u3002

    \n
  222. \n
  223. \n

    queue-microtask\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

    \n
  224. \n
  225. \n

    picomatch\n* \u4f5c\u7528: \u4e00\u4e2a\u975e\u5e38\u5feb\u901f\u4e14\u51c6\u786e\u7684 Javascript glob \u6a21\u5f0f\u5339\u914d\u5668\u3002

    \n
  226. \n
  227. \n

    braces\n* \u4f5c\u7528: Javascript \u5b9e\u73b0\u7684\u7c7b\u4f3c Bash \u7684\u82b1\u62ec\u53f7\u6269\u5c55\u529f\u80fd\uff08\u4f8b\u5982 a{b,c}d -> abd, acd\uff09\u3002

    \n
  228. \n
  229. \n

    fill-range\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

    \n
  230. \n
  231. \n

    to-regex-range\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

    \n
  232. \n
  233. \n

    is-number\n* \u4f5c\u7528: \u5224\u65ad\u4e00\u4e2a\u503c\u662f\u5426\u4e3a\u6570\u5b57\u7c7b\u578b\u3002

    \n
  234. \n
  235. \n

    node-machine-id\n* \u4f5c\u7528: \u83b7\u53d6\u4e00\u4e2a\u552f\u4e00\u7684\u673a\u5668 ID \u3002

    \n
  236. \n
  237. \n

    @vue/shared\n* \u4f5c\u7528: Vue.js \u5185\u90e8\u5305\u5171\u4eab\u7684\u5de5\u5177\u51fd\u6570\u3002

    \n
  238. \n
  239. \n

    @vue/runtime-dom\n* \u4f5c\u7528: Vue.js \u9488\u5bf9 DOM \u73af\u5883\u7684\u8fd0\u884c\u65f6\u3002

    \n
  240. \n
  241. \n

    @vue/compiler-dom\n* \u4f5c\u7528: Vue.js \u9488\u5bf9 DOM \u73af\u5883\u7684\u7f16\u8bd1\u5668\u3002

    \n
  242. \n
  243. \n

    @vue/compiler-sfc\n* \u4f5c\u7528: Vue.js \u5355\u6587\u4ef6\u7ec4\u4ef6 (SFC, .vue \u6587\u4ef6) \u7684\u7f16\u8bd1\u5668\u3002

    \n
  244. \n
  245. \n

    @vue/server-renderer\n* \u4f5c\u7528: Vue.js \u7528\u4e8e\u670d\u52a1\u5668\u7aef\u6e32\u67d3 (SSR) \u7684\u5305\u3002

    \n
  246. \n
  247. \n

    csstype\n* \u4f5c\u7528: \u4e3a TypeScript \u63d0\u4f9b\u4e25\u683c\u7c7b\u578b\u7684 CSS \u5c5e\u6027\u548c\u503c\u5b9a\u4e49\u3002

    \n
  248. \n
  249. \n

    @vue/runtime-core\n* \u4f5c\u7528: Vue.js \u7684\u8fd0\u884c\u65f6\u6838\u5fc3\uff0c\u5e73\u53f0\u65e0\u5173\u3002

    \n
  250. \n
  251. \n

    @vue/reactivity\n* \u4f5c\u7528: Vue.js \u7684\u54cd\u5e94\u5f0f\u7cfb\u7edf\u6838\u5fc3\u3002

    \n
  252. \n
  253. \n

    @vue/compiler-core\n* \u4f5c\u7528: Vue.js \u7684\u7f16\u8bd1\u5668\u6838\u5fc3\uff0c\u5e73\u53f0\u65e0\u5173\u3002

    \n
  254. \n
  255. \n

    estree-walker\n* \u4f5c\u7528: \u7528\u4e8e\u904d\u5386\u7b26\u5408 ESTree \u89c4\u8303\u7684\u62bd\u8c61\u8bed\u6cd5\u6811 (AST)\u3002

    \n
  256. \n
  257. \n

    @babel/parser\n* \u4f5c\u7528: Babel \u4f7f\u7528\u7684 Javascript \u89e3\u6790\u5668\uff0c\u53ef\u4ee5\u5c06 Javascript \u4ee3\u7801\u8f6c\u6362\u4e3a AST \u3002

    \n
  258. \n
  259. \n

    @babel/types\n* \u4f5c\u7528: Babel \u7528\u4e8e\u5904\u7406 AST \u8282\u70b9\u7684\u5de5\u5177\u51fd\u6570\u548c\u7c7b\u578b\u5b9a\u4e49\u3002

    \n
  260. \n
  261. \n

    @babel/helper-string-parser\n* \u4f5c\u7528: Babel \u5185\u90e8\u7528\u4e8e\u89e3\u6790\u5b57\u7b26\u4e32\u7684\u8f85\u52a9\u51fd\u6570\u3002

    \n
  262. \n
  263. \n

    @babel/helper-validator-identifier\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

    \n
  264. \n
  265. \n

    to-fast-properties\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

    \n
  266. \n
  267. \n

    magic-string\n* \u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e\u64cd\u4f5c\u5b57\u7b26\u4e32\u5e76\u80fd\u751f\u6210\u5bf9\u5e94 source map \u7684\u5e93\u3002

    \n
  268. \n
  269. \n

    @vue/reactivity-transform\n* \u4f5c\u7528: Vue.js \u5b9e\u9a8c\u6027\u7684\u54cd\u5e94\u5f0f\u8bed\u6cd5\u7cd6\u8f6c\u6362\u3002

    \n
  270. \n
  271. \n

    @vue/compiler-ssr\n* \u4f5c\u7528: Vue.js \u9488\u5bf9\u670d\u52a1\u5668\u7aef\u6e32\u67d3 (SSR) \u7684\u7f16\u8bd1\u5668\u3002

    \n
  272. \n
  273. \n

    @jridgewell/sourcemap-codec\n* \u4f5c\u7528: \u7528\u4e8e\u7f16\u7801\u548c\u89e3\u7801 sourcemap VLQ (Variable Length Quantity) \u6bb5\u3002

    \n
  274. \n
  275. \n

    crypto-js\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

    \n
  276. \n
  277. \n

    isuri\n* \u4f5c\u7528: \u68c0\u67e5\u4e00\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u6709\u6548\u7684 URI \u3002

    \n
  278. \n
  279. \n

    rfc-3986\n* \u4f5c\u7528: \u9a8c\u8bc1 URI \u662f\u5426\u7b26\u5408 RFC 3986 \u6807\u51c6\u3002

    \n
  280. \n
  281. \n

    @vueuse/metadata\n* \u4f5c\u7528: VueUse \u5185\u90e8\u4f7f\u7528\u7684\u5143\u6570\u636e\u3002

    \n
  282. \n
  283. \n

    vue-demi\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

    \n
  284. \n
  285. \n

    @vueuse/shared\n* \u4f5c\u7528: VueUse \u5e93\u5171\u4eab\u7684\u5de5\u5177\u51fd\u6570\u3002

    \n
  286. \n
  287. \n

    plist\n* \u4f5c\u7528: Apple \u7684\u5c5e\u6027\u5217\u8868 (Property List, .plist) \u6587\u4ef6\u89e3\u6790\u5668\u548c\u6784\u5efa\u5668\u3002

    \n
  288. \n
  289. \n

    fs-extra\n* \u4f5c\u7528: \u6269\u5c55\u4e86 Node.js \u5185\u7f6e fs \u6a21\u5757\u7684\u529f\u80fd\uff0c\u6dfb\u52a0\u4e86\u66f4\u591a\u6587\u4ef6\u7cfb\u7edf\u64cd\u4f5c\u65b9\u6cd5\uff0c\u5e76\u4e3a fs \u65b9\u6cd5\u589e\u52a0\u4e86 Promise \u652f\u6301\u3002

    \n
  290. \n
  291. \n

    xmlbuilder\n* \u4f5c\u7528: \u4e00\u4e2a\u7528\u4e8e Node.js \u7684 XML \u6784\u5efa\u5668\u3002

    \n
  292. \n
  293. \n

    graceful-fs\n* \u4f5c\u7528: fs \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

    \n
  294. \n
  295. \n

    universalify\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

    \n
  296. \n
  297. \n

    jsonfile\n* \u4f5c\u7528: \u65b9\u4fbf\u5730\u8bfb\u53d6\u548c\u5199\u5165 JSON \u6587\u4ef6\u3002

    \n
  298. \n
  299. \n

    lodash.template\n* \u4f5c\u7528: Lodash \u5e93\u4e2d\u7684 _.template \u65b9\u6cd5\uff0c\u7528\u4e8e\u521b\u5efa\u7f16\u8bd1\u6a21\u677f\u51fd\u6570\u3002

    \n
  300. \n
  301. \n

    temp\n* \u4f5c\u7528: Node.js \u7684\u4e34\u65f6\u6587\u4ef6\u548c\u76ee\u5f55\u521b\u5efa\u5de5\u5177 (\u4e0e tmp \u7c7b\u4f3c\uff0c\u53ef\u80fd\u7531\u4e0d\u540c\u4f9d\u8d56\u4f7f\u7528)\u3002

    \n
  302. \n
  303. \n

    lodash.templatesettings\n* \u4f5c\u7528: Lodash \u5e93\u4e2d\u7684 _.templateSettings \u65b9\u6cd5\uff0c\u7528\u4e8e\u914d\u7f6e _.template \u7684\u884c\u4e3a\u3002

    \n
  304. \n
  305. \n

    commander\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

    \n
  306. \n
  307. \n

    minimatch\n* \u4f5c\u7528: \u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684 glob \u6a21\u5f0f\u5339\u914d\u5de5\u5177\u3002

    \n
  308. \n
  309. \n

    glob\n* \u4f5c\u7528: \u4e3a Node.js \u63d0\u4f9b glob \u529f\u80fd\uff08\u6587\u4ef6\u540d\u6a21\u5f0f\u5339\u914d\uff09\u3002

    \n
  310. \n
  311. \n

    brace-expansion\n* \u4f5c\u7528: \u5b9e\u73b0\u7c7b\u4f3c Bash \u7684\u82b1\u62ec\u53f7\u6269\u5c55\u529f\u80fd\uff08\u5df2\u5728 braces \u4e2d\u5217\u51fa\uff0c\u529f\u80fd\u76f8\u540c\uff09\u3002

    \n
  312. \n
  313. \n

    concat-map\n* \u4f5c\u7528: \u4e00\u4e2a map \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

    \n
  314. \n
  315. \n

    fs.realpath\n* \u4f5c\u7528: Node.js fs.realpath \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

    \n
  316. \n
  317. \n

    path-is-absolute\n* \u4f5c\u7528: Node.js path.isAbsolute() \u65b9\u6cd5\u7684 ponyfill \uff0c\u5224\u65ad\u8def\u5f84\u662f\u5426\u4e3a\u7edd\u5bf9\u8def\u5f84\u3002

    \n
  318. \n
  319. \n

    inflight\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

    \n
  320. \n
  321. \n

    mkdirp\n* \u4f5c\u7528: \u9012\u5f52\u5730\u521b\u5efa\u76ee\u5f55\uff0c\u7c7b\u4f3c Unix \u547d\u4ee4 mkdir -p\u3002

    \n
  322. \n
  323. \n

    rimraf\n* \u4f5c\u7528: Node.js \u5b9e\u73b0\u7684 rm -rf \u547d\u4ee4\uff0c\u7528\u4e8e\u9012\u5f52\u5730\u5220\u9664\u6587\u4ef6\u548c\u76ee\u5f55\u3002

    \n
  324. \n
\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": "t/1134485" }, { "author": { "url": "member/SonicKang", "name": "SonicKang", "avatar": "https://cdn.v2ex.com/gravatar/0b17963b5e0423a5362ba57b395ba300?s=73&d=retro" }, "url": "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": "t/1134102" }, { "author": { "url": "member/staceycomcn111", "name": "staceycomcn111", "avatar": "https://cdn.v2ex.com/gravatar/11713968139aeb326c975eaae00811f7?s=73&d=retro" }, "url": "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": "t/1133539" }, { "author": { "url": "member/itchina110", "name": "itchina110", "avatar": "https://cdn.v2ex.com/avatar/2d5b/53f8/10411_large.png?m=1758701556" }, "url": "t/1130826", "title": "\ud83c\udf89 VueConf 2025 \u6765\u5566\uff0c 7 \u6708 12 \u65e5\uff0c\u6df1\u5733\u89c1\uff01", "id": "t/1130826", "date_published": "2025-05-10T02:52:47+00:00", "content_html": "

\u6bcf\u4e00\u5e74\u7684 VueConf \uff0c\u90fd\u662f Vue \u5f00\u53d1\u8005\u4eec\u7684\u72c2\u6b22\uff01

\n

\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

\n

\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

\n

\ud83d\udd25 \u4e3a\u4ec0\u4e48\u4e0d\u80fd\u9519\u8fc7 VueConf 2025 \uff1f

\n\n

\u7acb\u5373\u62a2\u7968 \ud83d\udc49 https://vueconf.cn/

\n

\u8ba9\u6211\u4eec\u4e00\u8d77\u5728\u6df1\u5733\uff0c\u611f\u53d7 Vue \u7684\u9b45\u529b\uff01

\n

VueConf 2025 \uff0c\u4e0d\u89c1\u4e0d\u6563\uff01

\n" }, { "author": { "url": "member/Pursue9", "name": "Pursue9", "avatar": "https://cdn.v2ex.com/gravatar/07e8ae562be3b705b2e605f9f321bd74?s=73&d=retro" }, "url": "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

\u5982\u56fe\uff1a

", "date_published": "2025-04-29T07:57:08+00:00", "title": "vue \u600e\u4e48 5 \u4e2a\u6708\u4e0d\u66f4\u65b0\u4e86", "id": "t/1128910" }, { "author": { "url": "member/zhengfan2016", "name": "zhengfan2016", "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro" }, "url": "t/1126963", "date_modified": "2025-04-21T10:30:19+00:00", "content_html": "

\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

\n

\u5355\u5411\u6570\u636e\u6d41\u7248\u7b80\u5355 demo
\nlayouts.vue\n\"\"\nAComponent.vue\n\"\"\nBComponent.vue\n\"\"

\n

\u72b6\u6001\u7ba1\u7406\u6d41\u7248\u7b80\u5355 demo
\nlayouts.vue\n\"\"\nAComponent.vue\n\"\"\nBComponent.vue\n\"\"

\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": "t/1126963" }, { "author": { "url": "member/Mogugugugu", "name": "Mogugugugu", "avatar": "https://cdn.v2ex.com/avatar/d92e/7173/175311_large.png?m=1759030105" }, "url": "t/1126043", "date_modified": "2025-04-17T01:14:10+00:00", "content_html": "

\u73af\u5883\uff1aWindows 11 \u4e13\u4e1a\u5de5\u4f5c\u7ad9\u7248 \u7248\u672c\u53f7 24H2 / 23H2

\n

WSL \u7248\u672c\uff1a2.4.12.0
\n\u5185\u6838\u7248\u672c\uff1a5.15.167.4-1
\n\u7f51\u7edc\u6a21\u5f0f\uff1aMirrored

\n

WSL2 \u5b89\u88c5\u7684\u662f Ubuntu 22.04.5 LTS

\n

\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

\n

\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

\n

\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

\n

\u6211\u5e94\u8be5\u5982\u4f55\u6392\u67e5\u548c\u89e3\u51b3\u95ee\u9898\uff1f\u6c42\u5927\u4f6c\u6307\u70b9\u3002

\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": "t/1126043" }, { "author": { "url": "member/ZGame", "name": "ZGame", "avatar": "https://cdn.v2ex.com/gravatar/f6f7e7b5ae8183a462163a3c473b8ba4?s=73&d=retro" }, "url": "t/1126031", "date_modified": "2025-04-17T01:29:21+00:00", "content_html": "

\u4f1a\u5728\u4e00\u4e9b\u8001\u7248\u672c\u7684 android tv \u4e0a\u767d\u5c4f\uff0c\u5404\u4f4d\u6709\u77e5\u9053\u89e3\u51b3\u529e\u6cd5\u5417

\n", "date_published": "2025-04-17T00:36:27+00:00", "title": "vue vite \u6253\u5305 \u767d\u5c4f\u95ee\u9898", "id": "t/1126031" }, { "author": { "url": "member/villivateur", "name": "villivateur", "avatar": "https://cdn.v2ex.com/avatar/233d/26cb/273091_large.png?m=1768533916" }, "url": "t/1124212", "date_modified": "2025-04-09T08:39:49+00:00", "content_html": "

\u9879\u76ee\u5730\u5740 https://github.com/am32-firmware/am32-configurator

\n

\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 https://github.com/am32-firmware/am32-configurator/issues/29

\n

\u6211\u5e76\u4e0d\u60f3\u6539\u4ed6\u7684\u6e90\u7801\uff0c\u6211\u89c9\u5f97\u8fd9\u80af\u5b9a\u662f\u73af\u5883\u95ee\u9898\u3002

\n

\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

\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": "t/1124212" }, { "author": { "url": "member/leaveeel", "name": "leaveeel", "avatar": "https://cdn.v2ex.com/gravatar/d61c8cc42010197ba09d19ae97874ca5?s=73&d=retro" }, "url": "t/1122466", "title": "vue \u6307\u4ee4\u66f4\u65b0\u95ee\u9898", "id": "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

![code]( https://imgur.com/a/1GmgAgO)

![direactive]( https://imgur.com/a/mLmEw9I)



\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": "member/zhengfan2016", "name": "zhengfan2016", "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro" }, "url": "t/1121573", "date_modified": "2025-03-27T10:30:29+00:00", "content_html": "

\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

\n

\u65e7\u7684 page route \u7ed3\u6784\uff0c\u7ecf\u5e38 page \u548c component \u4e24\u4e2a\u76ee\u5f55\u6765\u56de\u8df3

\n
- 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
\n

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

\n
- page\n - about\n - page.tsx\n - componentA.tsx\n - componentB.tsx\n - componentC.tsx\n
\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": "t/1121573" }, { "author": { "url": "member/tiRolin", "name": "tiRolin", "avatar": "https://cdn.v2ex.com/gravatar/34a55186afde13a3880f2970ecaeffdc?s=73&d=retro" }, "url": "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": "t/1119152", "date_published": "2025-03-17T13:09:07+00:00", "content_html": "

\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

\n

\"\"

\n

\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

\n
<template>\n <div class=\"layout\">\n <div class=\"menu\">\n <RouterLink to=\"/\" class=\"re-home\">\u8fd4\u56de\u9996\u9875</RouterLink>\n <!-- Logo -->\n <div class=\"logo\">\n <img :src=\"logo\" draggable=\"false\" alt=\"logo\" class=\"logo-img\" />\n <span class=\"logo-span\">\u67d1\u6a58\u667a\u80fd\u95ee\u7b54</span>\n </div>\n </div>\n <div class=\"chat\">\n <!-- \u6d88\u606f\u5217\u8868 -->\n <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 />\n\n <!-- \u8f93\u5165\u6846 -->\n <Sender\n :value=\"content\"\n class=\"sender\"\n @submit=\"onSubmit\"\n @update:value=\"(val) => (cOntent= val)\"\n />\n </div>\n </div>\n</template>\n\n<script setup>\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) => hljs.highlightAuto(code).value,\n breaks: true,\n gfm: true\n})\n\nmarked.use({\n renderer: {\n link(href, title, text) {\n return `<a href=\"${href}\" target=\"_blank\" rel=\"noopener\">${text}</a>`\n }\n }\n})\nconst renderMarkdown = (content, item) => {\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) => ({\n key: `item${index + 1}`,\n label: `\u672a\u547d\u540d\u5bf9\u8bdd ${index + 1}`\n }))\n)\nconst OnSubmit= async (nextContent) => {\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= () => {\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) => {\n return {\n items: [\n {\n label: '\u7f16\u8f91',\n key: 'edit',\n icon: () => h(Edit)\n },\n {\n label: '\u5220\u9664',\n key: 'delete',\n icon: () => h(Delete),\n danger: true\n }\n ],\n onClick: (menuInfo) => {\n message.info(`\u70b9\u51fb ${conversation.key} - ${menuInfo.key}`)\n }\n }\n}\n</script>\n\n<style scoped>\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</style>\n\n
\n

\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

\n" }, { "author": { "url": "member/EricYuan1", "name": "EricYuan1", "avatar": "https://cdn.v2ex.com/avatar/b331/dc8e/651160_large.png?m=1767800073" }, "url": "t/1117419", "title": "shadcn\uff0c shadcnvue \u5168\u662f\u57fa\u4e8e tailwindcss \u7684\uff0c\u6ca1\u6709\u57fa\u4e8e unocss \u7684\u561b\uff1f", "id": "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": "member/jenson47", "name": "jenson47", "avatar": "https://cdn.v2ex.com/gravatar/949831cfa2cee366448982baa1fb6c95?s=73&d=retro" }, "url": "t/1116274", "title": "vue3 \u7684 template typescript \u652f\u6301\u7a00\u70c2\uff0c\u9000\u5751", "id": "t/1116274", "date_published": "2025-03-06T02:46:15+00:00", "content_html": "

\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

\n

\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

\n

\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

\n

\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

\n

\u6211\u53ea\u80fd\u8bf4\u5bf9\u5bf9\u5bf9

\n" }, { "author": { "url": "member/sunorg", "name": "sunorg", "avatar": "https://cdn.v2ex.com/gravatar/f9fd0e47a762ec045123ad8879a63221?s=73&d=retro" }, "url": "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

\u9700\u6c42\uff1a
const data=ref({
\tid:xxx,ref:\u5173\u8054\u67d0\u4e2a\u7ec4\u4ef6\uff0cchildren:[
\tid:xxx,ref:\u5173\u8054\u67d0\u4e2a\u7ec4\u4ef6\uff0cchildren:[]
id:xxx,ref:\u5173\u8054\u67d0\u4e2a\u7ec4\u4ef6\uff0cchildren:[]
]
})

------------
\u5c1d\u8bd5 1: \u52a8\u6001\u6e32\u67d3\uff1a
<KeepAlive>
<component :is=\"\u67d0 item.ref\" />
</KeepAlive>

\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
\t\t\t<KeepAlive>
<DirectiveWrapper
:component-id=\"\u67d0 item.componentId\"
:compOnent=\"getComponentById(\u67d0 item.componentId)\"
/>
</KeepAlive>



\u95ee\u9898\uff1a
\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


\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": "t/1116262" }, { "author": { "url": "member/chenliangngng", "name": "chenliangngng", "avatar": "https://cdn.v2ex.com/gravatar/780a5460ba7bbd960d7046fa4ad1e463?s=73&d=retro" }, "url": "t/1115381", "title": "Vue3 tsx \u5e94\u8be5\u7528 props \u8fd8\u662f emit \u4f20\u9012\u4e8b\u4ef6\uff1f", "id": "t/1115381", "date_published": "2025-03-03T01:55:19+00:00", "content_html": "

\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

\n

\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

\n

\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

\n" }, { "author": { "url": "member/tlerbao", "name": "tlerbao", "avatar": "https://cdn.v2ex.com/avatar/9deb/c5d9/421999_large.png?m=1745547699" }, "url": "t/1109294", "date_modified": "2025-02-06T23:56:31+00:00", "content_html": "

\"\"

\n

\u54ea\u4f4d\u5927\u4f6c\u7ed9\u6211\u8bb2\u8bb2\uff0c\u8fd9\u91cc\u9762\u7684\u539f\u7406

\n
 <Hello :title=\"\" :item=\"\" />\n
\n

\u8fd9\u4e2a T \u662f\u6839\u636e\u7b2c\u4e00\u4e2a Prop \u53c2\u6570\u63a8\u5012\u7684\uff1f

\n

\u6839\u636e\u987a\u5e8f\u6765\u7684\uff1f\u8fd8\u662f\u600e\u6837\uff1f\u5f53\u6709\u591a\u4e2a Prop \u65f6\uff0c

\n

\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

\n

\u5b8c\u5168\u61f5\u903c\u4e2d\uff1f

\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": "t/1109294" }, { "author": { "url": "member/jenson47", "name": "jenson47", "avatar": "https://cdn.v2ex.com/gravatar/949831cfa2cee366448982baa1fb6c95?s=73&d=retro" }, "url": "t/1108526", "title": "\u8bf7\u6559 Vue3 + typescript \u6700\u4f73\u5b9e\u8df5\u95ee\u9898", "id": "t/1108526", "date_published": "2025-02-01T09:10:42+00:00", "content_html": "

\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

\n
    \n
  1. \u7b2c\u4e09\u65b9\u6269\u5c55\u81ea\u52a8\u5f15\u5165
  2. \n
  3. \u5c5e\u6027\u81ea\u52a8\u8bc6\u522b [\u770b\u60c5\u51b5]
  4. \n
  5. \u4e0d\u5b58\u5728\u5c5e\u6027\u6216\u65b9\u6cd5\u65e0\u6cd5\u63d0\u793a\u9519\u8bef\uff0c\u603b\u4e4b typescript \u4e0d\u751f\u6548
  6. \n
  7. \u5b98\u65b9\u63d2\u4ef6\u5076\u5c14\u98d8
  8. \n
\n" }, { "author": { "url": "member/jadelike", "name": "jadelike", "avatar": "https://cdn.v2ex.com/avatar/026d/6aa0/444925_large.png?m=1752823699" }, "url": "t/1103248", "title": "vue3 \u7eaf\u524d\u7aef\u5982\u4f55\u751f\u6210 icns \u683c\u5f0f\u56fe\u7247\uff1f", "id": "t/1103248", "date_published": "2025-01-07T08:53:53+00:00", "content_html": "

\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

\n \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

\n \u7b80\u5355\u9644\u4e00\u4e0b\u6211\u8f6c\u6362\u7684\u4ee3\u7801

\n
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
\n" }, { "author": { "url": "member/MRlaopeng", "name": "MRlaopeng", "avatar": "https://cdn.v2ex.com/gravatar/e915aefc606d734635fad82f240a5455?s=73&d=retro" }, "url": "t/1102382", "date_modified": "2025-01-03T11:52:26+00:00", "content_html": "

\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?

\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": "t/1102382" }, { "author": { "url": "member/zhengfan2016", "name": "zhengfan2016", "avatar": "https://cdn.v2ex.com/gravatar/df526f138d10cac8c95b274c720a6f55?s=73&d=retro" }, "url": "t/1101860", "date_modified": "2025-01-02T06:18:54+00:00", "content_html": "

\u5982\u9898\uff0cdemo \u4ee3\u7801\u5982\u4e0b\uff0c\u6a21\u62df\u8bfb\u53d6\u540e\u7aef api \u8fd4\u56de\uff1a\n\"\"\n\"\"\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 const {data:list} \u5f00\u5934\u7684\u4ee3\u7801\u8fdb\u884c\u89e3\u6784\uff0c\u96be\u9053 ref \u5c31\u6ca1\u6cd5\u89e3\u6784\u5417

\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": "t/1101860" }, { "author": { "url": "member/zhuoyue100", "name": "zhuoyue100", "avatar": "https://cdn.v2ex.com/gravatar/dd65ed9aec8a3f3b86e02c7c5d3cdab5?s=73&d=retro" }, "url": "t/1101229", "date_modified": "2024-12-30T04:08:36+00:00", "content_html": "
\n
\n

const pagination = reactive({\npage: 1,\ntotal: 9,\npage_size: 3\n})\nconst showChart = computed(() => (i: number) => {\nlet offset = (pagination.page-1)*pagination.page_size\nconsole.log(i, i > offset && i <= offset+pagination.page_size)\nreturn i > offset && i <= offset+pagination.page_size\n})

\n

\u9996\u6b21\u5c55\u793a\u6b63\u786e\uff0c\u70b9\u51fb\u5206\u9875\u6309\u94ae\u540e\u4e0d\u5207\u6362\uff0c\u8fd9\u4e2a\u600e\u4e48\u5b9e\u73b0?

\n", "date_published": "2024-12-30T04:01:52+00:00", "title": "vue3 \u4e2d v-show \u5206\u9875\u95ee\u9898", "id": "t/1101229" }, { "author": { "url": "member/Dewchame", "name": "Dewchame", "avatar": "https://cdn.v2ex.com/avatar/0de0/4844/590725_large.png?m=1745584257" }, "url": "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": "t/1100740" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86