码上问学问代码之理,学编程之道

官方指南 × 12 章 × 古典文学网源码

一个语法点,三个地方见:官方指南怎么定义它(cn.vuejs.org)、课程第几章讲它、以及它在「古典文学网」真实代码里的哪一处。学的时候对照着看,讲的时候照着念——理论、课堂、工程,三线合一。

怎么用这张表:① 课前 —— 按官方章节顺序预习,「项目位置」就是当天的演示现场;② 课中 —— 讲完语法立刻打开对应文件,让学生看见它长在工程里;③ 课后 —— 只改「项目位置」那几个文件做练习,比新建 demo 更有效。

语法点对照表

30 个节点 · 全部落到真实文件
一、基础(Essentials):日常写的 90% 都在这里
官方指南节点课程项目位置(hivue)一句话讲法
快速上手第 1 章package.json · index.html一行 npm create,官府发你一套工地。
创建一个应用第 1 章src/main.js(createApp → use → mount)三步挂号:立案、备案、开门。
模板语法第 2 章views/ArticleList.vue 工具栏花括号贴字,冒号绑性。
响应式基础第 2 / 5 章views/Home.vue 的 ref([]) 三件套ref 是账本,不是变量。
计算属性第 3 章components/ArticleCard.vue 七个 computed算出来的不进账本,问一次记一笔。
类与样式绑定第 2 章ArticleDetail.vue 点赞按钮的 :type、顶栏下拉class 跟着状态走,样式不用手改。
条件渲染第 4 章ArticleDetail.vue 正文 / 空态两套v-if 拆房,v-show 掩帘。
列表渲染第 4 章ArticleList.vue 的 v-for + :keykey 是户籍,下标不是。
事件处理第 2 章Home.vue 的 @keyup.enter、@click艾特接事,修饰符替你省手。
表单输入绑定第 2 章Login.vue 登录 / 注册两套表单v-model 让数据当老大。
生命周期钩子第 5 章Home.vue 的 onMounted + Promise.all上梁再摆人。
侦听器第 3 章ArticleList.vue 筛选变化 → 回第一页要办一件事,找更夫。
模板引用第 5 章Login.vue 的 ref="loginRef" → validate()ref 是伸进组件里的那只手。
二、组件(Components):页面怎么拼起来
官方指南节点课程项目位置(hivue)一句话讲法
组件基础第 6 章Home.vue 里 <ArticleCard v-for … />一个组件一块榫卯。
Props第 6 章ArticleCard.vue 的 defineProps({ article })props 下行交底,只读不改。
组件事件第 6 章项目用 @change / @success 接 Element 事件(练习:给卡片加 emit)emit 上行回话。
组件 v-model第 6 章ArticleList.vue 的 v-model:current-page / v-model:page-size组件也能双绑,官方的糖照样吃。
透传 Attributes第 6 章ArticleCard 根节点上的 @click、shadow没声明的属性,自动落到根上。
插槽第 6 章Home.vue 搜索框的 <template #append>slot 留活口,结构不写死。
依赖注入第 6 章(选学)本项目未用 —— 三层以内用 props,再深才考虑 injectprops 传八层是灾难,inject 是深树的电梯。
异步组件第 7 章router/index.js 的 () => import(...)不进这一景,不搬这一景的料。
三、逻辑复用 · 规模化 · 最佳实践
官方指南节点课程项目位置(hivue)一句话讲法
组合式函数第 5 章Home.vue 的加载逻辑(练习:抽成 useHomeData())逻辑写三遍,就该请掌班师傅。
自定义指令第 5 章(选学)本项目未用 —— 需要「直接摸 DOM」时才写v- 开头的都是命令,自己也能下一道。
插件第 1 章main.js 的 app.use(ElementPlus)挂一次,全园通用。
路由第 7 章router/index.js 全文(嵌套 / 动态 / 守卫 / 懒加载 / 兜底)一张路由表,千般动线。
状态管理第 8 章stores/user.js(Pinia + localStorage 持久化)一本账,全园读。
服务端渲染(SSR)第 12 章(延伸)本项目是纯 SPA —— 首屏与 SEO 的取舍,讲清为什么现造的园子,先开门再长草。
生产部署第 12 章.env.production、vite.config.js、Nginx(try_files + /api 反代)合并压缩加指纹,验货再出门。
性能第 12 章路由懒加载、Element Plus 按需引入(第 10 章已讲)按需搬料,首屏才轻。
安全第 9 章request.js 统一处理 401;正文用插值不用 v-html别把用户的话当代码执行。

三条主线:整份源码只有这三件事

看懂这三条,比读十遍语法都强

① 数据流(单向)

api → ref → 模板。api/article.js 发请求,页面把它存进 ref,模板自动渲染。全项目没有一行 document.querySelector——只有「改数据」这一个动作。

② 鉴权(三道关)

存 → 带 → 拦。stores/user.js 存 token;request.js 请求拦截器自动加 Authorization;router/index.js 守卫拦未登录页面;过期由响应拦截器统一踢回登录页。

③ 接口分层(一处改)

页面不写 URL,只调 api/*.js 里的函数。后端换地址、改路径,只动 api 层一个文件——这是「工程」与「作业」的分水岭。

拿到源码,四步跑起来

先起后端,再起前端
⬇ 下载源码(zip) 看 README(含排错表) 目录浏览
  • 第 0 步:先跑后端 —— cd pyweb/code/hiflask && python app.py(MySQL 已导入 hiwen.sql)
  • 第 1 步:npm install(Node ≥ 18)
  • 第 2 步:npm run dev → 打开 http://localhost:5173
  • 第 3 步:注册 → 登录 → 浏览作品 → 写书评 → 收藏 → 用户中心,八项自检全过即通
  • 一句话总结这节课的教法:官方指南告诉你「规矩是什么」,课程告诉你「为什么这么定」,源码告诉你「它在真实园子里长什么样」——三样凑齐,才算真会。