首页
归档
关于
Search
1
C服务器端
9 阅读
2
1.数据流图(下午题)
8 阅读
3
管道处理模型
8 阅读
4
数据结构与算法
8 阅读
5
3.面向对象设计
7 阅读
软件设计师笔记
.Net
Java
数据库
PHP
运维
前端
Python
中间件相关
云原生
架构设计
Search
标签搜索
websocket
科技新闻
Bi8bo
累计撰写
267
篇文章
累计收到
2
条评论
首页
栏目
软件设计师笔记
.Net
Java
数据库
PHP
运维
前端
Python
中间件相关
云原生
架构设计
页面
归档
关于
搜索到
267
篇与
的结果
2025-04-03
C服务器端
/// <summary> /// web套接字模块 /// </summary> public class WebSocketService { //存储所有连接状态 public static List<IWebSocketConnection> Sockets = new List<IWebSocketConnection>(); //开启套接字连接 public static void WebSocketStart() { var server = new WebSocketServer(ws://127.0.0.1:8008); server.Start(socket => { socket.OnOpen = () => { WebSocketService.Sockets.Add(socket); socket.Send(即时通讯服务开启成功!); }; socket.OnClose = () => { WebSocketService.Sockets.Add(socket); }; socket.OnMessage = message => { WebSocketService.Sockets.ToList().ForEach(s => s.Send(message)); }; }); } //发送消息 public static void SendMessage(string message) { foreach (var socket in Sockets.ToList()) { socket.Send(message); } } }
2025年04月03日
9 阅读
0 评论
0 点赞
2025-04-03
具名插槽
具名插槽其实就是给插槽娶个名字。一个子组件可以放多个插槽,而且可以放在不同的地方,而父组件填充内容时,可以根据这个名字把内容填充到对应插槽中。如下代码:子组件的代码,设置了两个插槽(header和footer)父组件填充内容, 父组件通过 v-slot:[name] 的方式指定到对应的插槽中3.展示的效果:注意:父级的填充内容如果指定到子组件的没有对应名字插槽,那么该内容不会被填充到默认插槽中。即具名插槽用name属性来表示插槽的名字,不传为默认插槽如果子组件没有默认插槽,而父级的填充内容指定到默认插槽中,那么该内容就不会填充到子组件的任何一个插槽中。如果子组件有多个默认插槽,而父组件所有指定到默认插槽的填充内容,将会且全都填充到子组件的每个默认插槽中。
2025年04月03日
3 阅读
0 评论
0 点赞
2025-04-03
作用域插槽
作用域插槽其实就是带数据的插槽,即带参数的插槽,简单的来说就是子组件提供给父组件的参数,该参数仅限于插槽中使用,父组件可根据子组件传过来的插槽数据来进行不同的方式展现和填充插槽内容。使用方法:1.子组件存放一个带数据的插槽,代码如下:<template> <div class="child"> <h3>这里是子组件</h3> <slot :data="data"></slot> </div> </template> export default { data: function(){ return { data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba'] } } }2.父组件通过 “slot-scope” 来接收子组件传过来的插槽数据,再根据插槽数据来填充插槽的内容<template> <div class="father"> <h3>这里是父组件</h3> <!--第一次使用:用flex展示数据: class="tmpl"--> <child> <template slot-scope="user"> <div class="tmpl"> <span v-for="item in user.data">{{item}}</span> </div> </template> </child> <!--第二次使用:用列表展示数据--> <child> <template slot-scope="user"> <ul> <li v-for="item in user.data">{{item}}</li> </ul> </template> </child> <!--第三次使用:直接显示数据--> <child> <template slot-scope="user"> {{user.data}} </template> </child> <!--第四次使用:不使用其提供的数据, 作用域插槽退变成匿名插槽--> <child> 我就是模板 </child> </div> </template> 3.展现的效果:
2025年04月03日
4 阅读
0 评论
0 点赞
2025-04-03
事件触发与监听 $emit 和 $on
$emit触发这个事件this.$emit('getParam','name')//this.$emit('自定义事件名','要传送的数据')我们可以用$on方法监听一个事件,并且指定事件的处理方法,this.$on('getParam',this.handleParam)//this.$on('自定义事件名',处理方法) 也可以<my-component v-on:自定义事件名="处理方法"></my-component>
2025年04月03日
5 阅读
0 评论
0 点赞
2025-04-03
事件修饰符大全
.stop 阻止事件继续传播 冒泡 .prevent 阻止标签默认行为 .capture 使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 .self 只当在 event.target 是当前元素自身时触发处理函数 .once 事件将只会触发一次 .passive 告诉浏览器你不想阻止事件的默认行为 <!-- 阻止单击事件继续传播 --> <a v-on:click.stop="doThis"></a> <!-- 提交事件不再重载页面 --> <form v-on:submit.prevent="onSubmit"></form> <!-- 修饰符可以串联 --> <a v-on:click.stop.prevent="doThat"></a> <!-- 只有修饰符 --> <form v-on:submit.prevent></form> <!-- 添加事件监听器时使用事件捕获模式 --> <!-- 即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 --> <div v-on:click.capture="doThis">...</div> <!-- 只当在 event.target 是当前元素自身时触发处理函数 --> <!-- 即事件不是从内部元素触发的 --> <div v-on:click.self="doThat">...</div> <!-- 点击事件将只会触发一次 --> <a v-on:click.once="doThis"></a> <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 --> <!-- 而不会等待 `onScroll` 完成 --> <!-- 这其中包含 `event.preventDefault()` 的情况 --> <div v-on:scroll.passive="onScroll">...</div> 使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用v-on:click.prevent.self会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。以上为事件修饰符,面试常问的,还有以下其它类型修饰符为扩展加分项,不必须回答!!!!!!!!!!二、 v-model的修饰符 .lazy默认情况下,v-model同步输入框的值和数据。 可以通过这个修饰符,转变为在change事件再同步。 <input v-model.lazy="msg"> .number自动将用户的输入值转化为数值类型 <input v-model.number="msg"> .trim自动过滤用户输入的首尾空格 <input v-model.trim="msg">三、键盘事件的修饰符在我们的项目经常需要监听一些键盘事件来触发程序的执行,而Vue中允许在监听的时候添加关键修饰符:<input v-on:keyup.13="submit"> <input @keyup.enter="submit"> <!-- 缩写形式 --> 全部的按键别名: .enter .tab .delete (捕获“删除”和“退格”键) .esc .space .up .down .left .right 修饰键: .ctrl .alt .shift .meta
2025年04月03日
7 阅读
0 评论
0 点赞
1
2
...
54