├── .gitattrbutes ├── .gitignore ├── 2025基于Vue3的后台管理系统开发案例.md ├── 2025年GitHub热门Vue3开源项目.md ├── 2025年Vue3主流实战项目案例与实现方案.md ├── 2025年Vue3实战项目开发的核心案例与技术方案.md ├── 2025年Vue3热门UI组件库.md ├── 2025年Vue3生态体系的核心工具与组件库分类整理.md ├── LICENSE ├── README.md ├── Vue 3.6 在性能优化和开发体验上实现了多项突破性升级.md ├── Vue 3.6 在核心架构与开发工具层面新增的特性.md ├── Vue 3.6 的 ‌Alien Signals 核心引擎.md ├── Vue.js 3.0 PPT ├── 167182bd1f34f3de.png ├── 167182d9d8b061e9.png ├── 167182dadc57b780.png ├── 167182dbd99ed7be.png ├── 167182e2e1ac043f.png ├── 167182e6c39000f5.png ├── 167182ea33a49f7c.png ├── 167182ef6f8f846d.png ├── 167182f22bf8685f.png ├── 167182f3448416b2.png ├── 167182f3fc15c1c9.png ├── 167182f536e4b2d1.png ├── 167182f61c6e9251.png ├── 167182f6dfc137c6.png ├── 167182fb3552572a.png ├── 167182fce1e2f1ca.png ├── 167182fdfa2c2c44.png ├── 167182fecd0df754.png ├── 167182ffc513816a.png ├── 167183010257b1a8.png ├── 1671830338fa4a41.png ├── 1671830450313bc6.png ├── 16718305ebbdd2f6.png ├── 16718306b592ede8.png ├── 16718307cb08881d.png ├── 16718308c5ca2585.png └── 16718309bbdf0c68.png ├── Vue3 基础性能优化技巧(2025 年最新实践).md ├── asset ├── 1542383573_912979.png ├── Vue3-CheatSheet01.jpeg ├── Vue3-CheatSheet02.jpeg ├── info.md ├── one-piece.png ├── pretty-cat.png ├── vue3-news-back.png ├── vue3-news-logo.png └── vue3-news.png ├── docs ├── css │ ├── chunk-vendors.f9c58f5d.css │ └── index.1ba5327a.css ├── favicon.ico ├── img │ └── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── android-chrome-maskable-192x192.png │ │ ├── android-chrome-maskable-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg ├── index.html ├── js │ ├── chunk-vendors.9c7a8d76.js │ ├── chunk-vendors.9c7a8d76.js.map │ ├── index.7e39d82e.js │ └── index.7e39d82e.js.map ├── manifest.json ├── precache-manifest.dd9899199106e5b118aa6311d61a57bf.js ├── robots.txt └── service-worker.js └── 适配Vue3.6版本,推荐优先学习官方文档与新特性解析‌.md /.gitattrbutes: -------------------------------------------------------------------------------- 1 | *.js lingist-language=vue 2 | *.html lingist-language=vue 3 | *.css lingist-language=vue 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | node_modules 4 | /dist 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | 25 | # Compiled class file 26 | *.class 27 | 28 | # Log file 29 | *.log 30 | 31 | # BlueJ files 32 | *.ctxt 33 | 34 | # Mobile Tools for Java (J2ME) 35 | .mtj.tmp/ 36 | 37 | # Package Files # 38 | *.jar 39 | *.war 40 | *.nar 41 | *.ear 42 | *.zip 43 | *.tar.gz 44 | *.rar 45 | 46 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 47 | hs_err_pid* 48 | -------------------------------------------------------------------------------- /2025基于Vue3的后台管理系统开发案例.md: -------------------------------------------------------------------------------- 1 | # 主流技术栈组合案例 2 | 3 | ## 企业级方案 4 | 5 | - **vue-bag-admin**:基于 Vue 3.6 + Vite 5 + Naive UI,集成 Pinia 模块化状态管理,支持动态表单生成器与国际化功能,提供完整的权限路由控制体系。 6 | - **Vue Vben Admin**:采用 Vue 3.7 + TypeScript + Ant-Design-Vue,内置虚拟滚动表格与主题切换系统,支持 WebSocket 实时数据推送。 7 | 8 | ## 快速开发模板 9 | 10 | - **Element Plus + Vite 5**:通过 `pnpm create vue@latest` 初始化项目,配置 `unplugin-auto-import` 实现组件与 API 自动导入,10 分钟内完成登录页与基础布局搭建。 11 | - **Ant Design Vue 4.0**:结合 Vue 3.6 的 ` 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 32 |
33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/js/index.7e39d82e.js: -------------------------------------------------------------------------------- 1 | (function(e){function t(t){for(var u,o,s=t[0],a=t[1],r=t[2],d=0,b=[];d/index.html作为构建入口点,并生成一个适合通过静态托管服务提供的应用程序包。","time":"Jan 12, 2021","badge":["Vite2","前端","打包"],"from":["知乎","https://zhihu.com/"]},{"title":"如何看待 Web 开发构建工具 Vite?","href":"https://www.zhihu.com/question/394062839?content_source_url=https://github.com/vue3/vue3-News","detail":"Vite,一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用。同时不仅有 Vue 文件支持,还搞定了热更新,而且热更新的速度不会随着模块增多而变慢。针对生产环境则可以把同一份代码用 rollup 打。虽然现在还比较粗糙,但这个方向我觉得是有潜力的,做得好可以彻底解决改一行代码等半天热更新的问题。","time":"Jan 01, 2021","badge":["2021","前端","Vite"],"from":["知乎","https://zhihu.com/"]},{"title":"Vue3 + Vite + TypeScript 项目实战 -----(二)Vue3 生命周期","href":"https://juejin.cn/post/6929040071962132488?content_source_url=https://github.com/vue3/vue3-News","detail":"Vue3 继承了 Vue2 的所有生命周期函数,所以 Vue2 的生命周期的应用方式同样适用于 Vue3。同时 Vue3 还新增了一些新的生命周期。原有的生命周期函数我们这边不做过多的赘述,我们来讲解一下 Vue3 相对于 Vue2 变更了和新增了哪些生命周期函","time":"Jan 20, 2021","badge":["Vue3","Vite","TypeScript"],"from":["掘金","https://juejin.cn/"]}],"vue23":[{"title":"Vue3文档【Vue2迁移Vue3】","href":"https://juejin.cn/post/6858558735695937544?content_source_url=https://github.com/vue3/vue3-News","detail":"查看 vue 3.0 文档 后,总结记录一下从 vue 2 迁移到 vue 3 所需的一些更改,方便日后对比学习新版本。","time":"Jan 01, 2021","badge":["Vue2","Vue3","文档"],"from":["掘金","https://juejin.cn/"]},{"title":"Vue2.x对比Composition API写法","href":"https://juejin.cn/post/6844904132944330759?content_source_url=https://github.com/vue3/vue3-News","detail":"当然,他们没有强制要求使用Vue3.0,不习惯的依然采用Vue2.x的写法慢慢过渡。我个人喜欢追求新知识,所以我就一步到位了。Vue3.0的升级必然有许多亮点,之前也有大致了解:函数式API,Typescript支持等。最喜欢这种工作,可以在工作尝试和学习新的东西。从此开始Vue3.0之旅。","time":"Jan 01, 2021","badge":["Vue2","Vue3","Typescript"],"from":["掘金","https://juejin.cn/"]},{"title":"如何在Vue2与Vue3中构建相同的组件","href":"https://juejin.cn/post/6844904136589180935?content_source_url=https://github.com/vue3/vue3-News","detail":"随着Vue3即将发布,许多人都在想“ Vue2与Vue3有何不同?”为了显示这些更改,我们将在Vue2和Vue3中构建一个简单的表单组件。在本文结尾,你将了解Vue2和Vue3之间的主要编程差异,并逐步成为一名更好的开发人员。","time":"Jan 01, 2021","badge":["构建","Vue2","Vue3","组件"],"from":["掘金","https://juejin.cn/"]},{"title":"vue2.0与3.0对比以及vue3.0 API入门","href":"https://juejin.cn/post/6844904130985590791?content_source_url=https://github.com/vue3/vue3-News","detail":"(注意:在使用vue3.0的时候,最好将你的vue脚手架工具升级到最新的cli 4.x,我在cli3.x的上执行vue add vue-next会报错。【升级脚手架步骤】:npm install -g @vue/cli 安装完毕以后 运行vue -V查看版本号)","time":"Jan 01, 2021","badge":["入手","Vue3","实战"],"from":["掘金","https://juejin.cn/"]},{"title":"解析Vue2.0和3.0的响应式原理和异同(带源码)","href":"https://juejin.cn/post/6844904111813443598?content_source_url=https://github.com/vue3/vue3-News","detail":"结构: 2.0用Flow ,3.0用 TypeScript。性能: 3.0优化了Virtual Dom的算法。响应式原理:2.0用 Object.defineProperty,3.0用Proxy","time":"Jan 01, 2021","badge":["Vue3","原理","解析"],"from":["掘金","https://juejin.cn/"]}],"vue3react":[{"title":"Vue3 究竟好在哪里?(和 React Hooks 的详细对比)","href":"?content_source_url=https://github.com/vue3/vue3-News","detail":"这几天 Vue 3.0 Beta 版本发布了,本以为是皆大欢喜的一件事情,但是论坛里还是看到了很多反对的声音。主流的反对论点大概有如下几点:意大利面代码结构吐槽和抄袭 React 吐槽","time":"Jan 01, 2021","badge":["React","Vue3","Hooks"],"from":["知乎","https://zhihu.com/"]},{"title":"尤大Vue3.0直播虚拟Dom总结(和React对比)","href":"https://juejin.cn/post/6844904134647234568?content_source_url=https://github.com/vue3/vue3-News","detail":"Vue3核心的Typescript,Proxy响应式,Composition解决代码反复横跳都有很棒的文章剖析了, 我总结一下虚拟Dom部分把,并对比一下React, vdom的重写也是vue3性能如此优秀的重要原因","time":"Jan 01, 2021","badge":["React","总结","Composition"],"from":["掘金","https://juejin.cn/"]},{"title":"【你不知道的 React】当 React Hooks 遇见 Vue3 Composition API","href":"?content_source_url=https://github.com/vue3/vue3-News","detail":"前几天在知乎看到了一个问题,React 的 Hooks 是否可以改为用类似 vue3 composition api 的方式实现?关于 React Hooks 和 Vue3 Composition API 的热烈讨论一直都存在,虽然两者本质上都是实现状态逻辑复用,但在实现上却代表了两个社区的不同发展方向。","time":"Jan 01, 2021","badge":["React","Vue3","Composition"],"from":["掘金","https://juejin.cn/"]},{"title":"React中引入Vue3的@vue/reactivity 实现响应式状态管理","href":"https://juejin.cn/post/6844904054192078855?content_source_url=https://github.com/vue3/vue3-News","detail":"React的状态管理是一个缤纷繁杂的大世界,光我知道的就不下数十种,其中有最出名immutable阵营的redux,有mutable阵营的mobx,react-easy-state,在hooks诞生后还有极简主义的unstated-next,有蚂蚁金服的大佬出品的hox、hoox。","time":"Jan 01, 2021","badge":["React","响应式"],"from":["掘金","https://juejin.cn/"]}]}')},"33f3":function(e,t,i){},6801:function(e,t,i){},"87de":function(e,t,i){"use strict";i("6801")},"87f4":function(e,t,i){},"942d":function(e,t,i){},"9cdc":function(e,t,i){"use strict";i("942d")},c641:function(e,t,i){"use strict";i("fa49")},c81e:function(e,t,i){"use strict";i("87f4")},cd49:function(e,t,i){"use strict";i.r(t);i("e260"),i("e6cf"),i("cca6"),i("a79d");var u=i("830f"),c=i("5c40"),n={class:"view"};function o(e,t){var i=Object(c["x"])("router-view");return Object(c["s"])(),Object(c["e"])("div",n,[Object(c["j"])(i)])}i("9cdc");const s={};s.render=o;var a=s,r=i("9483");Object(r["a"])("".concat("/vue3-News/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh.")},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});i("33f3"),i("ab8b"),i("db28");var l=i("8c4f"),d=Object(c["E"])("data-v-1d6eb308");Object(c["v"])("data-v-1d6eb308");var b={class:"home"},v={class:"container-fluid xbox"},h=Object(c["h"])('
xv

Vue 3.0 训练营

',1),p={class:"row xcard news"},j={class:"col-xl-6"},m=Object(c["j"])("p",{class:"title"},"Hot News",-1),f={class:"col-xl-6"},g=Object(c["j"])("p",{class:"title"},"Daily News",-1),w={class:"row xcard pit"},V={class:"col-xl-6"},O=Object(c["j"])("p",{class:"title"},"入坑指南",-1),_={class:"col-xl-6"},x=Object(c["j"])("p",{class:"title"},"入坑案例",-1),N={class:"row xcard pit"},y={class:"col-xl-6"},k=Object(c["j"])("p",{class:"title"},"2021前端趋势",-1),C={class:"col-xl-6"},J=Object(c["j"])("p",{class:"title"},"Vite系列",-1),R=Object(c["h"])('
问一问,面一面;更健康!

每周问一问

# 列出Vue2.x 到 Vue3 详细对比?
# Vue3.0 编译做了哪些优化?(底层,源码)?
# Composition Api 与 Vue 2.x使用的Options Api 有什么区别?
# vite为什么要去革了webpack的命?
Vue2 => Vue3 <= React 16/17
',3),S={class:"row xcard contrast"},z={class:"col-xl-6"},A=Object(c["j"])("p",{class:"title"},"Vue2-Vue3",-1),I={class:"col-xl-6"},T=Object(c["j"])("p",{class:"title"},"Vue3-React",-1),P=Object(c["h"])('
招聘信息
期待ing...
获取ing...
植入ing...
本站简介

开始唠叨

我们的GitHub地址:https://github.com/vue3/vue3-News
我们的公众号已经在路上了,敬请期待!
Thanks♪(・ω・)ノ

唠叨几句

我该如何写简介呢?
用诗歌的方式?
写段代码的方式?
...

继续唠叨

谢谢大家!!!
祝各位漂亮小姐姐、小哥哥
新年好,鸿运照,烦恼的事儿往边靠,爱情滋润没烦恼,钞票一个劲儿往家跑;出门遇贵人,在家听喜报,年年有此时,岁岁有今朝,祝您一年更比一年好!

加油ヾ(◍°∇°◍)ノ゙少年,未来可期!

',7);Object(c["t"])();var E=d((function(e,t){var i=Object(c["x"])("GithubCorner"),u=Object(c["x"])("Article");return Object(c["s"])(),Object(c["e"])("div",b,[Object(c["j"])(i),Object(c["j"])("section",v,[h,Object(c["j"])("div",p,[Object(c["j"])("div",j,[m,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.news,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))]),Object(c["j"])("div",f,[g,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.dailyNews,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))])]),Object(c["j"])("div",w,[Object(c["j"])("div",V,[O,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.course,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))]),Object(c["j"])("div",_,[x,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.courseDemo,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))])]),Object(c["j"])("div",N,[Object(c["j"])("div",y,[k,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.fd2021,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))]),Object(c["j"])("div",C,[J,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.vite,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))])]),R,Object(c["j"])("div",S,[Object(c["j"])("div",z,[A,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.vue23,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))]),Object(c["j"])("div",I,[T,(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.vue3react,(function(e,t){return Object(c["s"])(),Object(c["e"])(u,{index:t,key:t,info:e},null,8,["index","info"])})),128))])]),P])])})),D={class:"about"},F=Object(c["j"])("a",{href:"https://github.com/vue3/vue3-News",class:"github-corner","aria-label":"View source on GitHub"},[Object(c["j"])("svg",{width:"80",height:"80",viewBox:"0 0 250 250",style:{fill:"#64ceaa",color:"#fff",position:"absolute",top:"0",border:"0",right:"0"},"aria-hidden":"true"},[Object(c["j"])("path",{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}),Object(c["j"])("path",{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor",style:{"transform-origin":"130px 106px"},class:"octo-arm"}),Object(c["j"])("path",{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor",class:"octo-body"})])],-1);function H(e,t){return Object(c["s"])(),Object(c["e"])("div",D,[F])}i("87de");const M={};M.render=H;var W=M,L=i("9ff4"),B=Object(c["E"])("data-v-52c68443");Object(c["v"])("data-v-52c68443");var G={class:"article-box"},q={class:"title"},U={class:"content"},X={class:"footer"},Z=Object(c["i"])(" From: ");Object(c["t"])();var K=B((function(e,t){return Object(c["s"])(),Object(c["e"])("div",G,[Object(c["j"])("div",q,[Object(c["j"])("a",{href:e.href,target:"_blank"},"#"+Object(L["E"])(e.index+1)+" "+Object(L["E"])(e.title),9,["href"]),Object(c["j"])("div",null,[(Object(c["s"])(!0),Object(c["e"])(c["b"],null,Object(c["w"])(e.badge,(function(e){return Object(c["s"])(),Object(c["e"])("span",{key:e},Object(L["E"])(e),1)})),128))])]),Object(c["j"])("div",U,[Object(c["j"])("p",null,Object(L["E"])(e.detail),1)]),Object(c["j"])("div",X,[Object(c["j"])("p",null,"Time: "+Object(L["E"])(e.time),1),Object(c["j"])("p",null,[Z,Object(c["j"])("a",{href:e.from[1],target:"_blank"},Object(L["E"])(e.from[0]),9,["href"])])])])})),Y=(i("a9e3"),{name:"Article",props:{info:Object,index:Number},setup:function(e){return e.info}});i("c81e");Y.render=K,Y.__scopeId="data-v-52c68443";var Q=Y,$=i("0f19"),ee=i("7671"),te=i.n(ee),ie=new te.a({clientID:"a9f878495a02042b2f24",clientSecret:"d60ef5836933b944e3033fe93adbb3069d0d9974",repo:"vue3-News-comments",owner:"vue3",admin:["Bruce Jenn"],language:"zh-CN",id:"vue3-News"}),ue={name:"Home",components:{GithubCorner:W,Article:Q},setup:function(){return Object(c["q"])((function(){ie.render("gitalk-container")})),$}};i("c641");ue.render=E,ue.__scopeId="data-v-1d6eb308";var ce=ue,ne=[{path:"/",name:"Home",component:ce}],oe=Object(l["a"])({history:Object(l["b"])("/vue3-News/"),routes:ne}),se=oe,ae=i("5502"),re=Object(ae["a"])({state:{},mutations:{},actions:{},modules:{}});Object(u["a"])(a).use(se).use(re).mount("#app")},fa49:function(e,t,i){}}); 2 | //# sourceMappingURL=index.7e39d82e.js.map -------------------------------------------------------------------------------- /docs/js/index.7e39d82e.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/GithubCorner.vue?e0c4","webpack:///./src/App.vue?3fe2","webpack:///./src/views/v2/Home.vue?1366","webpack:///./src/views/v2/Article.vue?19b9","webpack:///./src/App.vue","webpack:///./src/App.vue?bfc2","webpack:///./src/registerServiceWorker.ts","webpack:///./src/views/v2/Home.vue","webpack:///./src/components/GithubCorner.vue","webpack:///./src/components/GithubCorner.vue?9192","webpack:///./src/views/v2/Article.vue","webpack:///./src/views/v2/Article.vue?f223","webpack:///./src/views/v2/Home.vue?7e73","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","class","script","render","ready","console","log","registered","cached","updatefound","updated","offline","error","news","item","index","info","dailyNews","course","courseDemo","fd2021","vite","vue23","vue3react","href","aria-label","width","height","viewBox","style","aria-hidden","fill","target","title","badge","detail","time","from","props","Number","setup","__scopeId","clientID","clientSecret","repo","owner","admin","language","id","components","GithubCorner","Article","routes","path","component","router","history","store","state","mutations","actions","App","use","mount"],"mappings":"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","file":"js/index.7e39d82e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/vue3-News/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export { default } from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./GithubCorner.vue?vue&type=style&index=0&lang=scss\"; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./GithubCorner.vue?vue&type=style&index=0&lang=scss\"","export { default } from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&lang=scss\"; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&lang=scss\"","export { default } from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./Home.vue?vue&type=style&index=0&id=1d6eb308&lang=scss&scoped=true\"; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./Home.vue?vue&type=style&index=0&id=1d6eb308&lang=scss&scoped=true\"","export { default } from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./Article.vue?vue&type=style&index=0&id=52c68443&lang=scss&scoped=true\"; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-cli-plugin-vue-next/node_modules/vue-loader/dist/index.js??ref--0-1!./Article.vue?vue&type=style&index=0&id=52c68443&lang=scss&scoped=true\"","\n\n\n","import { render } from \"./App.vue?vue&type=template&id=7e749846\"\nconst script = {}\n\nimport \"./App.vue?vue&type=style&index=0&lang=scss\"\nscript.render = render\n\nexport default script","/* eslint-disable no-console */\n\nimport { register } from \"register-service-worker\";\n\nif (process.env.NODE_ENV === \"production\") {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n \"App is being served from cache by a service worker.\\n\" +\n \"For more details, visit https://goo.gl/AFskqB\"\n );\n },\n registered() {\n console.log(\"Service worker has been registered.\");\n },\n cached() {\n console.log(\"Content has been cached for offline use.\");\n },\n updatefound() {\n console.log(\"New content is downloading.\");\n },\n updated() {\n console.log(\"New content is available; please refresh.\");\n },\n offline() {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n },\n error(error) {\n console.error(\"Error during service worker registration:\", error);\n },\n });\n}\n","\n\n\n\n\n","\n\n\n","import { render } from \"./GithubCorner.vue?vue&type=template&id=01c9da34\"\nconst script = {}\n\nimport \"./GithubCorner.vue?vue&type=style&index=0&lang=scss\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","import { render } from \"./Article.vue?vue&type=template&id=52c68443&scoped=true\"\nimport script from \"./Article.vue?vue&type=script&lang=js\"\nexport * from \"./Article.vue?vue&type=script&lang=js\"\n\nimport \"./Article.vue?vue&type=style&index=0&id=52c68443&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-52c68443\"\n\nexport default script","import { render } from \"./Home.vue?vue&type=template&id=1d6eb308&scoped=true\"\nimport script from \"./Home.vue?vue&type=script&lang=js\"\nexport * from \"./Home.vue?vue&type=script&lang=js\"\n\nimport \"./Home.vue?vue&type=style&index=0&id=1d6eb308&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1d6eb308\"\n\nexport default script","import { createRouter, createWebHistory } from \"vue-router\";\nimport V2Home from \"../views/v2/Home.vue\";\n\nconst routes: Array = [\n {\n path: \"/\",\n name: \"Home\",\n component: V2Home,\n }\n];\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n});\n\nexport default router;\n","import { createStore } from \"vuex\";\n\nexport const store = createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {},\n});\n","import { createApp } from \"vue\";\nimport App from \"./App.vue\";\nimport \"./registerServiceWorker\";\nimport \"./styles/util.min.css\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"gitalk/dist/gitalk.css\";\n\nimport router from \"./router\";\nimport { store } from \"./store\";\n\ncreateApp(App).use(router).use(store).mount(\"#app\");\n"],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | {"name":"vue3-awesome-demo","short_name":"vue3-awesome-demo","theme_color":"#4DBA87","icons":[{"src":"./img/icons/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./img/icons/android-chrome-512x512.png","sizes":"512x512","type":"image/png"},{"src":"./img/icons/android-chrome-maskable-192x192.png","sizes":"192x192","type":"image/png","purpose":"maskable"},{"src":"./img/icons/android-chrome-maskable-512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}],"start_url":".","display":"standalone","background_color":"#000000"} -------------------------------------------------------------------------------- /docs/precache-manifest.dd9899199106e5b118aa6311d61a57bf.js: -------------------------------------------------------------------------------- 1 | self.__precacheManifest = (self.__precacheManifest || []).concat([ 2 | { 3 | "revision": "95888eb2ed7e24399603", 4 | "url": "/vue3-News/css/chunk-vendors.f9c58f5d.css" 5 | }, 6 | { 7 | "revision": "884d99522d41a0144a67", 8 | "url": "/vue3-News/css/index.1ba5327a.css" 9 | }, 10 | { 11 | "revision": "20aab1da86823ef780367ab9744d8160", 12 | "url": "/vue3-News/index.html" 13 | }, 14 | { 15 | "revision": "95888eb2ed7e24399603", 16 | "url": "/vue3-News/js/chunk-vendors.9c7a8d76.js" 17 | }, 18 | { 19 | "revision": "884d99522d41a0144a67", 20 | "url": "/vue3-News/js/index.7e39d82e.js" 21 | }, 22 | { 23 | "revision": "74899d989cff1a295601bd08d6e6170f", 24 | "url": "/vue3-News/manifest.json" 25 | }, 26 | { 27 | "revision": "b6216d61c03e6ce0c9aea6ca7808f7ca", 28 | "url": "/vue3-News/robots.txt" 29 | } 30 | ]); -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /docs/service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Welcome to your Workbox-powered service worker! 3 | * 4 | * You'll need to register this file in your web app and you should 5 | * disable HTTP caching for this file too. 6 | * See https://goo.gl/nhQhGp 7 | * 8 | * The rest of the code is auto-generated. Please don't update this file 9 | * directly; instead, make changes to your Workbox build configuration 10 | * and re-run your build process. 11 | * See https://goo.gl/2aRDsh 12 | */ 13 | 14 | importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); 15 | 16 | importScripts( 17 | "/vue3-News/precache-manifest.dd9899199106e5b118aa6311d61a57bf.js" 18 | ); 19 | 20 | workbox.core.setCacheNameDetails({prefix: "vue3-awesome-demo"}); 21 | 22 | self.addEventListener('message', (event) => { 23 | if (event.data && event.data.type === 'SKIP_WAITING') { 24 | self.skipWaiting(); 25 | } 26 | }); 27 | 28 | /** 29 | * The workboxSW.precacheAndRoute() method efficiently caches and responds to 30 | * requests for URLs in the manifest. 31 | * See https://goo.gl/S9QRab 32 | */ 33 | self.__precacheManifest = [].concat(self.__precacheManifest || []); 34 | workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); 35 | -------------------------------------------------------------------------------- /适配Vue3.6版本,推荐优先学习官方文档与新特性解析‌.md: -------------------------------------------------------------------------------- 1 | # 适配 Vue3.6 版本,推荐优先学习官方文档与新特性解析 2 | 3 | ## 一、官方学习资源 4 | 5 | - **Vue3.6 官方文档**:核心 API 与响应式系统升级说明,新增 `dynamicRef()` 等特性 6 | - **Vue Mastery**:提供 3.6 版本专项课程,覆盖惰性依赖追踪等新功能 7 | 8 | ## 二、系统化课程 9 | 10 | ### 实战路线图 11 | 12 | - **2 个月学习计划**:分阶段掌握 Vite + Pinia + TypeScript 组合,含 Vue3.6 的 `