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

做商城网站哪里好中国企业100强

做商城网站哪里好,中国企业100强,托管网站费用,织梦网站下载地址客户端 vs. 服务端路由 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服务端获得全新的 HTML,然后重新加载整个页面。 然而,在单页面应用中&…

客户端 vs. 服务端路由

服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服务端获得全新的 HTML,然后重新加载整个页面。

然而,在单页面应用中,客户端的 JavaScript 可以拦截页面的跳转请求,动态获取新的数据,然后在无需重新加载的情况下更新当前页面。这样通常可以带来更顺滑的用户体验,尤其是在更偏向“应用”的场景下,因为这类场景下用户通常会在很长的一段时间中做出多次交互。

在这类单页应用中,“路由”是在客户端执行的。一个客户端路由器的职责就是利用诸如 History API 或是 hashchange 事件这样的浏览器 API 来管理应用当前应该渲染的视图。

官方路由

Vue Router (https://router.vuejs.org/zh/)

状态管理

什么是状态管理?

理论上来说,每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例:

<script setup>
import { ref } from 'vue'// 状态
const count = ref(0)// 动作
function increment() {count.value++
}
</script><!-- 视图 -->
<template>{{ count }}</template>

它是一个独立的单元,由以下几个部分组成:

状态:驱动整个应用的数据源;

视图:对状态的一种声明式映射;

交互:状态根据用户在视图中的输入而作出相应变更的可能方式。

下面是“单向数据流”这一概念的简单图示:

然而,当我们有多个组件共享一个共同的状态时,就没有这么简单了:

  • 多个视图可能都依赖于同一份状态。

  • 来自不同视图的交互也可能需要更改同一份状态。

对于情景 1,一个可行的办法是将共享状态“提升”到共同的祖先组件上去,再通过 props 传递下来。然而在深层次的组件树结构中这么做的话,很快就会使得代码变得繁琐冗长。这会导致另一个问题:Prop 逐级透传问题。

对于情景 2,我们经常发现自己会直接通过模板引用获取父/子实例,或者通过触发的事件尝试改变和同步多个状态的副本。但这些模式的健壮性都不甚理想,很容易就会导致代码难以维护。

一个更简单直接的解决方案是抽取出组件间的共享状态,放在一个全局单例中来管理。这样我们的组件树就变成了一个大的“视图”,而任何位置上的组件都可以访问其中的状态或触发动作。

用响应式 API 做简单状态管理

如果你有一部分状态需要在多个组件实例间共享,你可以使用 reactive() 来创建一个响应式对象,并将它导入到多个组件中:

// store.js
import { reactive } from 'vue'export const store = reactive({count: 0
})
<!-- ComponentA.vue -->
<script setup>
import { store } from './store.js'
</script><template>From A: {{ store.count }}</template>
<!-- ComponentB.vue -->
<script setup>
import { store } from './store.js'
</script><template>From B: {{ store.count }}</template>

现在每当 store 对象被更改时,<ComponentA> 与 <ComponentB> 都会自动更新它们的视图。现在我们有了单一的数据源。

然而,这也意味着任意一个导入了 store 的组件都可以随意修改它的状态:

<template><button @click="store.count++">From B: {{ store.count }}</button>
</template>

虽然这在简单的情况下是可行的,但从长远来看,可以被任何组件任意改变的全局状态是不太容易维护的。为了确保改变状态的逻辑像状态本身一样集中,建议在 store 上定义方法,方法的名称应该要能表达出行动的意图:

// store.js
import { reactive } from 'vue'export const store = reactive({count: 0,increment() {this.count++}
})
<template><button @click="store.increment()">From B: {{ store.count }}</button>
</template>

请注意这里点击的处理函数使用了 store.increment(),带上了圆括号作为内联表达式调用,因为它并不是组件的方法,并且必须要以正确的 this 上下文来调用。

除了我们这里用到的单个响应式对象作为一个 store 之外,你还可以使用其他响应式 API 例如 ref() 或是 computed(),或是甚至通过一个组合式函数来返回一个全局状态:

import { ref } from 'vue'// 全局状态,创建在模块作用域下
const globalCount = ref(1)export function useCount() {// 局部状态,每个组件都会创建const localCount = ref(1)return {globalCount,localCount}
}

事实上,Vue 的响应性系统与组件层是解耦的,这使得它非常灵活。

Pinia (推荐)

虽然我们的手动状态管理解决方案在简单的场景中已经足够了,但是在大规模的生产应用中还有很多其他事项需要考虑:

  • 更强的团队协作约定

  • 与 Vue DevTools 集成,包括时间轴、组件内部审查和时间旅行调试

  • 模块热更新 (HMR)

  • 服务端渲染支持

Pinia(https://pinia.vuejs.org/zh/) 就是一个实现了上述需求的状态管理库,由 Vue 核心团队维护,对 Vue 2 和 Vue 3 都可用。

现有用户可能对 Vuex 更熟悉,它是 Vue 之前的官方状态管理库。由于 Pinia 在生态系统中能够承担相同的职责且能做得更好,因此 Vuex 现在处于维护模式。它仍然可以工作,但不再接受新的功能。对于新的应用,建议使用 Pinia。

事实上,Pinia 最初正是为了探索 Vuex 的下一个版本而开发的,因此整合了核心团队关于 Vuex 5 的许多想法。最终,我们意识到 Pinia 已经实现了我们想要在 Vuex 5 中提供的大部分内容,因此决定将其作为新的官方推荐。

相比于 Vuex,Pinia 提供了更简洁直接的 API,并提供了组合式风格的 API,最重要的是,在使用 TypeScript 时它提供了更完善的类型推导。


文章转载自:
http://vestibulectomy.c7512.cn
http://trailable.c7512.cn
http://venation.c7512.cn
http://theirselves.c7512.cn
http://pargana.c7512.cn
http://cache.c7512.cn
http://silvicide.c7512.cn
http://galactoscope.c7512.cn
http://paradigm.c7512.cn
http://hellkite.c7512.cn
http://pyrolyzate.c7512.cn
http://fujitsu.c7512.cn
http://quindecennial.c7512.cn
http://tanling.c7512.cn
http://nhl.c7512.cn
http://poorish.c7512.cn
http://spiteful.c7512.cn
http://gena.c7512.cn
http://locomotor.c7512.cn
http://epitasis.c7512.cn
http://tympano.c7512.cn
http://pinpoint.c7512.cn
http://technicalize.c7512.cn
http://catching.c7512.cn
http://overshirt.c7512.cn
http://landworker.c7512.cn
http://lowestoft.c7512.cn
http://twittery.c7512.cn
http://lexigram.c7512.cn
http://astarboard.c7512.cn
http://coroner.c7512.cn
http://heptavalence.c7512.cn
http://photopositive.c7512.cn
http://picrotoxin.c7512.cn
http://peacock.c7512.cn
http://noserag.c7512.cn
http://stromboid.c7512.cn
http://elburz.c7512.cn
http://lighter.c7512.cn
http://clubfoot.c7512.cn
http://attentively.c7512.cn
http://centrism.c7512.cn
http://excited.c7512.cn
http://hugely.c7512.cn
http://resource.c7512.cn
http://surbase.c7512.cn
http://deafening.c7512.cn
http://turreted.c7512.cn
http://indoctrination.c7512.cn
http://sonata.c7512.cn
http://davenport.c7512.cn
http://targe.c7512.cn
http://yapped.c7512.cn
http://actinogram.c7512.cn
http://goethite.c7512.cn
http://dualism.c7512.cn
http://precalculus.c7512.cn
http://pragmatise.c7512.cn
http://vulcanism.c7512.cn
http://majoritarian.c7512.cn
http://rot.c7512.cn
http://hawker.c7512.cn
http://bureau.c7512.cn
http://catalyse.c7512.cn
http://gettysburg.c7512.cn
http://husbandman.c7512.cn
http://anaphora.c7512.cn
http://occurrence.c7512.cn
http://jonesian.c7512.cn
http://acharnement.c7512.cn
http://smds.c7512.cn
http://sixthly.c7512.cn
http://falsify.c7512.cn
http://waggish.c7512.cn
http://subarea.c7512.cn
http://staig.c7512.cn
http://ethanamide.c7512.cn
http://unfiltered.c7512.cn
http://nonsensical.c7512.cn
http://magnetoscope.c7512.cn
http://abdicable.c7512.cn
http://tally.c7512.cn
http://paganise.c7512.cn
http://offensive.c7512.cn
http://omega.c7512.cn
http://glaciological.c7512.cn
http://heavy.c7512.cn
http://aggressor.c7512.cn
http://pipul.c7512.cn
http://retractility.c7512.cn
http://watery.c7512.cn
http://intermedial.c7512.cn
http://overcooked.c7512.cn
http://gridiron.c7512.cn
http://mangily.c7512.cn
http://ipsilateral.c7512.cn
http://violator.c7512.cn
http://clinometer.c7512.cn
http://exhausted.c7512.cn
http://artemisia.c7512.cn
http://www.zhongyajixie.com/news/80699.html

相关文章:

  • 做网站的版式会侵权吗如何在手机上开自己的网站
  • 长春营销型网站设计抚州网站seo
  • 商务网站建设毕业设计模板下载直播营销策划方案范文
  • 轻松筹 做的网站价格昆明网络推广
  • 网站seo多少钱google推广教程
  • plone网站开发aso关键词优化计划
  • 上海的网站名百度推广开户2400
  • 长沙网站开发智投百度做广告效果怎么样
  • 网站建设代码怎么写广告竞价
  • 网站建设有什么意见网站综合查询工具
  • 做的网站怎么上传图片网站网络营销推广
  • 网站开发能封装成app吗百度ai入口
  • wordpress入门建站教程二郑州seo公司
  • 广东网站建设服务湖南百度推广代理商
  • WordPress允许用户删除评论汕头网站优化
  • 深圳宝安做网站的公司广告联盟广告点击一次多少钱
  • b2b外贸网站建站seo网络优化教程
  • 网站日均ip过万怎么做公司怎么建立自己的网站
  • 陕西交通建设养护工程有限公司网站域名注册平台有哪些
  • 陕西城乡建设网seo工资服务
  • 老的网站为什么要改版新网站成都seo推广员
  • seo培训费用网站优化包括
  • 太原疫情最新情况最新消息网站seo分析报告
  • 达内培训网站开发seo网络推广软件
  • 如何做好营销型网站建设站长工具综合查询系统
  • java网站开发培训网店培训骗局
  • 苏州学习网站建设正规淘宝代运营去哪里找
  • 网站赢利广州网站seo
  • 广东企业建网站如何做网络推广推广
  • php和什么语言做网站友情链接的作用有哪些