一键启动平行目录的node服务端 / vue前端项目,并热更新
作者:admin 日期:2022-11-17element-ui主题编辑器报request timeout的解决办法
作者:admin 日期:2022-07-132022年7月,element-ui主题(theme)编辑器一段时间老是报timeout问题,等了一二周也没见解决。一个偶然机会找到一个网上项目,让element官网可以在本地跑起来,当然也可以做theme编辑,特此分享。用这种方法编辑element外观,才是最正规的方法。
websocket前后端通讯模拟
作者:admin 日期:2022-06-13前端VUE代码:
- test_ws() {
- // let websocket;
- let url = `ws://192.168.0.73:54000?id=888`;
- let websocket = new WebSocket(url,['token340987340697']);
- // 建立连接
- websocket.onopen = () => {
- // 发送数据
- console.clear();
- console.log("websocket发送数据中",websocket);
- websocket.send("发送数据!!!!!!");
- };
- // 客户端接收服务端返回的数据
- websocket.onmessage = evt => {
- console.log("websocket返回的数据:", evt.data);
- };
- // 发生错误时
- websocket.onerror = evt => {
- console.log("websocket错误:", evt);
- };
- // 关闭连接
- websocket.onclose = evt => {
- console.log("websocket关闭:", evt);
- };
- this.my_ws = websocket
- },
后端node.js+koa:
- app.ws.use((ctx, next) => {
- /* 每打开一个连接就往 上线文数组中 添加一个上下文 */
- ctxs.push(ctx);
- // console.log("🚀 ### ctx1",ctx.query.id)
- console.log("🚀 @@@@@@@@@@@", ctx.header["sec-websocket-protocol"])
- ctx.websocket.send("start!!!!"+_.random(999, 9999))
- ctx.websocket.on("message", (msg) => {
- console.log("🚀 ### msg2", msg.toString())
- if (ctx.query.id == '10001') {
- msg1.push(msg.toString())
- }
- if (ctx.query.id == '10002') {
- msg2.push(msg.toString())
- }
- /* for(let i = 0; i < ctxs.length; i++) {
- if (ctx != ctxs[i]) {
- ctxs[i].websocket.send(message)
- }
- } */
- });
- // 客户端主动断开链接时候用 可以先不管
- ctx.websocket.on("close", (message) => {
- console.log(ctx.query.id,"🚀 ### close###########")
- console.log(msg1);
- console.log('---------------');
- console.log(msg2);
- /* 连接关闭时, 清理 上下文数组, 防止报错 */
- let index = ctxs.indexOf(ctx);
- ctxs.splice(index, 1);
- });
- });
关于faker.js,中文化/删库后地址/国内镜像
作者:admin 日期:2022-05-31vue2实现Teleport,用来做跨组件DOM挂载
作者:admin 日期:2022-04-20父组件调用:(to="#app"的意思是把#divPopup挂载到#app节点上)
- <Teleport to="#app">
- <div id="divPopup" style="z-index:20000;" v-show="dialogVisible">
- <el-button @click="clickH1">yes</el-button>
- <el-button @click="clickH2">no</el-button>
- </div>
- </Teleport>
子组件:
- <script>
- export default {
- name: 'teleport',
- props: {
- /* 移动至哪个标签内,最好使用id */
- to: {
- type: String,
- required: true
- }
- },
- mounted() {
- document.querySelector(this.to).appendChild(this.$el)
- },
- destroyed() {
- document.querySelector(this.to).removeChild(this.$el)
- },
- render() {
- return <div>{this.$scopedSlots.default()}</div>
- }
- }
- </script>
一个swiper双向移动的例子
作者:admin 日期:2022-03-25飞机探测地块的一个小演示动画
作者:admin 日期:2022-03-25一个帧动画--仿做
作者:admin 日期:2022-03-25json-server+mock.js构建vue/小程序均可用的mock体系
作者:admin 日期:2022-03-03
lodash的get函数来判断对象深处的空值,太有用了!
作者:admin 日期:2022-01-21- let arr = [
- {id:1,tit:'ttt1'},
- {id:2,tit:'ttt2',bb:{ cc:{dd:12} }},
- {id:3,tit:'ttt3',bb:{}},
- {id:5,tit:'ttt5',bb:{ cc:{dd:''}}},
- {id:6,tit:'ttt6',bb:{ cc:{dd:null}}},
- {id:7,tit:'ttt7'},
- ]
- _.each(arr, item=>{
- let flag = _.get(item, [ 'bb', 'cc', 'dd' ])
- if(flag){
- console.log(item)
- }
- })