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

可克达拉市网站建设_网站建设公司_JavaScript_seo优化

内江市住房和城乡建设局网站电话,网站制作报价ihanshi,长春科技网站建设,适合做网页的主题文章目录 一、Vue3 新特性1.1 重写双向数据绑定1.1.1 Vue2 基于Object.defineProperty() 实现1.1.2 Vue3 基于Proxy 实现 1.2 优化 虚拟DOM1.3 Fragments1.4 Tree shaking1.5 Composition API 二、 vue-devtools 调试工具三、环境配置四、脚手架目录介绍五、SFC 语法规范解析附… 文章目录 一、Vue3 新特性1.1 重写双向数据绑定1.1.1 Vue2 基于Object.defineProperty() 实现1.1.2 Vue3 基于Proxy 实现 1.2 优化 虚拟DOM1.3 Fragments1.4 Tree shaking1.5 Composition API 二、 vue-devtools 调试工具三、环境配置四、脚手架目录介绍五、SFC 语法规范解析附录推荐采用国内淘宝镜像策略 一、Vue3 新特性 1.1 重写双向数据绑定 1.1.1 Vue2 基于Object.defineProperty() 实现 数字化管理平台 Vue3ViteVueRouterPiniaAxiosElementPlus 权限系统-商城 个人博客地址 把 Vue 中的核心方法 defineReactive 做一些简化如下 function defineReactive (obj, key, val, cb) {var dep new Dep();Object.defineProperty(obj, key, {enumerable: true,configurable: true,get: (){/*....依赖收集等....*/dep.depend()return val},set:newVal {val newVal;/*触发回调*/dep.notify()}}) }Vue通过defineReactive方法实现对需要观察的对象的每个属性进行监控。dep对象就相当于一个调度中心的作用如果有数据用到这个属性它就会自动收集该属性到调度中心如果某属性发生了改变那就会通知调度中心来更新视图。 1.1.2 Vue3 基于Proxy 实现 let proxyObj new Proxy(obj,{get : function (target,prop) {return prop in target ? target[prop] : 0},set : function (target,prop,value) {target[prop] 888;} })Proxy 与 Object.defineProperty(obj, prop, desc)方式相比有以下优势 丢掉麻烦的备份数据**省去for in 循环可以监听数组变化 代码更简化 可以监听动态新增的属性可以监听删除的属性可以监听数组的索引和 length 属性 1.2 优化 虚拟DOM 在Vue2中,每次更新diff,都是全量对比,Vue3则只对比带有标记的,这样大大减少了非动态内容的对比消耗 Vue Template Explorer我们可以通过这个网站看到静态标记 patch flag 优化静态树 spanHello world!/span spanHello world!/span spanHello world!/span spanHello world!/span span{{msg}}/span spanHello world!/span spanHello world! /spanVue3 编译后的 Vdom 是这个样子的 export function render(_ctx_cache$props$setup$data$options){return (_openBlock(),_createBlock(_Fragment,null[ _createvNode( span, null,Hello world ! ), _createvNode( span,nullHello world! ), _createvNode( spannullHello world! ), _createvNode( span, nullHello world! ), _createVNode(span, null_toDisplaystring(_ctx.msg)1/* TEXT */) _createvNode( span, nullHello world! ), _createvNode( span, nullHello world! )]64/*STABLE_FRAGMENT */))新增了 patch flag 标记 TEXT 1 // 动态文本节点 CLASS11,1 // 2//动态class STYLE12// 4 //动态style PROPS13,// 8 //动态属性但不包含类名和样式 FULLPR0PS14,// 16 //具有动态key属性当key改变时需要进行完整的diff比较。 HYDRATE_ EVENTS 1 5// 32 //带有监听事件的节点 STABLE FRAGMENT 1 6, // 64 //一个不会改变子节点顺序的fragment KEYED_ FRAGMENT 1 7, // 128 //带有key属性的fragment 或部分子字节有key UNKEYED FRAGMENT 1 8, // 256 //子节点没有key 的fragment NEED PATCH 1 9, // 512 //一个节点只会进行非props比较 DYNAMIC_SLOTS 1 10 // 1024 // 动态slot HOISTED -1 // 静态节点 BALL -2我们发现创建动态 dom 元素的时候Vdom 除了模拟出来了它的基本信息之外还给它加了一个标记 1 /* TEXT */这个标记就叫做 patch flag补丁标记。patch flag 的强大之处在于当你的 diff 算法走到 _createBlock 函数的时候会忽略所有的静态节点只对有标记的动态节点进行对比而且在多层的嵌套下依然有效。尽管 JavaScript 做 Vdom 的对比已经非常的快但是 patch flag 的出现还是让 Vue3 的 Vdom 的性能得到了很大的提升尤其是在针对大组件的时候。 1.3 Fragments vue3 允许我们支持多个根节点 divHello World/div divHello Vue/div div :keyindex v-foritem,index in [10,20,304]{{item}}/div同时支持render JSX 写法 render() {return ({this.visable ? (div{this.obj.name}/div) : (div{this.obj.price}/div)}input v-model{this.val}/input{[1, 2, 3].map((v) {return div{v}-----/div;})}/); },同时新增了Suspense teleport 和 多 v-model 用法 1.4 Tree shaking 简单来讲就是在保持代码运行结果不变的前提下去除无用的代码。 在Vue2中无论我们使用什么功能它们最终都会出现在生产代码中。主要原因是Vue实例在项目中是单例的捆绑程序无法检测到该对象的哪些属性在代码中被使用到。而 Vue3源码引入tree shaking特性将全局 API 进行分块。如果你不使用其某些功能它们将不会包含在你的基础包中。就是比如你要用watch 就是import {watch} from ‘vue’ 其他的computed 没用到就不会给你打包减少体积 1.5 Composition API 组合式 API (Composition API) 是一系列 API 的集合使我们可以使用函数而不是声明选项的方式书写 Vue 组件。它是一个概括性的术语涵盖了以下方面的 API 响应式 API例如 ref() 和 reactive()使我们可以直接创建响应式状态、计算属性和侦听器。 生命周期钩子例如 onMounted() 和 onUnmounted()使我们可以在组件各个生命周期阶段添加逻辑。 依赖注入例如 provide() 和 inject()使我们可以在使用响应式 API 时利用 Vue 的依赖注入系统。 组合式 API 是 Vue 3 及 Vue 2.7 的内置功能。对于更老的 Vue 2 版本可以使用官方维护的插件 vue/composition-api。在 Vue 3 中组合式 API 基本上都会配合 script setupimport { ref, onMounted } from vue// 响应式状态const count ref(0)// 更改状态、触发更新的函数function increment() {count.value}// 生命周期钩子onMounted(() {console.log(计数器初始值为 ${count.value}。)}) /scripttemplatebutton clickincrement点击了{{ count }} 次/button /template使用组合式 API 有以下几点优势 更好的逻辑复用 组合式 API 最基本的优势是它使我们能够通过组合函数来实现更加简洁高效的逻辑复用。在选项式 API 中我们主要的逻辑复用机制是 mixins而组合式 API 解决了 mixins 的所有缺陷。 组合式 API 提供的逻辑复用能力孵化了一些非常棒的社区项目比如 VueUse一个不断成长的工具型组合式函数集合。更灵活的代码组织 同一个逻辑关注点相关的代码被归为了一组我们无需再为了一个逻辑关注点在不同的选项块间来回滚动切换。此外我们现在可以很轻松地将这一组代码移动到一个外部文件中不再需要为了抽象而重新组织代码大大降低了重构成本这在长期维护的大型项目中非常关键。更好的类型推导 组合式 API 主要利用基本的变量和函数它们本身就是类型友好的。用组合式 API 重写的代码可以享受到完整的类型推导不需要书写太多类型标注。大多数时候用 TypeScript 书写的组合式 API 代码和用 JavaScript 写都差不太多更小的生产包体积 搭配 script setup 使用组合式 API 比等价情况下的选项式 API 更高效对代码压缩也更友好。这是由于 script setup 形式书写的组件模板被编译为了一个内联函数和 script setup 中的代码位于同一作用域。不像选项式 API 需要依赖 this 上下文对象访问属性被编译的模板可以直接访问 script setup 中定义的变量无需从实例中代理。这对代码压缩更友好因为本地变量的名字可以被压缩但对象的属性名则不能。 二、 vue-devtools 调试工具 vue 官方提供的vue-devtools调试工具能够方便开发者对vue 项目进行调试与开发。Chrome 浏览器在线安装vue-devtools vue 2.x 调试工具 https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd vue 3.x 调试工具 https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg 注意vue2 和vue3 的浏览器调试工具不能交叉使用 点击Chrome 浏览器右上角的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-clRSTwtM-1672016260783)(Vue3课程笔记导读.assets/image-20221225220407446.png)] 按钮选择更多工具- 扩展程序- Vue.js devtools 详细信息并勾选如下的两个选项 注意修改完配置项须重启浏览器才能生效 在浏览器中访问一个使用了vue 的页面打开浏览器的开发者工具切换到Vue 面板即可使用vue-devtools调试当前的页面。 三、环境配置 开发环境Vite3 Vue3 兼容性Vite 需要 Node.js版本 14.1816。然而有些模板需要依赖更高的 Node 版本才能正常运行当你的包管理器发出警告时请注意升级你的 Node 版本。Vue3 采用组合式 API 官方推荐的 IDE 配置 Visual Studio Code Vite 搭建脚手架 执行如下命令初始化项目 npm init vuelatest这一指令将会安装并执行 create-vue它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示 ✔ Project name: … your-project-name ✔ Add TypeScript? … No / Yes ✔ Add JSX Support? … No / Yes ✔ Add Vue Router for Single Page Application development? … No / Yes ✔ Add Pinia for state management? … No / Yes ✔ Add Vitest for Unit testing? … No / Yes ✔ Add Cypress for both Unit and End-to-End testing? … No / Yes ✔ Add ESLint for code quality? … No / Yes ✔ Add Prettier for code formatting? … No / YesScaffolding project in ./your-project-name... Done.如果不确定是否要开启某个功能你可以直接按下回车键选择 No。在项目被创建后通过以下步骤安装依赖并启动开发服务器 cd your-project-name npm install npm run dev注也可以采用 vite 官方命令配置 vue 项目 npm init vitelatest # or npm create vitelatest安装 sass 预处理语言 npm install --save-dev sass四、脚手架目录介绍 public 下面的不会被编译 可以存放静态资源assets 下面可以存放可编译的静态资源components 下面用来存放我们的组件router 存放路由相关文件stores 存放状态管理相关文件App.vue 是全局组件main.js 全局的 js 文件index.html 非常重要的入口文件 Vite 的入口文件是一个 html 文件他刚开始不会编译这些 js 文件 只有当你用到的时候 如script src“xxxxx.js” 会发起一个请求被vite拦截这时候才会解析js文件vite.config.js 这是vite的配置文件具体配置项 后面会详解 五、SFC 语法规范解析 *.vue 件都由三种类型的顶层语法块所组成template、script、style template 每个 *.vue 文件最多可同时包含一个顶层 template 块。其中的内容会被提取出来并传递给 vue/compiler-dom预编译为 JavaScript 的渲染函数并附属到导出的组件上作为其 render 选项。 script 每一个*.vue文件可以有多个 script 块 (不包括script setup)该脚本将作为 ES Module 来执行。其默认导出的内容应该是 Vue 组件选项对象它要么是一个普通的对象要么是 defineComponent 的返回值。 script setup 每个 *.vue 文件最多只能有一个 script setup 块 (不包括常规的 script)该脚本会被预处理并作为组件的 setup() 函数使用也就是说它会在每个组件实例中执行。script setup 的顶层绑定会自动暴露给模板。更多详情请查看 script setup 文档。 style 一个 *.vue 文件可以包含多个 style 标签。style标签可以通过 scoped 或 module attribute (更多详情请查看 SFC 样式特性) 将样式封装在当前组件内。多个不同封装模式的 style 标签可以在同一个组件中混用。 附录推荐采用国内淘宝镜像策略 全局安装淘宝镜像 npm install -g cnpm --registryhttps://registry.npm.taobao.org
http://www.lebaoying.cn/news/36335.html

相关文章:

  • 做网站如何下载别人网站图片重庆网站建站模板
  • 长沙设计网站排名广州网站建设海珠新科
  • 南京医院手机网站建设平台网站建设合同
  • 上海市企业网站建设品牌型网站成功案例图片
  • 上海微信网站开发大连手机模板建站
  • 网站建设面谈话术连云港中信建设证券网站
  • 如何建一个简单的网站凡客登录
  • 小米路由器做网站服务器吗万国企业网
  • 网站建设技术风险分析旅游网站改版方案
  • 工程信息价查询网站南宁网站建设升上去
  • 怎么学习建设网站聚名网备案查询
  • php技术应用于中小企业网站开发泉州网络推广专员
  • 别人做网站要把什么要过来做写字楼的网站有哪些资料
  • 潍坊最早做网站的公司做变性手术视频网站
  • 网站开发攻克时间竞价推广网站建设
  • 阜宁做网站的价格网站分析表
  • 厦门网站建设114北京市门户网站
  • 做网站怎么让百度收录了wordpress怎么填写横幅图片
  • 怎么攻击网站吗成都专业网站制作建设
  • 厦门建设网站公司公司增加英文网站要怎么做
  • 网站建设是干什么网站建设注册小程序
  • 网络推广有哪几种方法关键词优化seo外包
  • 营口沿海开发建设有限公司网站云南人参果
  • 开个捕鱼网站怎么做wordpress要求配置
  • 网站建设功能规划本网站正在建设图片
  • 辽宁鹤城建设集团网站做软件页面设计的软件
  • 长沙哪里可以做网站上海网址大全
  • 建设企业网站需要什么SEO如何建设网站
  • 深圳网站建设价格品牌营销方案模板
  • 网站推广的要点建设优化一个网站步骤