
发表日期: 2021-05-20 14:10:40 浏览次数:105
昌邑小程序制作【昌邑企业邮箱】昌邑网站外包、昌邑微信商城开发、昌邑网店美工、昌邑淘宝设计

昌邑市属于潍坊市下辖的县级市,位于山东半岛西北部,潍河下游,莱州湾畔,介于北纬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.场景:如页面需要导入多个组件,原始写法:
import titleCom from @/components/home/titleCom
import bannerCom from @/components/home/bannerCom
import cellCom from @/components/home/cellCom
components:{titleCom,bannerCom,cellCom}2.这样就写了大量重复的代码,利用 require.context 可以写成
const path = require( path )
const files = require.context( @/components/home , false, /.vue$/)
const modules = {}
files.keys().forEach(key => {
const name = path.basename(key, .vue )
modules[name] = files(key).default || files(key)
})
components:modules这样不管页面引入多少组件,都可以使用这个方法
3.API 方法
实际上是 webpack 的方法,vue 工程一般基于 webpack,所以可以使用 require.context(directory,useSubdirectories,regExp) 接收三个参数: directory:说明需要检索的目录 useSubdirectories:是否检索子目录 regExp: 匹配文件的正则表达式,一般是文件名
1.场景:表格初始进来需要调查询接口 getList(),然后input 改变会重新查询
created(){
this.getList()
},
watch: {
inpVal(){
this.getList()
}
}2.可以直接利用 watch 的immediate和handler属性简写
watch: {
inpVal:{
handler: getList ,
immediate: true
}
}3.watch 的 deep 属性,深度监听,也就是监听复杂数据类型
watch:{
inpValObj:{
handler(newVal,oldVal){
console.log(newVal)
console.log(oldVal)
},
deep:true
}
}此时发现oldVal和 newVal 值一样;
因为它们索引同一个对象/数组,Vue 不会保留修改之前值的副本;
所以深度监听虽然可以监听到对象的变化,但是无法监听到具体对象里面那个属性的变化
这个应该非常属性,就是父传子的属性;
props 值可以是一个数组或对象;
// 数组:不建议使用
props:[]
// 对象
props:{
inpVal:{
type:Number, //传入值限定类型
// type 值可为String,Number,Boolean,Array,Object,Date,Function,Symbol
// type 还可以是一个自定义的构造函数,并且通过 instanceof 来进行检查确认
required: true, //是否必传
default:200, //默认值,对象或数组默认值必须从一个工厂函数获取如 default:()=>[]
validator:(value) {
// 这个值必须匹配下列字符串中的一个
return [ success , warning , danger ].indexOf(value) !== -1
}
}
}这个也应该非常常见,触发子组件触发父组件给自己绑定的事件,其实就是子传父的方法
// 父组件
<home @title="title">
// 子组件
this.$emit( title ,[{title: 这是title }])1.这个也是很常用的,vuex 是一个状态管理器
2.是一个独立的插件,适合数据共享多的项目里面,因为如果只是简单的通讯,使用起来会比较重
3.API
state:定义存贮数据的仓库 ,可通过this.$store.state 或mapState访问 getter:获取 store 值,可认为是 store 的计算属性,可通过this.$store.getter 或 mapGetters访问 mutation:同步改变 store 值,为什么会设计成同步,因为mutation是直接改变 store 值, vue 对操作进行了记录,如果是异步无法追踪改变.可通过mapMutations调用 action:异步调用函数执行mutation,进而改变 store 值,可通过 this.$dispatch或mapActions 访问 modules:模块,如果状态过多,可以拆分成模块,最后在入口通过...解构引入
2.4.0 新增
这两个是不常用属性,但是高级用法很常见;
1.场景如果父传子有很多值那么在子组件需要定义多个解决attrs获取子传父中未在 props 定义的值
// 父组件
<home title="这是标题" width="80" height="80" imgUrl="imgUrl"/>
// 子组件
mounted() {
console.log(this.$attrs) //{title: "这是标题", width: "80", height: "80", imgUrl: "imgUrl"}
},相对应的如果子组件定义了 props,打印的值就是剔除定义的属性
props: {
width: {
type: String,
default:
}
},
mounted() {
console.log(this.$attrs) //{title: "这是标题", height: "80", imgUrl: "imgUrl"}
},2.场景子组件需要调用父组件的方法解决父组件的方法可以通过listeners” 传入内部组件——在创建更高层次的组件时非常有用
// 父组件
<home @change="change"/>
// 子组件
mounted() {
console.log(this.$listeners) //即可拿到 change 事件
}如果是孙组件要访问父组件的属性和调用方法,直接一级一级传下去就可以
3.inheritAttrs
// 父组件
<home title="这是标题" width="80" height="80" imgUrl="imgUrl"/>
// 子组件
mounted() {
console.log(this.$attrs) //{title: "这是标题", width: "80", height: "80", imgUrl: "imgUrl"}
},
inheritAttrs默认值为true,true的意思是将父组件中除了props外的属性添加到子组件的根节点上(说明,即使设置为true,子组件仍然可以通过$attr获取到props意外的属性)
将inheritAttrs:false后,属性就不会显示在根节点上了2.2.0 新增
描述:
provide 和 inject 主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中;
并且这对选项需要一起使用;
以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。
//父组件:
provide: { //provide 是一个对象,提供一个属性或方法
foo: 这是 foo ,
fooMethod:()=>{
console.log( 父组件 fooMethod 被调用 )
}
},
// 子或者孙子组件
inject: [ foo , fooMethod ], //数组或者对象,注入到子组件
mounted() {
this.fooMethod()
console.log(this.foo)
}
//在父组件下面所有的子组件都可以利用injectprovide 和 inject 绑定并不是可响应的。这是官方刻意为之的。
然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的,对象是因为是引用类型
//父组件:
provide: {
foo: 这是 foo
},
mounted(){
this.foo= 这是新的 foo
}
// 子或者孙子组件
inject: [ foo ],
mounted() {
console.log(this.foo) //子组件打印的还是 这是 foo
}
服务热线
顶部
备案号: 苏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