
发表日期: 2021-04-01 12:39:06 浏览次数:211
衡东网站制作要多少钱【域名企业邮箱服务器注册申请办理】衡东网络优化公司哪家好、衡东软件开发外包价格、衡东高端企业网站页面制作设计专业公司、衡东微信公众号小程序购物支付搭建制作公司
衡东县,隶属于湖南省衡阳市,位于湖南东部偏南,居湘江中游的衡阳盆地与醴攸盆地之间。东连攸县,南与安仁县、衡南县为邻,西部是50公里长、400米宽的湘江与衡山县隔水分界,北与渌口区接壤。该县森林覆盖率达到51%,是“全国造林绿化百佳县”。
有“鱼米之乡”、“皮影戏之乡”、“花鼓戏之乡”、“剪纸之乡”和“印章之乡”之称,是湖南省截止2014年唯一冠名的“土菜名县”。
2015年,根据衡东县乡镇区划调整方案,调整后下辖2乡15镇:踏庄、珍珠2个乡和城关镇成建制合并设立洣水镇。德圳、栗木、莫井3个乡和吴集镇成建制合并设立吴集镇。大桥镇、三樟乡成建制合并设立三樟镇。草市镇、高塘乡成建制合并设立草市镇。
本轮乡镇行政区划调整,衡东县共撤销7个乡级建制,现辖石滩、南湾2个乡,洣水、吴集、三樟、草市、大浦、新塘、霞流、甘溪、杨桥、荣桓、蓬源、石湾、白莲、杨林、高湖15个镇。县人民政府驻洣水镇(原县人民政府驻地)。
2016年末全县常住人口为63.82万人,全县实现地区生产总值261.70亿元,同比增长7.9%。
关于 Vue 实例的选项,上面讲了最基本的生命周期钩子,以及 DOM 渲染相关的。而数据相关的,或许要结合模板语法来一起讲,会更好理解。
关于数据绑定、事件绑定,其实也是一种 Vue 提供的方便开发者使用的模板语法。在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。下面我们会结合对语法的理解,来介绍它们的使用。
数据绑定在 Vue 里有最基础的几种方式:
表 3-3 Vue 中数据绑定的常用方式
语法 | 说明 |
|---|---|
插值语法 | 文本插值,可配合过 Javascript 表达式和过滤器使用 |
| 一次性插值,数据改变时插值处的内容不会更新 |
| 可输出真正的 HTML,不会被转义为普通文本 |
| 可用于绑定 DOM 属性、或一个组件 prop 到表达式 |
我们来简单看看插值相关的绑定语法:
<template>
<div>{{ message }}</div>
<div v-once>{{ message }}</div>
<div v-html="message"></div>
<div>{{ msgHtml }}</div>
<div v-html="msgHtml"></div></template><script>
export default {
data() {
return {
message: "欢迎来到Vue的世界",
msgHtml: "<p style='color: red'>欢迎来到红色Vue的世界</p>"
};
},
created() {
this.message = "啦啦啦啦啦啦";
},
mounted() {
this.message = "略略略略略";
}
};</script>复制代码虽然比较简单,但有意思的地方在于,你能猜到最终的真实 DOM 渲染是这样的吗:

图 3-5 Vue 中数据绑定渲染结果
我们知道,v-once只渲染元素和组件一次,后面的所有重新渲染过程,被绑定的该元素/组件及其所有的子节点将被视为静态内容并跳过。但在这里,最终呈现的并不是我们初始data中的“欢迎来到 Vue 的世界”,而是created周期中设定的“啦啦啦啦啦啦”。
前面讲 Vue 生命周期钩子的时候我们知道,真实 DOM 挂载发生在beforeMount之后、mounted之前,也就是说,我们在mounted之前的生命周期中更改data中 message 的值,都是有效的。
所以关于插值,需要注意以下两点:
(1) v-once在mounted生命周期之后,不可再更改。
(2) v-html请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值,因为它很容易导致 XSS 攻击(该内容在第1章有阐述)。
Vue 中支持完全的 Javascript 表达式(请注意不是语句噢),因为我们可以直接在模板中做很多数据的处理和逻辑判断:
{{ price * 100 + 2000 }} {{ message.split('').reverse().join('') }} {{ type ==='group' ? '团队' : '个人' }}<div v-bind:class="isActived ? 'actived' : ''"></div><div v-bind:index="'item-' + index"></div><!-- 以下是语句,不是表达式 -->{{ var message = "123" }} {{ if(type === 'group') { return '团队' } }}复制代码其实v-bind也是插值的一种,只不过它的使用方式更加灵活和多变,所以这里单独进行介绍,我们来看看以下的用法:
<!-- 绑定一个属性 --><img v-bind:src="imageSrc" /><!-- 缩写 --><img :src="imageSrc" /><!-- 最终会生成 `<img src="${imageSrc}">` 这样的模板 --><!-- 动态特性名 (2.6.0+) --><button v-bind:[key]="value"></button><!-- 动态特性名缩写 (2.6.0+) --><button :[key]="value"></button><!-- 最终会生成 `<button ${key}="${value}">` 这样的模板 --><!-- 内联字符串拼接 --><img :src="'/path/to/images/' + fileName" /><!-- class 绑定 --><div :class="{ red: isRed }"></div><div :class="[classA, classB]"></div><div :class="[classA, { classB: isB, classC: isC }]">
<!-- style 绑定 -->
<div :style="{ fontSize: size + 'px' }"></div>
<div :style="[styleObjectA, styleObjectB]"></div>
<!-- 绑定一个有属性的对象 -->
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div></div>复制代码除了 style 绑定、class 绑定以及一些常用属性 src 等绑定在日常开发中会使用较多外,还有一个重要的 prop 绑定,用于向子组件传递数据,例如我们有这么一个组件:
Vue.component("my-text", {
props: ["text"],
template: "<p>{{ text }}</p>"});复制代码则可以通过<my-text :text="myText"></my-text>的方式使用。有关组件、子组件的内容,会在后面章节详细讲述,这里就不多再说了。
data是 Vue 实例的数据对象,是上述所有数据绑定的数据来源。
var vm = new Vue({
// 1. 接受返回对象的函数
data() {
return {
message: "欢迎来到Vue的世界"
};
},
// 2. 也可以直接棒对象
data: {
message: "欢迎来到Vue的世界"
}});复制代码我们已经知道,Vue 里数据的变更检测是来自于 getter/setter,从而让data的属性能够响应数据变化。前面我们也讲到,Vue 将遍历 data 选项的 JavaScript 对象所有的属性,并使用Object.defineProperty把这些属性全部转为 getter/setter:
// 响应式的变更检测Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
// getter
get: function reactiveGetter() {
const value = getter ? getter.call(obj) : val;
if (Dep.target) {
// 依赖检测
dep.depend();
if (childOb) {
childOb.dep.depend();
if (Array.isArray(value)) {
dependArray(value);
}
}
}
return value;
},
// setter,最终更新后会通知噢
set: function reactiveSetter(newVal) {
const value = getter ? getter.call(obj) : val;
if (newVal === value || (newVal !== newVal && value !== value)) {
return;
}
if (process.env.NODE_ENV !== "production" && customSetter) {
customSetter();
}
if (getter && !setter) return;
if (setter) {
setter.call(obj, newVal);
} else {
val = newVal;
}
childOb = !shallow && observe(newVal);
// 会通知噢
dep.notify();
}});复制代码由于 Vue 会在初始化实例时对属性执行 getter/setter 转化,所以属性必须在 data 对象上存在才能让 Vue 将它转换为响应式的。换句话说,只有当实例被创建时就已经存在于data中的属性才是响应式的(新增的属性等都不会触发视图的更新)。问题也是很显然,Vue 无法检测到对象属性的添加或删除,也无法检测一些特殊的数组变动:
// 只有这些操作会通知变更噢const methodsToPatch = [
"push",
"pop",
"shift",
"unshift",
"splice",
"sort",
"reverse"];// 拦截上述这些操作方法,然后通知变更methodsToPatch.forEach(function(method) {
// cache original method
const original = arrayProto[method];
def(arrayMethods, method, function mutator(...args) {
const result = original.apply(this, args);
const ob = this.__ob__;
let inserted;
switch (method) {
case "push":
case "unshift":
inserted = args;
break;
case "splice":
inserted = args.slice(2);
break;
}
if (inserted) ob.observeArray(inserted);
// notify change
ob.dep.notify();
return result;
});});复制代码所以在更新data中绑定的对象或者数组的时候需要注意,除了使用可触发变更检测的特殊方法之外,也可以使用vm.$set(Vue.set)实例方法。vm.$set(Vue.set)用于向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新:
// 更新数组vm.$set(vm.items, indexOfItem, newValue);// 更新对象vm.$set(vm.someObject, keyOfObject, newValue);
衡东网站制作要多少钱【域名企业邮箱服务器注册申请办理】衡东网络优化公司哪家好、衡东软件开发外包价格、衡东高端企业网站页面制作设计专业公司、衡东微信公众号小程序购物支付搭建制作公司
服务热线
顶部
备案号: 苏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