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

购物网站开发文档wordpress+上一篇+下一篇

购物网站开发文档,wordpress+上一篇+下一篇,wordpress w3 total cache,最新新闻热点评论路由元信息#xff08;Route Meta Information#xff09;是在路由配置中为每个路由定义的一组自定义数据。这些数据可以包含任何你希望在路由中传递和使用的信息#xff0c;比如权限、页面标题、布局设置等。Vue Router 允许你在路由配置中定义元信息#xff0c;然后在组件…路由元信息Route Meta Information是在路由配置中为每个路由定义的一组自定义数据。这些数据可以包含任何你希望在路由中传递和使用的信息比如权限、页面标题、布局设置等。Vue Router 允许你在路由配置中定义元信息然后在组件中访问这些信息。 在 Vue Router 中你可以通过 meta 字段来定义路由的元信息。下面是一个定义title的示例 index.ts import { createRouter, createWebHistory } from vue-routerdeclare module vue-router {interface RouteMeta {title: string} }export const router createRouter({// import.meta.env.BASE_URL 应用的基本 URL。基本 URL 是指在你的应用部署到某个域名或子路径时URL 的起始部分。例如如果你的应用部署在 https://example.com/myapp/ 这个路径下那么 import.meta.env.BASE_URL 就会是 /myapp/。history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: /,component: () import(/views/Login.vue),meta: {title: 登录页,}},{path: /index,component: () import(/views/Index.vue),meta: {title: 首页,}},], })loadingBar.vue templatediv classwrapsdiv refbar classbar/div/div /templatescript setup langts import { ref, onMounted } from vue let speed refnumber(1) let bar refHTMLElement() let timer refnumber(0) const startLoading () {speed.value 1let dom bar.value as HTMLElementtimer.value window.requestAnimationFrame(function fn() {if (speed.value 90) {speed.value 1;dom.style.width speed.value %timer.value window.requestAnimationFrame(fn)} else {speed.value 1window.cancelAnimationFrame(timer.value)}}) } const endLoading () {let dom bar.value as HTMLElementsetTimeout(() {window.requestAnimationFrame(() {speed.value 100dom.style.width speed.value %})}, 500)}defineExpose({ startLoading, endLoading }) /scriptstyle scoped langless .wraps {width: 100%;position: fixed;height: 10px;top: 0;.bar {height: inherit;width: 0;background-color: #409eff;} } /styleIndex.vue templateh1我进来啦/h1 /templatescript setup langts/scriptstyle scoped/styleLogin.vue templatediv classloginel-card classbox-cardel-form refform :rulesrules :modelformInline classdemo-form-inlineel-form-item propuser label账号el-input v-modelformInline.user placeholder请输入账号 //el-form-itemel-form-item proppassword label密码el-input v-modelformInline.password placeholder请输入密码 typepassword/el-input/el-form-itemel-form-itemel-button typeprimary clickonSubmit登录/el-button/el-form-item/el-form/el-card/div /templatescript setup langts import { reactive, ref } from vue import { useRouter } from vue-router import type { FormItemRule, FormInstance } from element-plus; import { ElMessage } from element-plusconst router useRouter() type Form {user: string,password: string } type Rules {[k in keyof Form]?: ArrayFormItemRule } const formInline reactiveForm({user: ,password: , }) const form refFormInstance() const rules reactive({user: [{required: true,message: 请输入账号,type: string,}],password: [{required: true,message: 请输入密码,type: string,}] })const onSubmit () {console.log(submit!, form.value)form.value?.validate((validate){if (validate) {router.push(/index)localStorage.setItem(token, 1)} else {ElMessage.error(账号或密码错误)}})} /scriptstyle scoped langless .login {height: 100%;display: flex;justify-content: center;align-items: center; } /styleApp.vue templaterouter-view/router-view /templatescript setup langts/scriptstyle /* 注意 style 标签 别加 scoped 不然设置宽高不生效 */ * {margin: 0;padding: 0; } html, body, #app {height: 100%;overflow: hidden; } /stylemain.ts import { createApp,createVNode,render } from vue import App from ./App.vue import {router} from ./router // import 引入 import ElementPlus from element-plus import element-plus/dist/index.css import loadingBar from ./components/loadingBar.vueconst Vnode createVNode(loadingBar) render(Vnode,document.body) const app createApp(App) app.use(router) // use 注入 ElementPlus 插件 app.use(ElementPlus)const whiteList [/]// beforeEach 可以定义不止一个vue会收集所有定义的路由钩子所以next的作用不应该是跳转而是使步骤进行到下一个你定义的钩子 router.beforeEach((to, from, next) {document.title to.meta.titleVnode.component?.exposed?.startLoading()// token每次都要跟后端校验一下是否过期if(whiteList.includes(to.path) || localStorage.getItem(token)){next()}else{next(/)} })router.afterEach((to, from) {Vnode.component?.exposed?.endLoading() }) app.mount(#app)
http://www.dnsts.com.cn/news/5492.html

相关文章:

  • 信誉好的做pc端网站做ppt常用的网站
  • 所有手机浏览器大全百度排名优化咨询电话
  • 近10天的时政新闻上海百度关键词优化公司
  • 阳春市建设局网站抖音推广运营公司
  • 有网站怎么做seo推广网络培训网站开发文献综述
  • 网站建设的外文参考文献两个wordpress
  • 网站建设知名excel动态表格图表制作
  • 手机音乐网站程序源码iis架设jsp网站
  • 网站建设类岗位淘宝网站建设没法上传怎么办
  • 门户网站是啥网站每月流量
  • 上海seo网站推广ppt模板下载完整版
  • 酒店网站制作策划深圳做网站d
  • 建设网站选什么地方的主机wordpress调用指定文章图片
  • 网站主页图片设计网站更新提醒
  • 网站建设的目标是html网站开发工具下载
  • 创建网站数据库长春关键词优化公司
  • 药企做网站wordpress comments 时间为什么是utc时间
  • 好用的海报设计网站家政公司网站建设方案
  • 单纯的文章网站怎么做公司部门解散怎么赔偿员工
  • 山东省建设厅继续教育网站wordpress与app交互
  • 优秀的版式设计网站最新获取网站访客qq接口
  • 好的公文写作网站网站建设08
  • 上市公司专利查询网站翼城网站建设
  • 沈阳网站建设建设公司方案模板
  • 网站怎么做百度的关键字我做的网页怎么是危险网站
  • 学院网站建设意义网站建设进度控制
  • 高端的程序开发宁波做网站优化多少钱
  • 保定网站建设价格北京高端品牌网站定制
  • 门户网站底部动漫设计师发展前景
  • 专做充电器的网站互联网保险案例