
发表日期: 2021-05-20 14:13:37 浏览次数:89
昌邑网络公司哪家好【昌邑企业网站百度SEO推广公司】昌邑做网站开发价格、昌邑淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、昌邑高端企业网站页面制作设计专业公司需要多少钱

昌邑市属于潍坊市下辖的县级市,位于山东半岛西北部,潍河下游,莱州湾畔,介于北纬36°25′-37°08′,东经119°13′-119°37′之间,东与莱州市、平度市以胶莱河为界,南与高密市、安丘市毗连,西与潍坊市坊子区、寒亭区为邻,北濒莱州湾,属市域总面积1578.7平方公里。 [1-2] 截至2016年,昌邑市辖3个街道、6个镇。
昌邑市属环渤海经济圈,为国务院确定的沿海对外开放城市之一,被誉为中国丝绸之乡、华侨之乡和中国溴·盐之乡, 先后被评为中国北方绿化苗木基地、中国纺织产业基地市、中国超纤产业基地、中国中小城市综合实力百强县市 [3] 、中国最具投资潜力中小城市百强县市 [4] 等荣誉称号。 [5] 2018年10月,昌邑市入选“综合实力百强县”、 [6] 全国投资潜力百强县市、 [7] 全国绿色发展百强县市 [8] 、全国科技创新百强县市、全国新型城镇化质量百强县市 [9] 。 [10] 2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国绿色发展百强县市、全国科技创新百强县市 [11] 。 [12-13] 2020年山东省四星级新型智慧城市建设预试点城市, [14] 全国文明城市。 [15]
1.场景:有些代码在 template 里面写会重复很多,所以这个时候 render 函数就有作用啦
// 根据 props 生成标签 // 初级 <template> <div> <div v-if="level === 1"> <slot></slot> </div> <p v-else-if="level === 2"> <slot></slot> </p> <h1 v-else-if="level === 3"> <slot></slot> </h1> <h2 v-else-if="level === 4"> <slot></slot> </h2> <strong v-else-if="level === 5"> <slot></slot> </stong> <textarea v-else-if="level === 6"> <slot></slot> </textarea> </div> </template> // 优化版,利用 render 函数减小了代码重复率 <template> <div> <child :level="level">Hello world!</child> </div> </template> <script type= text/javascript > import Vue from vue Vue.component( child , { render(h) { const tag = [ div , p , strong , h1 , h2 , textarea ][this.level-1] return h(tag, this.$slots.default) }, props: { level: { type: Number, required: true } } }) export default { name: hehe , data() { return { level: 3 } } } </script>
2.render 和 template 的对比
前者适合复杂逻辑,后者适合逻辑简单;
后者属于声明是渲染,前者属于自定Render函数;
前者的性能较高,后者性能较低。
场景:项目过大就会导致加载缓慢,所以异步组件实现按需加载就是必须要做的事啦
1.异步注册组件
3种方法
// 工厂函数执行 resolve 回调
Vue.component( async-webpack-example , function (resolve) {
// 这个特殊的 `require` 语法将会告诉 webpack
// 自动将你的构建代码切割成多个包, 这些包
// 会通过 Ajax 请求加载
require([ ./my-async-component ], resolve)
})
// 工厂函数返回 Promise
Vue.component(
async-webpack-example ,
// 这个 `import` 函数会返回一个 `Promise` 对象。
() => import( ./my-async-component )
)
// 工厂函数返回一个配置化组件对象
const AsyncComponent = () => ({
// 需要加载的组件 (应该是一个 `Promise` 对象)
component: import( ./MyComponent.vue ),
// 异步组件加载时使用的组件
loading: LoadingComponent,
// 加载失败时使用的组件
error: ErrorComponent,
// 展示加载时组件的延时时间。默认值是 200 (毫秒)
delay: 200,
// 如果提供了超时时间且组件加载也超时了,
// 则使用加载失败时使用的组件。默认值是:`Infinity`
timeout: 3000
})异步组件的渲染本质上其实就是执行2次或者2次以上的渲染, 先把当前组件渲染为注释节点, 当组件加载成功后, 通过 forceRender 执行重新渲染。或者是渲染为注释节点, 然后再渲染为loading节点, 在渲染为请求完成的组件
2.路由的按需加载
webpack< 2.4 时
{
path: / ,
name: home ,
components:resolve=>require([ @/components/home ],resolve)
}
webpack> 2.4 时
{
path: / ,
name: home ,
components:()=>import( @/components/home )
}
import()方法由es6提出,import()方法是动态加载,返回一个Promise对象,then方法的参数是加载到的模块。类似于Node.js的require方法,主要import()方法是异步加载的。场景:做一个 tab 切换时就会涉及到组件动态加载
<component v-bind:is="currentTabComponent"></component>
但是这样每次组件都会重新加载,会消耗大量性能,所以<keep-alive> 就起到了作用
<keep-alive> <component v-bind:is="currentTabComponent"></component> </keep-alive>
这样切换效果没有动画效果,这个也不用着急,可以利用内置的<transition>
<transition> <keep-alive> <component v-bind:is="currentTabComponent"></component> </keep-alive> </transition>
场景:如果开发一个 tree 组件,里面层级是根据后台数据决定的,这个时候就需要用到动态组件
// 递归组件: 组件在它的模板内可以递归的调用自己,只要给组件设置name组件就可以了。
// 设置那么House在组件模板内就可以递归使用了,不过需要注意的是,
// 必须给一个条件来限制数量,否则会抛出错误: max stack size exceeded
// 组件递归用来开发一些具体有未知层级关系的独立组件。比如:
// 联级选择器和树形控件
<template>
<div v-for="(item,index) in treeArr">
子组件,当前层级值: {{index}} <br/>
<!-- 递归调用自身, 后台判断是否不存在改值 -->
<tree :item="item.arr" v-if="item.flag"></tree>
</div>
</template>
<script>
export default {
// 必须定义name,组件内部才能递归调用
name: tree ,
data(){
return {}
},
// 接收外部传入的值
props: {
item: {
type:Array,
default: ()=>[]
}
}
}
</script>递归组件必须设置name 和结束的阀值
定义:无状态,无法实例化,内部没有任何生命周期处理方法
规则:在 2.3.0 之前的版本中,如果一个函数式组件想要接收 prop,则 props 选项是必须的。
在 2.3.0 或以上的版本中,你可以省略 props 选项,所有组件上的特性都会被自动隐式解析为 prop 在 2.5.0 及以上版本中,如果你使用了单文件组件(就是普通的.vue 文件),可以直接在 template 上声明functional 组件需要的一切都是通过 context 参数传递
context 属性有:
1.props:提供所有 prop 的对象
2.children: VNode 子节点的数组
3.slots: 一个函数,返回了包含所有插槽的对象
4.scopedSlots: (2.6.0+) 一个暴露传入的作用域插槽的对象。也以函数形式暴露普通插槽。
5.data:传递给组件的整个数据对象,作为 createElement 的第二个参数传入组件
6.parent:对父组件的引用
7.listeners: (2.3.0+) 一个包含了所有父组件为当前组件注册的事件监听器的对象。这是 data.on 的一个别名。
8.injections: (2.3.0+) 如果使用了 inject 选项,则该对象包含了应当被注入的属性
<template functional>
<div v-for="(item,index) in props.arr">{{item}}</div>
</template>昌邑网络公司哪家好【昌邑企业网站百度SEO推广公司】昌邑做网站开发价格、昌邑淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、昌邑高端企业网站页面制作设计专业公司需要多少钱
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878