当前位置: 首页 > news >正文

网站建设课程体系seo实战指导

网站建设课程体系,seo实战指导,怎么经营团购网站,房屋室内设计续 对于新手来说#xff0c;要在已有框架中插入新功能页面#xff0c;这番操作是一个非常让人痛苦的#xff0c;围绕着TRAE是说了好多好话和孬话#xff0c;就是无法实现想要的结果。非常非常的无奈#xff0c;只能换一种方式实现#xff0c;以下先通过AI生成#xff0c… 续 对于新手来说要在已有框架中插入新功能页面这番操作是一个非常让人痛苦的围绕着TRAE是说了好多好话和孬话就是无法实现想要的结果。非常非常的无奈只能换一种方式实现以下先通过AI生成科普一下vue语言在开发中showComponent和router-view的使用方法、案例、优缺点、对比效果。 一、 Vue 中动态组件component :is与路由视图router-view详解 1.1 动态组件component :isshowComponent 作用在同一个挂载点动态切换不同的 Vue 组件无需路由变化。 使用方法 templatedivbutton clickcurrentComponent CompA显示A/buttonbutton clickcurrentComponent CompB显示B/button!-- 动态组件 --component :iscurrentComponent/component/div /templatescript import CompA from ./CompA.vue; import CompB from ./CompB.vue;export default {components: { CompA, CompB },data() {return {currentComponent: CompA // 初始组件};} }; /script典型场景 标签页切换如 Dashboard 中的不同功能卡片条件渲染不同子组件如根据用户类型显示不同表单动态加载非路由相关的组件 优点 轻量级无需路由配置适合简单组件切换状态保持结合 keep-alive 可缓存组件状态keep-alivecomponent :iscurrentComponent/component /keep-alive灵活性可通过 JavaScript 逻辑直接控制切换 缺点 无 URL 映射页面刷新后状态丢失无路由钩子缺少导航守卫等路由控制需手动管理状态切换逻辑需自行实现 1.2 路由视图router-view 作用配合 Vue Router 根据 URL 路径渲染匹配的组件。 使用方法 // router.js import { createRouter, createWebHistory } from vue-router; import CompA from ./views/CompA.vue; import CompB from ./views/CompB.vue;const routes [{ path: /a, component: CompA },{ path: /b, component: CompB } ];const router createRouter({history: createWebHistory(),routes });!-- App.vue -- templaterouter-link to/a跳转A/router-linkrouter-link to/b跳转B/router-link!-- 路由出口 --router-view/router-view /template典型场景 多页面应用如 /home, /about, /user/123需要 URL 共享的页面如分享链接需要路由守卫的鉴权流程 优点 URL 驱动页面状态可通过 URL 保存/分享完整路由功能 嵌套路由 (children)路由参数 (/user/:id)导航守卫 (beforeEach)懒加载 (() import(./CompA.vue)) SEO 友好支持 SSR 和 history 模式 缺点 配置复杂需单独管理路由配置文件相对重量级需要引入 Vue Router 库 1.3 核心对比 特性component :isrouter-view核心依赖Vue 核心功能需安装 Vue RouterURL 影响不改变 URL同步更新 URL状态保持需手动 keep-alive自带路由参数保持组件通信父组件通过 props 传递通过路由参数/query 传递生命周期控制常规组件生命周期支持路由守卫 (beforeRouteEnter 等)适用场景简单组件切换 (如 Tab)完整页面路由 (如 SPA)代码分割需自行实现动态 import原生支持路由懒加载示例路径无/user/profile 1.4 混合使用案例 结合两者实现带缓存的路由视图 template!-- 缓存指定路由组件 --keep-alive :include[UserProfile]router-view v-slot{ Component }component :isComponent //router-view/keep-alive /template1.5 选择建议 用 component :is 当 需要局部切换组件如选项卡无需 URL 反映当前状态简单交互无需路由管理 用 router-view 当 构建多页面应用MPA/SPA需要 URL 导航/深层链接需要路由守卫、懒加载等高级功能 特殊技巧在路由组件内部可使用 component :is 实现嵌套动态组件形成路由动态组件的混合架构。 二、实现过程 2.1 DeepSeek的页面实现 提问 将这页html语言的代码转成vue代码样式保持不变章节数据 部分取自数据库表设计一个后端接口实现此功能 回答 Vue实现的《道德经》在线阅读系统 下面我将把提供的HTML代码转换为一个完整的Vue应用并设计后端接口方案。 设计思路 将静态HTML转换为Vue单文件组件结构使用Vue Router管理页面路由使用Vuex管理章节数据设计RESTful API接口保持原设计的优雅中国风样式 Vue组件实现 App.vue (主组件) templatediv classmin-h-screen bg-f8f4e9 font-notoNavbar toggle-mobile-menutoggleMobileMenu /MobileMenu :is-visiblemobileMenuVisible closemobileMenuVisible false /router-view/router-viewFooter //div /templatescript import Navbar from ./components/Navbar.vue import MobileMenu from ./components/MobileMenu.vue import Footer from ./components/Footer.vueexport default {components: { Navbar, MobileMenu, Footer },data() {return {mobileMenuVisible: false}},methods: {toggleMobileMenu() {this.mobileMenuVisible !this.mobileMenuVisible}} } /scriptstyle import url(https://fonts.googleapis.com/css2?familyNotoSansSC:wght300;400;500;700displayswap);body {font-family: Noto Sans SC, sans-serif;background-color: #f8f4e9;color: #333; }.chapter-card {transition: all 0.3s ease;background: rgba(255, 255, 255, 0.8);backdrop-filter: blur(10px);border-radius: 12px;overflow: hidden; } .chapter-card:hover {transform: translateY(-5px);box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); }.content-card {background: rgba(255, 255, 255, 0.9);border-radius: 12px;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); }.chapter-image {height: 200px;object-fit: cover;width: 100%; }.text-content {line-height: 1.8;font-size: 16px; }.original-text {border-left: 4px solid #8b5a2b;padding-left: 16px;margin-bottom: 24px; }.translation-text {border-left: 4px solid #5a8b8b;padding-left: 16px; }.nav-link {position: relative; } .nav-link::after {content: ;position: absolute;bottom: -2px;left: 0;width: 0;height: 2px;background-color: #8b5a2b;transition: width 0.3s ease; } .nav-link:hover::after {width: 100%; } .active-nav::after {width: 100%; } /styleNavbar.vue (导航栏组件) templatenav classbg-white shadow-sm sticky top-0 z-50div classcontainer mx-auto px-4 py-3 flex justify-between items-centerdiv classtext-xl font-bold text-amber-800i classfas fa-book-open mr-2/i道德经全文/divdiv classhidden md:flex space-x-6router-link to/ classnav-link :class{active-nav text-amber-800: $route.path /}首页/router-linkrouter-link to/chapters classnav-link text-gray-600 :class{active-nav text-amber-800: $route.path /chapters}章节列表/router-link/divbutton classmd:hidden text-gray-600 focus:outline-none click$emit(toggle-mobile-menu)i classfas fa-bars/i/button/div/nav /templateMobileMenu.vue (移动端菜单) templatediv v-ifisVisible classmd:hidden bg-white shadow-lg rounded-lg mx-4 mt-2 p-4 absolute w-[calc(100%-2rem)] z-40router-link to/ classblock py-2 px-4 rounded hover:bg-amber-50 text-amber-800click$emit(close)i classfas fa-home mr-2/i首页/router-linkrouter-link to/chapters classblock py-2 px-4 rounded hover:bg-amber-50 text-gray-600click$emit(close)i classfas fa-list mr-2/i章节列表/router-link/div /templatescript export default {props: {isVisible: Boolean} } /scriptHome.vue (首页组件) templatesection classcontainer mx-auto px-4 py-12div classtext-center mb-12h1 classtext-4xl md:text-5xl font-bold text-amber-800 mb-4道德经/h1p classtext-xl text-gray-600老子 · 春秋时期/p/divdiv classgrid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8div v-for(chapter, index) in chapters :keyindexclasschapter-card cursor-pointerclickshowChapter(index)img :srcchapter.image :altchapter.title classchapter-imagediv classp-4h3 classtext-lg font-semibold text-amber-800{{ chapter.title }}/h3/div/div/div/section /templatescript import { mapState } from vuexexport default {computed: {...mapState([chapters])},methods: {showChapter(index) {this.$router.push({ name: Chapter, params: { id: index } })}} } /scriptChapterDetail.vue (章节详情页) templatesection classcontainer mx-auto px-4 py-12div classflex justify-between items-center mb-8button click$router.push(/) classflex items-center text-amber-800 hover:text-amber-600 transition-colorsi classfas fa-arrow-left mr-2/i返回首页/buttonh2 classtext-2xl md:text-3xl font-bold text-amber-800 text-center{{ chapter.title }}/h2div classw-8/div/divdiv classcontent-card p-6 md:p-8 mb-8img :srcchapter.image :altchapter.title classchapter-image rounded-lg mb-8 styleheight: 600px; width: 100%; object-fit: contain;div classtext-contentdiv classoriginal-text mb-8h3 classtext-xl font-semibold text-amber-800 mb-4原文/h3p classwhitespace-pre-line{{ chapter.original }}/p/divdiv classtranslation-texth3 classtext-xl font-semibold text-teal-800 mb-4释义/h3p classwhitespace-pre-line{{ chapter.translation }}/p/div/div/div/section /templatescript import { mapState } from vuexexport default {computed: {...mapState([chapters]),chapter() {const chapterId parseInt(this.$route.params.id)return this.chapters[chapterId] || {}}} } /scriptFooter.vue (页脚组件) templatefooter classbg-amber-800 text-white py-8div classcontainer mx-auto px-4 text-centerp classmb-2created by a hrefhttps://space.coze.cn classunderline hover:text-amber-200coze space/a/pp classtext-sm页面内容均由 AI 生成仅供参考/p/div/footer /templateVue Router配置 // router/index.js import Vue from vue import Router from vue-router import Home from /views/Home.vue import ChapterDetail from /views/ChapterDetail.vueVue.use(Router)export default new Router({routes: [{path: /,name: Home,component: Home},{path: /chapters,name: Chapters,component: Home},{path: /chapter/:id,name: Chapter,component: ChapterDetail,props: true}] })Vuex Store配置 // store/index.js import Vue from vue import Vuex from vuex import axios from axiosVue.use(Vuex)export default new Vuex.Store({state: {chapters: []},mutations: {SET_CHAPTERS(state, chapters) {state.chapters chapters}},actions: {async fetchChapters({ commit }) {try {const response await axios.get(/api/chapters)commit(SET_CHAPTERS, response.data)} catch (error) {console.error(Error fetching chapters:, error)// 如果API失败使用本地数据commit(SET_CHAPTERS, require(/data/chapters.json))}}} })后端API设计 数据库表设计 (chapters) CREATE TABLE chapters (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(50) NOT NULL,original TEXT NOT NULL,translation TEXT NOT NULL,image VARCHAR(255) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );RESTful API 设计 获取所有章节 GET /api/chapters // 响应示例 [{id: 1,title: 道德经·第一章,original: 道可道非常道名可名非常名...,translation: “道”如果可以用言语来表述...,image: https://s.coze.cn/image/wvYjW1ymBT8/},// ...其他章节 ]获取单个章节 GET /api/chapters/:id {id: 1,title: 道德经·第一章,original: 道可道非常道名可名非常名...,translation: “道”如果可以用言语来表述...,image: https://s.coze.cn/image/wvYjW1ymBT8/ }创建新章节 (管理员) POST /api/chapters // 请求体 {title: 道德经·新章,original: 新章节原文内容...,translation: 新章节释义内容...,image: https://s.coze.cn/image/new-image-url/ }更新章节 (管理员) PUT /api/chapters/:id // 请求体 {title: 更新后的标题,original: 更新后的原文...,translation: 更新后的释义...,image: https://s.coze.cn/image/updated-image-url/ }删除章节 (管理员) DELETE /api/chapters/:id 项目部署结构 daodejing-app/ ├── backend/ │ ├── controllers/ │ │ └── chapterController.js │ ├── models/ │ │ └── Chapter.js │ ├── routes/ │ │ └── chapterRoutes.js │ ├── app.js │ └── package.json ├── frontend/ │ ├── public/ │ │ ├── index.html │ │ └── favicon.ico │ ├── src/ │ │ ├── assets/ │ │ ├── components/ │ │ │ ├── Navbar.vue │ │ │ ├── MobileMenu.vue │ │ │ ├── Footer.vue │ │ ├── views/ │ │ │ ├── Home.vue │ │ │ └── ChapterDetail.vue │ │ ├── store/ │ │ │ └── index.js │ │ ├── router/ │ │ │ └── index.js │ │ ├── App.vue │ │ └── main.js │ └── package.json └── README.md最终实现效果说明 这个Vue应用实现了《道德经》的在线阅读功能具有以下特点 响应式设计在手机、平板和桌面设备上都能良好显示优雅的中国风界面保留原设计风格使用暖色调和传统元素章节浏览以卡片形式展示所有81章章节详情点击章节后显示原文和释义移动端优化有专门的移动端菜单数据管理通过Vuex管理章节数据路由管理使用Vue Router实现页面导航 后端API提供了完整的CRUD操作管理员可以通过API管理章节内容。前端在API请求失败时会使用本地数据作为后备方案。 整个应用保持了原HTML的设计美学同时增加了现代Vue应用的交互性和可维护性。 要运行此应用需要 创建Vue项目并添加上述文件安装必要依赖vue-router, vuex, axios配置后端服务可选运行 npm run serve 启动前端 2.2 项目整合 根据上面提供的方案我开始将对应的文件放到之前的项目中去于是就开始了漫长的拉扯过程。 由于前期对showComponent和router-view都不了解而且TRAE在修改代码过程中因为加入的文件之前设计的时候还用纯CSS写法后续就陆续换成了TailWind写法搞得代码很是乱套再加上小白不懂细节搞得一团乱麻。 不知道是什么原因造成的之前的交流还能帮我修改代码段 问着问着就不再这样做了 好像是一个对话反复沟通内容太多了它的上下文上限了智能体已经承受不了修改项目代码的负担只能开始了应付了事的操作。 不管什么原因吧反正使用AI 的IDE编程目前为止还是不能完全依靠的仍然需要其他的语言模型进行线上辅助方可。 当然这次豆包新发布的1.6也有使用但面对showComponent和router-view同频处理的问题仍然是焦头烂额无法解决。 最终只能选择放弃查了资料将这个切换页面的方式重新设计采用选项卡选择当前页面显示的效果来实现。 总之吧虽然TRAE AI的IDE已经有了很大的进步但有的时候还是会糊涂希望越来越好对小白的想法能更好的实现。
http://www.hkea.cn/news/14363226/

相关文章:

  • 嘉兴港区建设局网站手机改ip地址软件免费
  • 网站模板免费下载php企业工商信用查询
  • 千华网鞍山门户网站国内f型网页布局的网站
  • 网站漏洞有哪些最好的网站代运营公司
  • 有哪些可以做包装袋的网站数据库内容进 wordpress
  • 做律师网站网站开发要求有哪些
  • 网站如何防止别人抄袭网页制作软件序列号
  • 国内优秀设计网站推荐有源代码如何做网站
  • wordpress网站空间灯会公司
  • 微信网站设计制作火狐如何去掉2345网址导航
  • 个人做营利性质网站会怎么样东莞软件外包公司
  • 广州建站网络推广公司滁州网站开发公司电话
  • 简述电子商务网站的建设步骤信誉好的苏州网站建设
  • 网站开发 占位符设计素材网站飘
  • 怎样免费建立网站免费制造网站
  • 南通高端网站建设开发网站建设方案书2000字
  • php做网站主题做开发房地产网站可行吗
  • 关于网站建设的请示建站平台排行
  • 顺德网站建设域名购物网站项目经验
  • 公司企业如何做网站用帝国cms做的网站首页
  • 广州电子商务网站建设 vwordpress伪
  • 龙岩做网站开发价格wordpress gif 压缩
  • 网站建站是 什么免费的短视频app大全安卓
  • 如何做外文网站装修公司的选择方法
  • 网站增加聊天 域名经常更换
  • 广州建设网站公司哪个济南兴田德润有活动吗做一个网站以及app多少钱
  • 1 建设网站目的是什么意思湖南网站开发哪家好
  • 建设一个类似于京东的网站动易网站免费版
  • 出口贸易公司网站怎么做站内营销推广途径
  • 盐城市城乡建设局网站教育培训栏目进黑龙江建设网站用哪个浏览器好