Vue 框架

2023-11-12

Vue 简介

        Vue 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

 官方文档: Vue.js

开发工具:VSCode (Live Server 插件)

Vue下载:安装 — Vue.js

Vue谷歌调试工具vue_devtools:https://chrome.zzzmh.cn/info?token=nhdogjmejiglipccpnnnanhbledajbpd


        ①JavaScript框架;②简化DOM操作; ③响应式数据驱动

 特点:数据驱动意图;双向数据绑定

 原理:MVVM

        MVVM是vue实现数据驱动意图双向绑定核心原理

        Model: 表示当前页面渲染时依赖的数据源

        View:表示当前页面所渲染的DOM结构

        ViewModel:表示Vue实例,是MVVM核心

Vue 实例对象

        当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

        Vue.js 使用了基于 HTML模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。

var vue = new Vue({
  data: data
})

Vue 指令

内容渲染指令

渲染DOM 元素的文本内容,内部支持 javascript表达式

  • {{    }} 插值表达式{{}}可以替换指定内容
<body>
    <div id = "app">
        <!--{{}} 插值表达式 -->
        <div>{{message}}</div>      <!--Hello Vue!-->
        <h2>{{message}}10086</h2>   <!--Hello Vue!10086-->
    </div>
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                message:"Hello Vue!",
            },
        });
   </script>
</body>
  • v-text     会覆盖数据原有内容
<body>
    <div id = "app">
        <!--v-text  缺点:会覆盖文本默认值-->   
        <h2 v-text="vtext+'10086'">此文本不生效</h2>   <!--v-text测试10086-->
    </div>
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                vtext:"V-text测试",
            },
        });
   </script>
</body>
  • v-html   内容中有html结构会被解析为标签
<body>
    <div id = "app">
       <!--v-html-->
       <p v-html="vhtml"></p>  <!--哔哩哔哩的超连接-->
    </div>
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                vhtml:"<a href='https://www.bilibili.com'>哔哩哔哩</a>",
            },
        });
   </script>
</body>

属性绑定指令

元素绑定属性,内部支持 javascript表达式

  • v-bind  为元素绑定属性,完整写法 v-bind:属性名,简写 :属性名
<body>
    <div id = "app">
       <!--v-bind-->
       <p v-bind:title="vbindTile">悬停vBind</p>    <!--提示:"悬停vBind"-->
       <p :css="CSS">样式vBind</p>                  <!--简写  有样式的:"样式vBind"-->
    </div>
 
    <style>
        .blackText{color: black;font-size: 18px;}
        .redText{color:red; font-size: 18px;}
    </style>
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                vbindTile:"悬停vBind测试",
                CSS:"blackText",
            },
        });
   </script>
</body>

事件绑定指令

为元素绑定事件

  • v-on   事件绑定方法写成函数调用形式(原生事件名不需要写on)完整写法  v-on:事件 ; 简写 @+事件 

        事件的后面跟上“.”修饰符,可以事件限制,绑定方法定义在methods属性中,方法内部通过this 关键字可以访问修改data数据。支持参数传递。事件对象与传参并存时  可使用固定 $event 获取事件对象;可以用事件/按键修饰符。详查阅(API — Vue.js

修饰符

说明

.stop

调用 event.stopPropagation()

 .prevent

调用 event.preventDefault()

capture

添加事件侦听器时使用 capture 模式

.self

只当事件是从侦听器绑定的元素本身触发时才触发回调

.{keyCode | keyAlias}

只当事件是从特定键触发时才触发回调

.native

监听组件根元素的原生事件

.once

只触发一次回调

.left

(2.2.0) 只当点击鼠标左键时触发

.right

 (2.2.0) 只当点击鼠标右键时触发

.middle

 (2.2.0) 只当点击鼠标中键时触发

.passive

 (2.3.0) 以 { passive: true } 模式添加侦听器

<body>
    <div id = "app">
       <!--v-on-->
        <button v-on:click="doClick">点击</button>      <!--全写 单击事件-->
        <button @dblclick="dodbclicked">双击</button>   <!--简写 单击事件-->
        <a href='https://www.bilibili.com'  @click.prevent="stopEvent">哔哩哔哩</a> <!--添加阻止事件符,中断跳转默认行为-->
        <br>
        <div>{{count}}</div>
        <button @click="addNum(1,$event)">Add</button>
        <button @click="subNum(1,$event)">Sub</button>
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                 message:"Hello Vue!",
                 num:0
            },
             methods:{
                doClick:function(){alert("Click!");},
                dodbclicked:function(){
                    this.message+="!"
                    alert("DBClick!  "+this.message);
                },
                stopEvent:function(){alert("阻止了跳转默认行为!")},
                addNum:function(n,e){
                   this.count += n
                    if(this.count%2 == 0)
                        e.target.style.backgroundColor = 'red';
                    else
                        e.target.style.backgroundColor = '';
                },
                subNum:function(n,e){
                   this.count -= n
                    if(this.count%2 == 0)
                        e.target.style.backgroundColor = 'red';
                    else
                        e.target.style.backgroundColor = '';
                }, 
            }
        });
   </script>
</body>

双向绑定指令

  • v-model  便捷设置和获取表单元素的值(双向绑定数据

        绑定数据只会和表单元素值相关联, 如: <input> <select> <textarea> 元素

<body>
    <div id = "app">
         <!--v-model-->
        <!--自动清除首尾空格-->
        <input type="text" v-model.trim="message" @keyup.enter="inputEnter(message)"> 
        <!--数字相加,而非字符串拼接-->
        <div>
            <input type="text" v-model.number="n1"> +
            <input type="text" v-model.number="n2"> =
            <span>{{ n1 + n2 }}</span>
        </div>
        <!--非实时更新,完成后失去焦点后同步数据--> 
        <input type="text" v-model.lazy="message">
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                 message:"Hello Vue!",
                 n1:0,
                 n2:0,
            },
             methods:{
                inputEnter:function(text){alert(text);}, 
            }
        });
   </script>
 
</body>

条件渲染指令

  • v-if       根据表达式的真假切换元素显示状态,原理是元素Dom操纵,实现显示隐藏,值为true存在,值为false移除(Dom)
  • v-show  根据真假切换元素的显示状态,原理是元素的display修改,实现显示隐藏, 指令后面的内容,最终会解析为布尔值,值为true显示,值为false隐藏  (Display)  

频繁操作元素v-show 性能更好,初始不显示或显示频率不大v-if更好

<body>
    <div id = "app">
        <!--v-show  v-if-->
        <p v-show="isShow">vShow测试</p>     <!--标签被隐藏-->
        <button @click="dovShowTest">显示/隐藏测试</button>
        
        <p v-if="type==0">vIf测试</p>         <!--标签被清除-->
        <p v-else-if="type==1">vElseIf测试</p>  <!--else if 条件判断-->
        <p v-else="type==2">vElse测试</p>     <!--else -->
        <input type="text" v-model.number="type">
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                 isShow:true,
                 type:0,
            },
             methods:{
                dovShowTest:function(){this.isShow = !this.isShow;}, 
            }
        });
   </script>
</body>

列表渲染指令

  • v-for   根据数据生成列表结构

       数组经常和v-for结合使用,语法(item,index)in 数据,可以结合其他指令使用【item每一项,index索引】数组长度更新会同步到页面上,响应式 (官方建议绑定Key属性,字符串或数字类型,切不能重复)

<body>
    <div id = "app">
        <!--v-for-->
        <p v-for="(item,index) in books">{{item.name}}</p>
        <ul><li v-for="(item,index) in numbers">{{item.id}}.{{item.name}}</li></ul>
         <table>
            <thead>
                <th>索引</th><th>ID</th><th>NAME</th>
            </thead>
            <tbody><!--for 循环最好绑定Key属性-->
                <tr v-for="(item,index) in numbers" :key="item.id" :title = "item.name">
                    <td>{{ index }}</td>
                    <td>{{ item.id }}</td>
                    <td>{{ item.name }}</td>
                </tr>
            </tbody>
        </table>
        <br>
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
               books:[{name:"西游记"},{name:"水浒传"},{name:"红楼梦"},{name:"三国演义"}],
               numbers:[{id:1,name:'张三'},{id:2,name:'李四'},{id:3,name:'王五'},{id:4,name:'周六'}],
            },
        });
   </script>
</body>

计算属性

实现代码的复用,数据原变化,计算属性会自动重新求值

<body>
    <div id = "app">
        <!--计算属性-->
        <p>{{ rgb }}</p>
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                r:23,
                g:52,
                b:149
            },
            //计算属性节点
            computed:{
                rgb(){
                    return 'rgb(${this.r},${this.g},${this.b})';
                }
            },
        });
   </script>
</body>

侦听器

        watch侦听器,用于监视数据变化

     方法格式侦听器:  无法在刚进入页面时自动触发。侦听对象属性变化,不会触发。(最简单)

     对象格式侦听器:让侦听器自动触发(immeditate)。侦听对象属性变化(deep)

<body>
    <div id = "app">
        <input type="text" v-model.trim="message"> 
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
               message:"Hello Vue!",
               info:{name:''},
            },
            //侦听器节点
            watch:{
                //方法格式 侦听 message 值的变化
            message(newVal,oldVal){
                console.log('message值变化',newVal,oldVal);
            },
            //对象格式 侦听
            message:{
                handler(newVal,oldVa){
                    console.log('message值变化',newVal,oldVal);
                },
                //控制是否自动触发,默认未false
                immeditate:true,    
                //深度侦听,默认false
                deep:true
            },
            info:{
                handler(newVal){
                    console.log('info对象变化');
                },
                //深度侦听,默认false
                deep:true
            },
            //若侦听时对象属性变化,需要''
            'info.name'(newVal){
                console.log('message值变化',newVal,oldVal);
            }
            },
        });
   </script>
</body>

过滤器

过滤器(Filters) 常用与文本格式化,过滤器可以和 v-bind 属性绑定。添加在javaScript表达式的尾部,由“管道符”进行调用,允许串联调用过滤器。filters节点下定义的是私有过滤器(Vue 3.x 不支持)。

全局过滤器:多个vue实例共享过滤器,必须在Vue实例前定义。若名称相同,就近原则调用对私有滤器

<body>
    <div id = "app">
        <!--过滤器-->
        <!--在插值表达式中,通过“管道符” 调用capi过滤器,对message 值进行格式化-->
        <p>{{message | capi}}</p>
        <!--在 v-bind 中,通过“管道符”,调用fromatid过滤器,对属性值进行格式化-->
        <div :id="rawid | fromatid" ></div>
        <p>{{message | capiGlobal}}</p>
    </div>
  
    <script>
        const vue = new Vue({
            //指定当前Vue实例控制区域,值为  选择器
            el:'#app',
            //渲染在页面上的数据
            data:{
                message:"Hello Vue!",
                rawid:0
            },
            //过滤器节点
            filters:{
               capi:function(val){return "TEST_FILTERS"},
               fromatid:function(val){return 10086}
            }
        });
 
        //定义全局过滤器
        Vue.filters('capiGlobal',function(str){
            return "global filter";
        });
    
   </script>
</body>

Axios 网络请求库

使用 get 或 post 方法即可发送请求。(常用)

then 方法中的回调函数会再请求成功或失败是触发 ,回调函数形参可获取返回信息。

官网:GitHub - axios/axios: Promise based HTTP client for the browser and node.js

 注:Axios回调函数中this已经改变,无法访问到data数据;将this保存,回调函数中直接使用保存的this即可。

<!DOCTYPE html>
<html lang="zh-CN">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Axios</title>
    <script src="../lib/vue.js"></script>
    <!--axios 导包-->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <button id="btnGet">Get</button>
    <button id="btnPost">Post</button>
    <br>
    <label id="labText"></label>
 
    <script>
        document.querySelector("#btnGet").addEventListener('click',async function(){
            var url = 'http://127.0.0.1:8080/API/get';
            var param = {param:{}};
            //如果 调用某个方法的返回值时 'Promise' 实例,前面可以添加 await
            //await 只能用于被 'async' 修饰的方法中 
            //await表达式会暂停当前 async function的执行,等待Promise处理完成。 如果await的promise失败了,就会抛出异常,需要通过try–catch来捕获处理。
            var {data} = await axios.get(url,param);
            console.log(data);
            document.querySelector("#labText").innerHTML = data;    //Get 请求成功![object Object]
            
        });
        document.querySelector("#btnPost").addEventListener('click',async function(){
            var url = 'http://127.0.0.1:8080/API/post';
            var param = {param:{}};
            var {data} = await axios.post(url,param);
            console.log(data);
            document.querySelector("#labText").innerHTML = data;    //POST 请求成功![object Object]
            
        });
    </script>
</body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue 框架 的相关文章

  • 如何测试 javascript 闭包内的函数

    这似乎是不可能的 也可能是 但我正在尝试更多的 TDD 但我总是在闭包方面碰壁 假设我有以下内容 function createSomething init function privateMethod param return init
  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成

随机推荐

  • [BJDCTF2020]EasySearch1

    BJDCTF2020 EasySearch1 0x01漏洞类型 打开题目如图所示 还是对CTF套路不太熟悉 拿到这种就以为是sql注入 启动sqlmap就一顿操作 都大 了 搞竞赛还来得及吗 参考别人的wp后知道是源码泄露 这里就不给服务器
  • QT中监控全局键盘鼠标事件

    先介绍一下在单一Widget等控件中监听鼠标键盘事件的代码 void mouseMoveEvent QMouseEvent event void mouseReleaseEvent QMouseEvent event void keyPre
  • CNN代码系列之训练源文件及头文件(二)

    本博客为CNN卷积代码系列之训练源文件及头文件 注意 本博客是系列博客 请链接上一博客http blog csdn net samylee article details 69325368 训练主程序中的头文件 funset hpp ifn
  • 半路出家OCR后成领域专家,白翔:计算机视觉科研没有捷径

    极市学者专访 第三期 听大牛说说计算机视觉那些事儿 AI派在读学生小姐姐Beyonce Java实战项目练习群 长按识别下方二维码 按需求添加 扫码添加Beyonce小姐姐 扫码关注 进Java学习大礼包 本次极市学者访谈 我们非常荣幸地邀
  • WebSSH2 界面ssh

    工具 Virtual Machines14 1 系统环境 CentOS 7 64位 2个 IP 192 168 163 138 IP 192 168 163 141 概述 在138系统中安装部署WebSSH服务 通过浏览器 http Web
  • [SLAM四元数基础系列一] 四元数定义 Hamilton vs JPL

    四元数定义 Hamilton vs JPL 简介 四种区分方式 Hamilton vs JPL 引用 不管是卡尔曼滤波或者BA优化形式的SLAM或者VIO系统中 都需要用到单位四元数 Quaternion 来表示旋转 主要是单位四元数表示旋
  • Python内置函数(47)——open

    英文文档 open file mode r buffering 1 encoding None errors None newline None closefd True opener None Open file and return a
  • VB 正则表达式(RegExp)对象

    VB 正则表达式 RegExp 对象 正则表达式 RegExp 对象提供简单的正则表达式支持功能 说明下面的代码说明了RegExp对象的用法 Function RegExpTest patrn strng Dim regEx Match M
  • Docker swarm 搭建docker高可用集群

    目录 项目名称 基于docker swarm 搭建docker高可用集群 1 网络拓扑图 网络数据流图 2 项目环境 3 项目描述 4 项目步骤 1 规划设计整个集群的架构 网络拓扑 安装7台CentOS 7 6的系统 按照规划配置好每台l
  • rs232转usb驱动_世界上最小的伺服驱动器。

    PEAR 世界上最小的伺服驱动器 用于有刷和无刷电机的微型嵌入式控制器 8 40 Vdc单电源 3 A连续 6 A峰值 CANOpen DS402 DS301 RS232和USB配置 数字霍尔 单端编码器 2x通用输入 1x数字输出尺寸 2
  • dw1000 配置无法通过

    最近在使用DW1000 做UWB项目时 出现过一个问题 配置DW1000一直无法成功 奇怪 之前还好好的 一点点排查确认了SPI配置没有问题 速度也不会太高 最后发现是重新配置工程时错将DW1000的RESET引脚配成输出引脚 把它改回输入
  • TCP的三次握手,四次挥手,面试必会

    目录 一 TCP三次握手 建立连接 二 TCP三次握手细节 三 TCP 四次挥手 断开连接 四 TCP非常重要的协议 一 TCP三次握手 建立连接 握手 单纯就是发一个打招呼的数据 不携带业务信息 那么为什么叫三次握手呢 因为B的中间两次可
  • C++ map的基本操作和使用

    C map的基本操作和使用 1 map简介 map是一类关联式容器 它的特点是增加和删除节点对迭代器的影响很小 除了那个操作节点 对其他的节点都没有什么影响 对于迭代器来说 可以修改实值 而不能修改key 2 map的功能 自动建立Key
  • 【TypeScript】TypeScript中的泛型

    泛型的意义及语法 定义一个函数或类时 有些情况下无法确定其中要使用的具体类型 返回值 参数 属性的类型不能确定 此时泛型便能够发挥作用 举个例子 function test arg any any return arg 上例中 test函数
  • 红队内网渗透神器--CobaltStrike安装教程

    CobaltStrike介绍 CobaltStrike是一款渗透测试神器 被业界人称为CS神器 CobaltStrike分为客户端与服务端 服务端是一个 客户端可以有多个 可被团队进行分布式协团操作 CobaltStrike集成了端口转发
  • 【VS问题已解决】警告被视为错误 - 没有生成“object”文件

    VS问题已解决 警告被视为错误 没有生成 object 文件 目前遇到这个问题主要是因为代码存在不明显的语法错误 在VS生成解决方案的编译阶段之前会检查有没有明显的语法问题 首先是 例如缺少结尾分号 误用中文字符这种最明显问题 在运行之前就
  • 网络协议笔记-网络层-划分子网、IP数据报的分组转发

    1 子网及子网掩码 1 1 为什么划分子网 简单点说 就是IP地址不够用了 互联网的发展太快 IP地址不够分了 两级IP地址的设计不太合理 因为随着网络的增多路由表会变得巨大 书上的总结是这样的 IP地址空间的利用率有时很低 例如A类地址网
  • 使用Python将图片转pdf

    使用Python将图片转pdf 1 效果图 2 源码 参考 今天需要把图片转pdf 发现迅捷pdf转换开始默认带水印了 收费版那算了 那就用Python吧 可单转 可批量转 参考 https blog csdn net qq 5370609
  • AI笔记: 数学基础之正交矩阵与矩阵的QR分解

    正交矩阵 若n阶方阵A满足 A T A E A TA E ATA E 则称A为正交矩阵 简称正交阵 复数域上称为酉矩
  • Vue 框架

    Vue 简介 Vue 是一套用于构建用户界面的渐进式框架 Vue 的核心库只关注视图层 不仅易于上手 还便于与第三方库或既有项目整合 另一方面 当与现代化的工具链以及各种支持类库结合使用时 Vue 也完全能够为复杂的单页应用提供驱动 官方文