,
限制了能被它包裹的元素,而一些像
这样的元素只能出现在某些其它元素内部。
在自定义组件中使用这些受限制的元素时会导致一些问题,例如:
自定义组件
被认为是无效的内容,因此在渲染的时候会导致错误。这时应使用特殊的 is
属性:
也就是说,标准HTML中,一些元素中只能放置特定的子元素,另一些元素只能存在于特定的父元素中。比如table
中不能放置div
,tr
的父元素不能div
等。所以,当使用自定义标签时,标签名还是那些标签的名字,但是可以在标签的is
属性中填写自定义组件的名字。
应当注意,如果您使用来自以下来源之一的字符串模板,这些限制将不适用:
JavaScript 内联模版字符串
.vue
组件
其中,前两个模板都不是Vue官方推荐的,所以一般情况下,只有单文件组件.vue
可以忽略这种情况。
组件的属性和事件
在html中使用元素,会有一些属性,如class
,id
,还可以绑定事件,自定义组件也是可以的。当在一个组件中,使用了其他自定义组件时,就会利用子组件的属性 和事件 来和父组件进行数据交流。
如上如所示,父子组件之间的通信就是 props down,events up ,父组件通过 属性props 向下传递数据给子组件,子组件通过 事件events 给父组件发送消息。 比如,子组件需要某个数据,就在内部定义一个prop
属性,然后父组件就像给html元素指定特性值一样,把自己的data属性传递给子组件的这个属性。 而当子组件内部发生了什么事情的时候,就通过自定义事件 来把这个事情涉及到的数据暴露出来,供父组件处理。
如上代码,
foo
是
组件内部定义的一个prop
属性,baz
是父组件的一个data属性,
event-a
是子组件定义的一个事件,doThis
是父组件的一个方法
过程就是这样:
父组件把baz
数据通过prop
传递给子组件的foo
;
子组件内部得到foo
的值,就可以进行相应的操作;
当子组件内部发生了一些变化,希望父组件能知道时,就利用代码触发event-a
事件,把一些数据发送出去
父组件把这个事件处理器绑定为doThis
方法,子组件发送的数据,就作为doThis
方法的参数被传进来
然后父组件就可以根据这些数据,进行相应的操作
属性Props
Vue组件通过props
属性来声明一个自己的属性,然后父组件就可以往里面传递数据。
Vue.component('mycomponent',{
template: '这是一个自定义组件,父组件传给我的内容是:{{myMessage}}
',
props: ['myMessage'],
data () {
return {
message: 'hello world'
}
}
})
然后调用该组件
注意 ,由于HTML特性是不区分大小写的,所以传递属性值时,myMessage
应该转换成 kebab-case (短横线隔开式)my-message="hello"
。
v-bind绑定属性值
这里说一下v-bind
绑定属性值的一个特性:一般情况下,使用v-bind
给元素特性(attribute)传递值时,Vue会将""
中的内容当做一个表达式。 比如:
hello
上面这样,div
元素的attr
特性值就是message
。
而这样
hello
这里的message
应该是Vue实例的data的一个属性,这样div
元素的attr
特性值就是message
这个属性的值。
之所以说是一般情况,是因为class
和style
特性并不是这样。用v-bind:class
和class
传入正常的类名,效果是一样的,因为对于这两个特性,Vue采用了合并而不是替换的原则。
动态绑定特性值
根据上面,想要把父组件的属性绑定到子组件,应该使用v-bind
,这样,父组件中数据改变时能反映到子组件。注意 ,根据父组件传递给子组件的属性类型的不同,当在子组件中更改这个属性时,会有以下两种情况:
当父组件传递的属性是引用类型时,在子组件中更改相应的属性会导致父组件相应属性的更改。
这是父组件的parentArray:{{parentArray}}
当父组件传递值为基本类型时,在子组件中更改这个属性会报错。正确的做法是,在父组件中绑定属性值时,加上.sync
修饰符。
然后在子组件中改变相应的属性
methods: {
changeArray () {
this.counter++
this.$emit('update:childArray', this.counter)
}
}
子组件希望对传入的prop进行操作
一般来说,是不建议在子组件中对父组件中传递来的属性进行操作的。如果真的有这种需求,可以这样:
父组件传递了一个基本类型值,那么可以在子组件中创建一个新的属性,并以传递进来的值进行初始化,之后就可以操作这个新的属性了
props: ['initialCounter'],
data: function () {
return { counter: this.initialCounter }
}
父组件传递了一个引用类型值,为了避免更改父组件中相应的数据,最好是对引用类型进行复制。复杂的情况,肯定应该是深复制。
给子组件传递正确类型的值
同样是上面的原因,静态的给子组件的特性传递值,它都会把他当做一个字符串。
子组件中,特性的值是字符串 "1" 而不是 number 1。如果想传递正确的数值,应该使用v-bind
传递,这样就能把传递的值当做一个表达式来处理,而不是字符串。
Prop验证
我们可以给组件的props
属性添加验证,当传入的数据不符合要求时,Vue会发出警告。
Vue.component('example', {
props: {
// 基础类型检测 (`null` 意思是任何类型都可以)
propA: Number,
// 多种类型
propB: [String, Number],
// 必传且是字符串
propC: {
type: String,
required: true
},
// 数字,有默认值
propD: {
type: Number,
default: 100
},
// 数组/对象的默认值应当由一个工厂函数返回
propE: {
type: Object,
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
return value > 10
}
}
}
})
type
可以是下面原生构造器:
String
Number
Boolean
Function
Object
Array
Symbol
type
也可以是一个自定义构造器函数,使用 instanceof
检测。
// 自定义Person构造器
function Person(name, age) {
this.name = name
this.age = age
}
Vue.component('my-component', {
template: `名字: {{ person-prop.name }}, 年龄: {{ person-prop.age }}
`,
props: {
person-prop: {
type: Person // 指定类型
}
}
})
new Vue({
el: '#app2',
data: {
person: 2 // 传入Number类型会报错
}
})
非Prop类型的属性
也可以像在html标签中添加data-
开头的自定义属性一样,给自定义组件添加任意的属性。而不仅限于data-*
形式,这样做的话,Vue会把这个属性放在自定义组件的根元素上。一个自定义组件的模板只能有一个根元素 。
覆盖非Prop属性
如果父组件向子组件的非prop属性传递了值,那么这个值会覆盖子组件模板中的特性。
上面渲染的结果是,div
的att
属性是helloParent
。注意 :前面已经提到过,覆盖原则对于class
和style
不适用,而是采用了合并(merge)的原则。
上面的渲染结果是,div
的类名是class1 class2
,行内样式是color:red; background:yellow;
。
自定义事件
通过prop
属性,父组件可以向子组件传递数据,而子组件的自定义事件就是用来将内部的数据报告给父组件的。
如上所示,共分为以下步骤:
子组件在自己的方法中将自定义事件以及需要发出的数据通过以下代码发送出去
this.$emit('myclick', '这是我暴露出去的数据', '这是我暴露出去的数据2')
第一个参数是自定义事件的名字
后面的参数是依次想要发送出去的数据
父组件利用v-on
为事件绑定处理器
这样,在Vue实例的methods
方法中就可以调用传进来的参数了
注意 : 在使用v-on
绑定事件处理方法时,不应该传进任何参数,而是直接写v-on:myclick="onClick"
,不然,子组件暴露出来的数据就无法获取到了
绑定原生事件
如果想在某个组件的根元素 上监听一个原生事件。可以使用 .native
修饰 v-on
探究v-model
v-model
可以对表单控件实现数据的双向绑定,它的原理就是利用了绑定属性和事件来实现的。比如input
控件。不使用v-model
,可以这样实现数据的双向绑定:
{{text}}
上面的代码同样实现了数据的双向绑定。其本质就是:
把input
的value
特性绑定到Vue实例的属性text
上,text
改变,input
中的内容也会改变
然后把表单的input
事件处理函数设置为Vue实例的一个方法,这个方法会根据输入参数改变Vue中text
`的值
相应的,在input
中输入内容时,触发了input
事件,把event.target.value
传给这个方法,最后就实现了改变绑定的数据的效果。
而v-model
就是上面这种方式的语法糖,也就是把上面的写法封装了一下,方便我们使用。
使用自定义事件创建自定义的表单输入组件
理解了v-model
的内幕,也就可以把这个效果用在自定义表单组件上了。 来实现一个简单的只能输入hello
的表单输入组件。
定制组件的v-model
默认情况下,一个组件的 v-model
会使用 value
属性和 input
事件,但是诸如单选框、复选框之类的输入类型可能把 value
属性用作了别的目的。model
选项可以回避这样的冲突:
Vue.component('my-checkbox', {
model: {
prop: 'checked', // 将输入的特性改为checked
event: 'change' // 触发的自定义事件类型为change
},
props: {
checked: Boolean,
// this allows using the `value` prop for a different purpose
value: String
}
})
这样设置的话,
上面的代码就等同于
{ foo = val }" value="some value">
实际使用时,与之前不同的地方是:
把子组件中接收外部数据的prop
属性改为checked
向父组件发出事件时,事件类型应改为change
Vue.component('my-component3', {
template: ` `,
props: ['checked'], // 属性名改变
model: {
prop: 'checked',
event: 'change'
},
methods: {
checkInput (value) {
var hello = 'hello'
if (!hello.includes(value)) {
this.$emit('change', hello) // 事件类型改变
this.$refs.input.value = hello
} else {
this.$emit('change', value) // 事件类型改变
}
}
}
})
动态组件
通过使用保留的
元素,动态地绑定到它的 is
特性,可以让多个组件使用同一个挂载点,并动态切换:
home
post
about
也可以直接绑定到组件对象上:
var Home = {
template: ``
}
new Vue({
el: '#app6',
data: {
currentComponent: Home
}
})
保留切换出去的组件,避免重新渲染
如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。为此可以添加一个 keep-alive
指令参数:
使用slot分发内容
终于到了基本知识的最后一个了。官网写的很详细。
单个slot
上面用到的很多组件的使用方式是这样的:
也就是说组件中是空的,没有放置任何文本或元素。但是原生的html元素都是可以进行嵌套的,div
里面放table
什么的。自定义组件开闭标签之间也可以放置内容,不过需要在定义组件时使用slot
。
slot
相当于子组件设置了一个地方,如果在调用它的时候,往它的开闭标签之间放了东西,那么它就把这些东西放到slot
中。
当子组件中没有slot
时,父组件放在子组件标签内的东西将被丢弃;
子组件的slot
标签内可以放置内容,当父组件没有放置内容在子组件标签内时,slot
中的内容会渲染出来;
当父组件在子组件标签内放置了内容时,slot
中的内容被丢弃
子组件的模板:
我是子组件的标题
只有在没有要分发的内容时才会显示。
父组件模板:
渲染结果:
具名slot
slot
可以有很多个。那么子组件对于父组件放置的多余的内容如何放到各个slot
中呢?方法就是子组件给每个slot
起一个名字name
,父组件放置多余的元素时,给每个元素的slot
属性分配一个代表slot
的名字。到时候,多余的内容就会根据自己的slot
属性去找具有对应名字的slot
元素。
注意 :
子组件可以有一个匿名的slot
,当分发的多余内容找不到对应的slot
时,就会进入这里面
如果子组件没有匿名的slot
,当分发的多余内容找不到对应的slot
时,就会被丢弃
例如,假定我们有一个 app-layout 组件,它的模板为:
父组件模版:
这里可能是一个页面标题
主要内容的一个段落。
另一个主要段落。
这里有一些联系信息
渲染结果为:
作用域插槽
作用域插槽也是一个插槽slot
,但是他可以把数据传递给到父组件的特定元素内,然后有父组件决定如何渲染这些数据。
首先,子组件的slot
需要有一些特性(prop)
Vue.component('my-component4', {
template: `
`,
data () {
return {
hello: [1,'2']
}
}
})
父组件在调用子组件时,需要在里面添加一个template
元素,并且这个template
元素具有scope
特性
scope
特性的值,就代表了所有子组件传过来的数据组成的对象。相当于
props = {
text: '',
message: ''
}
最后,父组件就可以在template
中渲染子组件传过来的数据了
{{props.text}}
{{props.message}}
2018-07-19更新: 最新的Vue支持将作用域插槽的属性解构。所以上述代码可以简写为:
{{text}}
{{message}}
作用域插槽也是插槽,只不过是多加了些特性,然后父组件多进行了些处理。
你可能感兴趣的:(vue,组件,技术,软件开发)
大数据新视界 --大数据大厂之大数据存储技术大比拼:选择最适合你的方案
青云交
大数据新视界 数据库 大数据存储 Hadoop HDFS NoSQL 数据库 分布式对象存储 存储选择因素 混合存储
亲爱的朋友们,热烈欢迎你们来到青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实用的内容知识,还可以毫无拘束地畅所欲言,尽情分享自己独特的见解。我真诚地期待着你们的到来,愿我们能在这片小小的天地里共同成长,共同进步。本博客的精华专栏:大数
大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面
青云交
大数据新视界 大前端风云榜:引领技术浪潮 大数据 vue.js 信息可视化 大数据可视化 数据驱动 Echarts D3.js
亲爱的朋友们,热烈欢迎你们来到青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实用的内容知识,还可以毫无拘束地畅所欲言,尽情分享自己独特的见解。我真诚地期待着你们的到来,愿我们能在这片小小的天地里共同成长,共同进步。本博客的精华专栏:大数
一个简易的 Vue-Ref 响应式系统
简易的Ref数据响应式+Renderer渲染器本案例实现的响应式效果非常有限,只做简单的demo演示,本案例既不是基于Object.defineProperty,也不是基于Proxy实现的响应式,而是基于存取器,其实都差不多。准备一个__Ref__,它可以将简单数据类型包装为一个响应式对象。class__Ref{#privateValue;#privateRely;//"桶"收集所有对#priva
HarmonyOS 5.0应用开发——Web组件的使用
【高心星出品】Web组件的使用ArkWeb(方舟Web)提供了Web组件,用于在应用程序中显示Web页面内容。常见使用场景包括:应用集成Web页面:应用可以在页面中使用Web组件,嵌入Web页面内容,以降低开发成本,提升开发、运营效率。浏览器网页浏览场景:浏览器类应用可以使用Web组件,打开三方网页,使用无痕模式浏览Web页面,设置广告拦截等。小程序:小程序类宿主应用可以使用Web组件,渲染小程序
PingCAP 荣膺 2024 亚马逊云科技合作伙伴两项殊荣
pingcaptidb数据库
近日,在2024亚马逊云科技re:Invent全球大会上,PingCAP荣膺亚马逊云科技年度技术合作伙伴和年度亚马逊云科技Marketplace合作伙伴两项殊荣。这是PingCAP连续第二年获得亚马逊云科技年度合作伙伴奖项,彰显了PingCAP在与亚马逊云科技合作服务客户的过程中所展现的卓越技术实力和专业服务能力,共同推动全球用户业务取得成功。在合作伙伴颁奖典礼上,亚马逊云科技全球与区域合作伙伴大
升级AMH7.1后,无法升级其他组件和软件的解决方案汇总
css3
在升级AMH7.1后无法升级其他组件和软件,可能是由于系统或依赖问题导致的。你可以按照以下步骤进行排查和操作:1.检查依赖和冲突确认在升级AMH7.1之后,是否有其他组件或软件与其发生冲突,尤其是与PHP、MySQL、Nginx/Apache等相关的版本问题。查看错误信息,查找可能的依赖问题。执行以下命令查看已安装的组件版本:amh-v这将显示AMH的当前版本,确保它和你的其他组件兼容。2.检查系
433M无线收发模块详解
无线通信技术在现代社会中扮演着至关重要的角色,它让我们能够实现便捷的远程控制、智能家居、自动化以及各种物联网应用。无线通信技术包括WiFi、蓝牙、NFC、Zigbee、5G等等。本次我要给大家介绍无线通信技术之一的433M,从基本概念到工作原理再到实际应用。我们将逐步剖析433M模块背后的技术细节。无论您是初学者还是有一定经验的开发者,这篇文章都将为您提供全面的指导和启发,帮助您更好地了解和应用4
Git面试,看这一篇就够了!
Git面试,看这一篇就够了!前言大家好,我是倔强青铜三。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。Git对于现代程序员至关重要,它不仅是版本控制的利器,更是团队协作的基石。通过Git,程序员能高效管理代码、追踪变更、分支开发,确保项目稳定推进。面试中,Git相关问题频现,掌握其使用及原理,是展现专业能力和团队
2024前端面试经验分享
前端面试
一、简历1、整理步骤把自己过去做过的有亮点的事情整理一遍。项目经历,通过star法则来做,不赘述,网上很多人讲。需要突出的亮点见下面。2、前端开发常见突出亮点:性能优化代码优化组件封装框架原理项目推进、协调能力技术难点的解决能力技术方案设计能力前端工程化的推进3、管理相关亮点如何制定代码规范,以及review如何提升团队人员的水平如何制定流程为团队提效4、注意点遵循star法则;尽量简洁,减少面试
笔记:vue 打包忽略部分文件检查。
apgk1
vue 笔记 vue
在需要忽略的文件中加入/*eslint-disable*/1.js文件首行直接加入/*eslint-disable*/2.vue文件script中加入/*eslint-disable*/3.配置文件进行配置看大佬文章。vue中指定文件或文件夹忽略eslint
Vue3中通过加密串进行后端验证并实现登录跳转教程
ecmascript-6
在Vue3中进行登录并通过加密串进行后端验证,一般步骤是:用户输入用户名和密码,前端将其加密后发送给后端进行验证,后端验证通过后,返回身份验证信息(如令牌),前端接收验证结果并实现登录跳转。主要步骤:用户输入信息并加密用户输入的密码可以通过加密算法(如SHA256,AES等)进行加密,确保数据的安全性。发送请求到后端前端将加密后的数据发送到后端进行验证,通常使用POST请求。后端验证加密数据后端解
【职业发展】从ETL到大数据:如何规划你的数据职业生涯?
首先:ETL工程师其实是一个特别简单的岗位。为什么简单?ETL就是数据仓库项目建设和日常维护中的一种工作,ETL,就是抽取、转换、装载的英文缩写。但是这个现实中都是使用相应工具软件的。至于怎么抽取,怎么转换、怎么装载,都是与具体业务相结合的。比如:每天晚8点抽取,a+b转换成c,从A设备读出a和b,计算成c之后存到W设备上。这就是ETL要干的事。特别简单。没有技术含量。但是工作量却比较大。但是工作
NodeJS项目架构设计,看这一篇就足够了!
NodeJS项目架构设计,看这一篇就足够了!前言大家好,我是倔强青铜三。我是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。1.整洁架构简介CleanArchitecture(整洁架构)由RobertC.Martin(UncleBob)提出,它强调应用程序内部关注点的分离。该架构提倡业务逻辑应与任何框架、数据库或外部
教你玩转JavaScript元编程
教你玩转JavaScript元编程大家好,我是倔强青铜三。我是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。JavaScript元编程:深度解析Proxy、Reflect和对象属性控制JavaScript元编程超越了典型编程的范畴,为开发人员提供了一套创建高度灵活、高效和响应式代码库的工具。让我们深入探讨Proxy
基于jQuery / 原生JS两种方式流畅实现半屏悬浮窗
池泽123
js jQuery javascript jquery 前端
本篇分别用jQuery和原生两种方式实现悬浮窗功能和样式的切换,兼容IE完成样式示例使用技术栈:jquery、javaScript、HTML/CSS一、基础版面悬浮窗可以有很多样式,但基础结构可以大致分为触发按钮、遮罩层、内容三部分。触发按钮通常设置在屏幕边缘,我这里举例一个右下的位置展示;联系我们/*悬浮窗触发按钮样式*/.Suspended_window_box{width:150px;hei
前端-从入门到入土
前端学习路线基础部分(HTML+CSS+JS入门)快速了解,能够进行简单的页面布局,交互JS部分,可以写一些小demo来熟悉常见的API推荐教程:https://www.bilibili.com/video/BV1BT4y1W7Aw/?spm_id_from=333....框架部分这里推荐Vue框架,相对React会更容易上手,并且中文文档也相对友好推荐教程:https://www.bilibil
等保、密评专用—双算法SSL证书
等保(网络安全等级保护)和密评(商用密码应用安全性评估)专用的双算法SSL证书,是结合了国际加密算法(如RSA)和国密算法(如SM2)的SSL证书。这类证书不仅满足了国内对于数据安全和信息保密的合规性要求,同时也确保了与国际标准的互操作性。以下是关于等保、密评专用双算法SSL证书的详细解析:一、优势合规性:满足《信息安全技术网络安全等级保护安全设计技术要求》(GB/T25070)中关于二级等保安全
API接口设计的未来趋势:探索技术方向与实践方案
摘要随着技术的发展,API接口设计从最初的单一请求响应模式逐渐演化为多样化的架构模式和高效的传输协议。从REST到GraphQL,从API网关到服务网格,API接口设计正向着更高效、更安全、更可扩展的方向发展。本文将探讨未来API设计的新趋势,深入分析API网关和服务网格的应用场景及技术优势,并通过ArkUI和ArkTS实现简单的API交互示例。引言API(ApplicationProgrammi
我的博客年度之旅:感恩、成长与展望
Pocker_Spades_A
自我想法 经验分享
目录感恩有你技能满点新年新征程嘿,各位技术大佬、数码潮咖还有屏幕前超爱学习的小伙伴们!当新年的钟声即将敲响,我们站在时光的交汇点上,回首过往,满心感慨;展望未来,豪情满怀。过去的这一年,于我而言,是一段意义非凡的旅程,而我的博客,就像一艘在信息海洋中航行的小船,载着我和众多朋友的期待与梦想,一路乘风破浪,留下了许多难忘的回忆。愿过去一年那些代码报错、技术难题,都一键delete,新的365天,全是
Web漏洞扫描服务:守护数字时代的安全防线
网络安全web
在数字化浪潮席卷全球的今天,Web应用程序已成为企业连接用户、提供服务的核心桥梁。无论是电子商务、在线教育、金融服务还是社交媒体,Web平台都扮演着不可或缺的角色。然而,随着技术的不断进步,网络空间中的安全威胁也日益复杂多变,Web应用程序中的安全漏洞成为黑客攻击的主要目标。数据泄露、服务中断、信誉受损乃至巨大的经济损失,无一不警示着我们加强Web安全防护的紧迫性。在此背景下,Web漏洞扫描服务应
深入 JavaScript:前端开发的核心语言
JavaScript是一种广泛应用于前端开发的编程语言,最早由Netscape公司在1995年推出。作为一种轻量、解释性和多范式的编程语言,JavaScript支持事件驱动、面向对象和函数式编程。它不仅是网页交互的核心技术之一,还随着Node.js的出现,逐渐渗透到了后端开发。本文将带你了解JavaScript的核心概念、特点及常见应用场景,帮助你掌握这门现代化的编程语言。一、JavaScript
Vue.js:轻量高效的前端框架
Vue.js是一个用于构建用户界面的渐进式JavaScript框架,因其轻量、灵活和易上手的特性备受欢迎。Vue.js不仅适合小型项目的快速开发,也可用于构建复杂的单页面应用(SPA)。本文将介绍Vue.js的核心特性、项目结构、常用功能及其在现代前端开发中的应用场景。一、Vue.js简介Vue.js(简称Vue)由尤雨溪于2014年推出,是一个专注于视图层的JavaScript框架。它采用渐进式
2024 中国技术先锋年度评选正式启动!6 大奖项即将揭晓
前言中国技术先锋年度评选已走过十多个年头。从最早的TopWriter评选,到中国技术品牌影响力企业的揭晓,再到5年前首次推出的中国开源先锋33人评选,我们始终密切关注着数字经济的蓬勃发展。这些企业和个人为推动数字化、信息化和智能化进程作出了巨大贡献。面对不断变化的外部环境,他们深耕行业,信仰技术的力量,勇于创新,坚定践行技术理想。他们是改变世界方向的探索者,也是引领未来的技术先锋。SegmentF
关于Elementui中el-select自动展开
项目需求:el-table带行编辑。开发中遇到一旦行编辑过多,页面就变得奇卡无比。然后就做了假的输入框代替,后来又遇到需要二次点击才能正常聚焦,客户很不满意。呵呵呵。。。思路:点击模拟框时自动聚焦//在main.js中注册一个全局自定义指令`v-focus`Vue.directive('focus',{//当被绑定的元素插入到DOM中时……inserted:function(el){console
SwiftUI Release 引入的辅助焦点管理
前言SwiftUIRelease引入了强大的新功能,其中之一是辅助焦点管理。这个新功能使得在SwiftUI中处理辅助技术(如VoiceOver和SwitchControl)的焦点状态变得更加轻松。本文将介绍如何使用@FocusState属性包装器来在SwiftUI中管理和移动辅助焦点。使用@FocusState属性包装器在SwiftUIRelease中,我们获得了一整套特殊工具来更有效地处理辅助焦
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
==如何使用Vue:基本结构:1、引入Vue的核心JS文件2、准备Dom结构3、实例化组件通过el属性,挂载元素,绑定id为app的html元素通过data属性,定义数据,可以在html代码段中显示的数据4、获取数据数据绑定最常见的形式就是使用“Mustache”语法(双大括号)的文本插值==@[TOC]目标两个例子:1.表单数据一行的创建+删除(彻底删除/隐藏双实现)代码+注释==特色:1:内容
国内验签数据不出境的SSL证书怎么申请
ssl证书https运维
申请国内验签且确保数据不出境的SSL证书指南在数字化时代,数据安全和隐私保护至关重要。对于在中国运营的网站或服务,确保SSL证书的申请和验证过程中数据不出境,是维护国家信息安全和用户隐私的重要一环。以下是一份详细的指南,帮助您申请国内验签且数据不出境的SSL证书。一、选择可信赖的国内CA机构调研与选择:首先,对国内外的CA(证书颁发机构)进行调研,选择一家信誉良好、技术成熟且符合国内法律法规要求的
SwiftUI Release 引入的辅助焦点管理
前言SwiftUIRelease引入了强大的新功能,其中之一是辅助焦点管理。这个新功能使得在SwiftUI中处理辅助技术(如VoiceOver和SwitchControl)的焦点状态变得更加轻松。本文将介绍如何使用@FocusState属性包装器来在SwiftUI中管理和移动辅助焦点。使用@FocusState属性包装器在SwiftUIRelease中,我们获得了一整套特殊工具来更有效地处理辅助焦
智能化河流水位与流量监测系统:提升水资源管理与环境保护
DX_水位流量监测
数据分析 信息可视化 安全 运维 自动化 人工智能
随着全球气候变化和水资源短缺问题的加剧,科学有效地监测水体状况,尤其是河流的水位和流量,成为了水资源管理与环境保护的重要环节。传统的人工测量方法虽然有效,但存在一定的局限性,如人工误差、监测频率低以及对突发事件反应慢等问题。智能化河流水位与流量监测系统应运而生,通过集成物联网、大数据、云计算和人工智能等技术,不仅提高了监测的精准度和实时性,也提升了水资源管理和环境保护的效率。一、智能化河流水位与流
vue2基础组件通信案例练习:把案例Todo-list改成使用消息订阅与发布
@[toc]改动的地方注意点1:实现App和MyItem的删除功能,使用消息订阅与发布方式实现通信。App.vueimportpubsubfrom'pubsub-js'methods:{//删除一个tododeleteTodo(_,id){this.todos=this.todos.filter(todo=>todo.id!==id)}}mounted(){this.$bus.$on('check
项目中 枚举与注解的结合使用
飞翔的马甲
java enum annotation
前言:版本兼容,一直是迭代开发头疼的事,最近新版本加上了支持新题型,如果新创建一份问卷包含了新题型,那旧版本客户端就不支持,如果新创建的问卷不包含新题型,那么新旧客户端都支持。这里面我们通过给问卷类型枚举增加自定义注解的方式完成。顺便巩固下枚举与注解。
一、枚举
1.在创建枚举类的时候,该类已继承java.lang.Enum类,所以自定义枚举类无法继承别的类,但可以实现接口。
【Scala十七】Scala核心十一:下划线_的用法
bit1129
scala
下划线_在Scala中广泛应用,_的基本含义是作为占位符使用。_在使用时是出问题非常多的地方,本文将不断完善_的使用场景以及所表达的含义
1. 在高阶函数中使用
scala> val list = List(-3,8,7,9)
list: List[Int] = List(-3, 8, 7, 9)
scala> list.filter(_ > 7)
r
web缓存基础:术语、http报头和缓存策略
dalan_123
Web
对于很多人来说,去访问某一个站点,若是该站点能够提供智能化的内容缓存来提高用户体验,那么最终该站点的访问者将络绎不绝。缓存或者对之前的请求临时存储,是http协议实现中最核心的内容分发策略之一。分发路径中的组件均可以缓存内容来加速后续的请求,这是受控于对该内容所声明的缓存策略。接下来将讨web内容缓存策略的基本概念,具体包括如如何选择缓存策略以保证互联网范围内的缓存能够正确处理的您的内容,并谈论下
crontab 问题
周凡杨
linux crontab unix
一: 0481-079 Reached a symbol that is not expected.
背景:
*/5 * * * * /usr/IBMIHS/rsync.sh
让tomcat支持2级域名共享session
g21121
session
tomcat默认情况下是不支持2级域名共享session的,所有有些情况下登陆后从主域名跳转到子域名会发生链接session不相同的情况,但是只需修改几处配置就可以了。
打开tomcat下conf下context.xml文件
找到Context标签,修改为如下内容
如果你的域名是www.test.com
<Context sessionCookiePath="/path&q
web报表工具FineReport常用函数的用法总结(数学和三角函数)
老A不折腾
Web finereport 总结
ABS
ABS(number):返回指定数字的绝对值。绝对值是指没有正负符号的数值。
Number:需要求出绝对值的任意实数。
示例:
ABS(-1.5)等于1.5。
ABS(0)等于0。
ABS(2.5)等于2.5。
ACOS
ACOS(number):返回指定数值的反余弦值。反余弦值为一个角度,返回角度以弧度形式表示。
Number:需要返回角
linux 启动java进程 sh文件
墙头上一根草
linux shell jar
#!/bin/bash
#初始化服务器的进程PId变量
user_pid=0;
robot_pid=0;
loadlort_pid=0;
gateway_pid=0;
#########
#检查相关服务器是否启动成功
#说明:
#使用JDK自带的JPS命令及grep命令组合,准确查找pid
#jps 加 l 参数,表示显示java的完整包路径
#使用awk,分割出pid
我的spring学习笔记5-如何使用ApplicationContext替换BeanFactory
aijuans
Spring 3 系列
如何使用ApplicationContext替换BeanFactory?
package onlyfun.caterpillar.device;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import
Linux 内存使用方法详细解析
annan211
linux 内存 Linux内存解析
来源 http://blog.jobbole.com/45748/
我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。
一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。
Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用
数据库的单表查询常用命令及使用方法(-)
百合不是茶
oracle 函数 单表查询
创建数据库;
--建表
create table bloguser(username varchar2(20),userage number(10),usersex char(2));
创建bloguser表,里面有三个字段
&nbs
多线程基础知识
bijian1013
java 多线程 thread java多线程
一.进程和线程
进程就是一个在内存中独立运行的程序,有自己的地址空间。如正在运行的写字板程序就是一个进程。
“多任务”:指操作系统能同时运行多个进程(程序)。如WINDOWS系统可以同时运行写字板程序、画图程序、WORD、Eclipse等。
线程:是进程内部单一的一个顺序控制流。
线程和进程
a. 每个进程都有独立的
fastjson简单使用实例
bijian1013
fastjson
一.简介
阿里巴巴fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库;包括“序列化”和“反序列化”两部分,它具备如下特征:  
【RPC框架Burlap】Spring集成Burlap
bit1129
spring
Burlap和Hessian同属于codehaus的RPC调用框架,但是Burlap已经几年不更新,所以Spring在4.0里已经将Burlap的支持置为Deprecated,所以在选择RPC框架时,不应该考虑Burlap了。
这篇文章还是记录下Burlap的用法吧,主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
 
【Mahout一】基于Mahout 命令参数含义
bit1129
Mahout
1. mahout seqdirectory
$ mahout seqdirectory
--input (-i) input Path to job input directory(原始文本文件).
--output (-o) output The directory pathna
linux使用flock文件锁解决脚本重复执行问题
ronin47
linux lock 重复执行
linux的crontab命令,可以定时执行操作,最小周期是每分钟执行一次。关于crontab实现每秒执行可参考我之前的文章《linux crontab 实现每秒执行》现在有个问题,如果设定了任务每分钟执行一次,但有可能一分钟内任务并没有执行完成,这时系统会再执行任务。导致两个相同的任务在执行。
例如:
<?
//
test
.php
java-74-数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字
bylijinnan
java
public class OcuppyMoreThanHalf {
/**
* Q74 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字
* two solutions:
* 1.O(n)
* see <beauty of coding>--每次删除两个不同的数字,不改变数组的特性
* 2.O(nlogn)
* 排序。中间
linux 系统相关命令
candiio
linux
系统参数
cat /proc/cpuinfo cpu相关参数
cat /proc/meminfo 内存相关参数
cat /proc/loadavg 负载情况
性能参数
1)top
M:按内存使用排序
P:按CPU占用排序
1:显示各CPU的使用情况
k:kill进程
o:更多排序规则
回车:刷新数据
2)ulimit
ulimit -a:显示本用户的系统限制参
[经营与资产]保持独立性和稳定性对于软件开发的重要意义
comsci
软件开发
一个软件的架构从诞生到成熟,中间要经过很多次的修正和改造
如果在这个过程中,外界的其它行业的资本不断的介入这种软件架构的升级过程中
那么软件开发者原有的设计思想和开发路线
在CentOS5.5上编译OpenJDK6
Cwind
linux OpenJDK
几番周折终于在自己的CentOS5.5上编译成功了OpenJDK6,将编译过程和遇到的问题作一简要记录,备查。
0. OpenJDK介绍
OpenJDK是Sun(现Oracle)公司发布的基于GPL许可的Java平台的实现。其优点:
1、它的核心代码与同时期Sun(-> Oracle)的产品版基本上是一样的,血统纯正,不用担心性能问题,也基本上没什么兼容性问题;(代码上最主要的差异是
java乱码问题
dashuaifu
java乱码问题 js中文乱码
swfupload上传文件参数值为中文传递到后台接收中文乱码 在js中用setPostParams({"tag" : encodeURI( document.getElementByIdx_x("filetag").value,"utf-8")});
然后在servlet中String t
cygwin很多命令显示command not found的解决办法
dcj3sjt126com
cygwin
cygwin很多命令显示command not found的解决办法
修改cygwin.BAT文件如下
@echo off
D:
set CYGWIN=tty notitle glob
set PATH=%PATH%;d:\cygwin\bin;d:\cygwin\sbin;d:\cygwin\usr\bin;d:\cygwin\usr\sbin;d:\cygwin\us
[介绍]从 Yii 1.1 升级
dcj3sjt126com
PHP yii2
2.0 版框架是完全重写的,在 1.1 和 2.0 两个版本之间存在相当多差异。因此从 1.1 版升级并不像小版本间的跨越那么简单,通过本指南你将会了解两个版本间主要的不同之处。
如果你之前没有用过 Yii 1.1,可以跳过本章,直接从"入门篇"开始读起。
请注意,Yii 2.0 引入了很多本章并没有涉及到的新功能。强烈建议你通读整部权威指南来了解所有新特性。这样有可能会发
Linux SSH免登录配置总结
eksliang
ssh-keygen Linux SSH免登录认证 Linux SSH互信
转载请出自出处:http://eksliang.iteye.com/blog/2187265 一、原理
我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器ServerB上后,就可以使用ssh命令无需密码登录到另外一台机器ServerB上。
生成公钥与私钥有两种加密方式,第一种是
手势滑动销毁Activity
gundumw100
android
老是效仿ios,做android的真悲催!
有需求:需要手势滑动销毁一个Activity
怎么办尼?自己写?
不用~,网上先问一下百度。
结果:
http://blog.csdn.net/xiaanming/article/details/20934541
首先将你需要的Activity继承SwipeBackActivity,它会在你的布局根目录新增一层SwipeBackLay
JavaScript变换表格边框颜色
ini
JavaScript html Web html5 css
效果查看:http://hovertree.com/texiao/js/2.htm代码如下,保存到HTML文件也可以查看效果:
<html>
<head>
<meta charset="utf-8">
<title>表格边框变换颜色代码-何问起</title>
</head>
<body&
Kafka Rest : Confluent
kane_xie
kafka REST confluent
最近拿到一个kafka rest的需求,但kafka暂时还没有提供rest api(应该是有在开发中,毕竟rest这么火),上网搜了一下,找到一个Confluent Platform,本文简单介绍一下安装。
这里插一句,给大家推荐一个九尾搜索,原名叫谷粉SOSO,不想fanqiang谷歌的可以用这个。以前在外企用谷歌用习惯了,出来之后用度娘搜技术问题,那匹配度简直感人。
环境声明:Ubu
Calender不是单例
men4661273
单例 Calender
在我们使用Calender的时候,使用过Calendar.getInstance()来获取一个日期类的对象,这种方式跟单例的获取方式一样,那么它到底是不是单例呢,如果是单例的话,一个对象修改内容之后,另外一个线程中的数据不久乱套了吗?从试验以及源码中可以得出,Calendar不是单例。
测试:
Calendar c1 =
线程内存和主内存之间联系
qifeifei
java thread
1, java多线程共享主内存中变量的时候,一共会经过几个阶段,
lock:将主内存中的变量锁定,为一个线程所独占。
unclock:将lock加的锁定解除,此时其它的线程可以有机会访问此变量。
read:将主内存中的变量值读到工作内存当中。
load:将read读取的值保存到工作内存中的变量副本中。
schedule和scheduleAtFixedRate
tangqi609567707
java timer schedule
原文地址:http://blog.csdn.net/weidan1121/article/details/527307
import java.util.Timer;import java.util.TimerTask;import java.util.Date;
/** * @author vincent */public class TimerTest {
 
erlang 部署
wudixiaotie
erlang
1.如果在启动节点的时候报这个错 :
{"init terminating in do_boot",{'cannot load',elf_format,get_files}}
则需要在reltool.config中加入
{app, hipe, [{incl_cond, exclude}]},
2.当generate时,遇到:
ERROR