后端学习Vue系列之——基础知识总结篇

写给后端工程师看的Vue.js入门 写给后端工程师看的Vue.js入门 这期博客,写写Vue.js 如今前后端分离已成主流,但想成为一个优秀全能的后端工程师,我想我们也应该掌握Vue.js(因为它是国内最流行的前端框架) 需要明白: 我们的JSON数据,传到前端后,发生了什么?前端的项目对我们的数据做了什么? 前端是怎么把我们后端当初做的页面跳转给接管的? 需要掌握: 建Vue实例,知道Vue的常见属性 会使用Vue的生命周... 阅读详情

前言

作为一个内心骚动想做点小系统的后端来说,学习Vue是过不去的一个坎,毕竟香嘛~

遂写一篇博文用于记录在Vue中用的比较多的,且不容易记的知识点,方便自己在需要使用时能够查找到相关知识点以及如何快速使用。

正文

1. $emit方法

$emit会申明一个事件的绑定,例如:

..
methods: {
    clickfun: function() {
        this.count++;
        // 自定义一个clicknow事件,就像click事件样。
        this.$emit("clicknow", this.count);
    },
    clicknowfunc: function(data) {
        console.log(data);
    }
}
..

<!-- 点击clicknow之后,就会触发clicknowfunc方法。 -->
<button @clicknow="clicknowfunc"></button>



2. $on

对于 o n , 有 点 类 似 于 j q u e r y 的 on,有点类似于jquery的 on,有点类似于jquery的(xxx).on(“事件名称”, function(){}) (比喻的可能有点不对)

意思就是将要调用某个事件,就拿$emit的例子来说:

<script>
    new Vue({
        el: '#root',
        data(){},
        created(){
            // 相当于触发clicknow事件,然后调用了clicknowfunc方法。
            this.$on("clicknow", this.clicknowfunc);
        },
        methods:{
            clickfun: function() {
                this.count++;
                // 自定义一个clicknow事件,就像click事件样。
                this.$emit("clicknow", this.count);
            },
            clicknowfunc: function(data) {
                console.log(data);
            }
        }
    })
</script>

3. 自定义指令——direcctive

除了Vue核心功能的指令,例如v-model双向绑定指令,v-show展示指令,Vue还可以自定义指令。

例如需要对于一个input需要焦点聚焦的需求,就可以通过directive方法来实现。

首先可以注册一个全局自定义指令:v-focus

注册全局指令

和注册全局组件一样,可以通过Vue.directive来注册全局指令。

Vue.directive('focus', {
    // 当被绑定的元素插入到DOM中时...
    inserted: function(el) {
        // 聚焦元素
        el.focus();
    }
})

注册局部指令

除了可以注册全局指令,当然也有注册局部指令,在Vue组件内也可以接受一个directives选项:

directives: {
    // focus就是指令的名称,通过:vue-focus来使用。
    focus: {
        // 指令的定义
        inserted: function(el) {
            el.focus();
        }
    }
}

注册完自定义指令后,就可以在input元素里使用了

<input v-focus>
2.1 钩子函数

一个指令定义对象可以提供如下几个钩子函数 (均为可选):

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

  • unbind:只调用一次,指令与元素解绑时调用。

更详细内容在Vue官网查看:自定义指令

2.2 示例
<html>
  <head>
    <title>directive 用法</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <div v-loading="isLoading">{{data}}</div>
      <button @click="update">更新</button>
    </div>
    <script>
      Vue.directive('loading', {
        update(el, binding, vnode) {
          if (binding.value) {
            const div = document.createElement('div')
            div.innerText = '加载中...'
            div.setAttribute('id', 'loading')
            div.style.position = 'absolute'
            div.style.left = 0
            div.style.top = 0
            div.style.width = '100%'
            div.style.height = '100%'
            div.style.display = 'flex'
            div.style.justifyContent = 'center'
            div.style.alignItems = 'center'
            div.style.color = 'white'
            div.style.background = 'rgba(0, 0, 0, .7)'
            document.body.append(div)
          } else {
            document.body.removeChild(document.getElementById('loading'))
          }
        }
      })
      new Vue({
        el: '#root',
        data() {
          return {
            isLoading: false,
            data: ''
          }
        },
        methods: {
          update() {
            this.isLoading = true
            setTimeout(() => {
              this.data = '用户数据'
              this.isLoading = false
            }, 3000)
          }
        }
      })
    </script>
  </body>
</html>

4. Vue.extend

Vue.extend主要是用来生成组件的构造函数。在Vue.js API官方文档中,有专门介绍:

Vue.extend使用基础Vue构造器,创建一个“子类”,参数是一个包含组件选项的对象。需要注意的,在Vue.extend()中它必须是函数。

4.1 案例1
<html>
  <head>
    <title>Vue.extend 用法</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <Test :msg="message"></Test>
    </div>
    <script>
      const component = Vue.extend({
        template: '<div>{{msg}}</div>',
        props: {
          msg: {
            type: String,
            default: 'default message'
          }
        },
        name: 'Test'
      })
      Vue.component('Test')
      new Vue({
        el: '#root',
        data() {
          return {
            message: "Test Extend Component"
          }
        }
      })
    </script>
  </body>
</html>
4.2 案例2
<html>
  <head>
    <title>Vue.extend 用法2</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      #loading-wrapper {
        position: fixed;
        top: 0;
        left: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        background: rgba(0,0,0,.7);
        color: #fff;
      }
    </style>
  </head>
  <body>
    <div id="root">
      <button @click="showLoading">显示Loading</button>
    </div>
    <script>
        // Loading方法中,定义了一个Vue的extend,即构造方法,并申明为LoadingComponent。
      function Loading(msg) {
        const LoadingComponent = Vue.extend({
          template: '<div id="loading-wrapper">{{msg}}</div>',
          props: {
            msg: {
              type: String,
              default: msg
            }
          },
          name: 'LoadingComponent'
        })
        const div = document.createElement('div')
        div.setAttribute('id', 'loading-wrapper')
        document.body.append(div)
        // 通过$mount方法,将LoadingComponent挂载到id为loading-wrapper元素上
        new LoadingComponent().$mount('#loading-wrapper')
        return () => {
          document.body.removeChild(document.getElementById('loading-wrapper'))
        }
      }
      
      // 定义一个Vue原型,用于去调用Loading方法。
      Vue.prototype.$loading = Loading
      new Vue({
        el: '#root',
        methods: {
          showLoading() {
            const hide = this.$loading('正在加载,请稍等...')
            setTimeout(() => {
              hide()
            }, 2000)
          }
        }
      })
    </script>
  </body>
</html>

5. Vue.use

官网中,Vue.use(plugin),主要用来安装“插件”,定义如下:

  • 参数:

    • {Object | Function} plugin
  • 用法:

    安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作为参数传入。

    该方法需要在调用 new Vue() 之前被调用。

    当 install 方法被同一个插件多次调用,插件将只会被安装一次。

5.1 案例

结合上面的Vue.extend的案例2进行一起讲解,

<html>
  <head>
    <title>Vue.use 用法</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      #loading-wrapper {
        position: fixed;
        top: 0;
        left: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        background: rgba(0,0,0,.7);
        color: #fff;
      }
    </style>
  </head>
  <body>
    <div id="root">
      <button @click="showLoading">显示Loading</button>
    </div>
    <script>
        // 定义一个loading插件,将插件需要定义的方法声明在install方法里,
      const loadingPlugin = {
        // 在install方法里,传入vm作为Vue
        install: function(vm) {
            // 通过extend定义一个LoadingComponent的构造函数
          const LoadingComponent = vm.extend({
            template: '<div id="loading-wrapper">{{msg}}</div>',
            props: {
              msg: {
                type: String,
                default: 'loading...'
              }
            }
          }, 'LoadingComponent')
          function Loading(msg) {
            const div = document.createElement('div')
            div.setAttribute('id', 'loading-wrapper')
            document.body.append(div)
            new LoadingComponent({
              props: {
                msg: {
                  type: String,
                  default: msg
                }
              } 
            }).$mount('#loading-wrapper')
            return () => {
              document.body.removeChild(document.getElementById('loading-wrapper'))
            }
          }
          vm.prototype.$loading = Loading
        }
        // install方法结束
      }
      Vue.use(loadingPlugin)
      new Vue({
        el: '#root',
        methods: {
          showLoading() {
            const hide = this.$loading('正在加载,请稍等...')
            setTimeout(() => {
              hide()
            }, 2000)
          }
        }
      })
    </script>
  </body>
</html>

6. 指令

根据官方文档的理解,指令(Directives)是带有v- 前缀的特殊属性。对于指令v-的值,预期结果就相当于一个JS表达式计算的结果,例如:

<p v-if="seen">你可以看到我了</p>

如果seen的值为false,则不会插入该<p>元素。

<div id="app">
  <label for="r1">控制p标签元素的展示。</label><input type="checkbox" v-model="use" id="r1">
  <br><br>
	<p v-if="use">你可以看到我了</p>
</div>
    
<script>
new Vue({
    el: '#app',
  data:{
      use: false
  }
});
</script>

运行该demo,可以发现指令的控制就是响应式地操作DOM。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

一些指令能够接收一个“参数”,在指令名称之后以冒号表示。例如,v-bind 指令可以用于响应式地更新 HTML attribute:

<a v-bind:href="url">...</a>

在这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。

另一个例子是 v-on 指令,它用于监听 DOM 事件:

<a v-on:click="doSomething">...</a>
6.1 缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,然而,对于一些频繁用到的指令来说,就会感到使用繁琐。同时,在构建由 Vue 管理所有模板的单页面应用程序 (SPA - single page application) 时,v- 前缀也变得没那么重要了。因此,Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写:

v-bind的缩写

<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>

v-on

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

它们看起来可能与普通的 HTML 略有不同,但 : 与 @ 对于 attribute 名来说都是合法字符,在所有支持 Vue 的浏览器都能被正确地解析。而且,它们不会出现在最终渲染的标记中。缩写语法是完全可选的,但随着你更深入地了解它们的作用,你会庆幸拥有它们。

参考

别再搞错了!ERA5-Land小时数据里的辐射值,原来不是你想的那个‘瞬时值’ 本文深入解析ERA5-Land小时数据中辐射值的累积特性,揭示其与瞬时值的本质区别。通过详细的数据处理方法和Python代码示例,指导研究者正确转换累积辐射量为实用瞬时值,避免常见误区,提升气候模型验证的准确性。 阅读详情

相关推荐

YOLOv8改进——引入可变形卷积DCNv3

本文只讲解在YOLOv8的代码中添加DCNv3的操作流程, 具体的原理参见上述的链接~是pytorch实现的版本,只要基础的pytorch环境安装正确就不会出错。是C++实现版本,必须先在上一步编译成功,或者安装好了轮子,否则会报错。但是在实际的训练过程中,C++版本的运行速度更快,推荐使用C++版本。(具体怎么修改,都可以自己决定,然后通过实验看看效果如何)文件夹,该文件夹下的内容就是实现DCNv3算子的核心代码。中,下图中的列表里添加。

zyw2002的博客 3万+

Vue基础知识

<!-- 案例1(创建一个vue应用): --> <div id="app"> {{message}} {{name}} </div> <script> var vm = new Vue({ el:'#app', //el:元素 data:{ message:'hello Vue!', ...

php阿宝的博客 589

2-6-1-1 QNX编程入门之进程和线程(一)

文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。

星原飞火的博客 1323

Vue基础之指令

上一篇文章带领大家了解了Vue基础内容之一的生命周期,学习了生命周期三个阶段中最重要的8个生命周期函数,点击回顾Vue基础之生命周期。这篇文章开始学习Vue基础的另外一个重要内容——指令。除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。和组件类似,自定义指令在模板中使用前必须先注册。而根据注册方式的不同可分为局部注册和全局注册。

qq_50564231的博客 309

基于ST32 DAC7311数模转换器驱动代码及电路设计完整版

基于ST32的DAC7311模数转换器的电路设计及驱动代码完整版

qq_39626643的博客 3716

CoppeliaSim(原V-REP)新手上路

CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。,您也可以在官网中Downloads里找您需要的版本,一般只需要下载EDU版本就可以了,我下载的是v4.1.0 windows EDU版本。在版本V4之前,CoppeliaSim叫V-REP,在官网可以下载到之前的V-REP版本。

qq_37051669的博客 4万+

Vue组件—自定义事件

Vue组件 自定义组件 Vue框架 Vue查缺补漏

bubu212的博客 396

告别仿真报错!手把手教你为Intel MAX10 FPGA定制IBIS模型(附Allegro Skill工具)

本文详细介绍了为Intel MAX10 FPGA定制IBIS模型的完整流程,解决信号完整性仿真中的管脚映射问题。通过Allegro Skill工具自动化处理管脚信息,优化IBIS模型关键段落,提升仿真效率和精度,适用于高速数字电路设计。

weixin_33217202的博客 321

vue踩坑之报错Error in nextTick: "InvalidCharacterError: Failed to execute 'setAttribute' on 'Element': ''

Error in nextTick: "InvalidCharacterError: Failed to execute ‘setAttribute’ on ‘Element’: ‘’ is not a valid attribute name." 这个错误是在template中出现了‘’符号 可能使用的不对 在上下文去找到这个地方 修改就 OK了 ...

weixin_43963309的博客 7422

电磁阀颤振工作原理

颤振 颤振,弹性结构在均匀气(或液)流中受到空气(或液体)动力、弹性力和惯性力(见达朗伯原理)的耦合作用而发生的大幅度振动,它是气动弹性力学中最重要的问题之一。 随着机电液一体化技术的发展,电液比例控制技术的应用越来越广泛。电液比例控制系统范围较广,在液压传动与控制过程中,系统能够接受模拟信号或数字信号,使输出的流量或压力连续成比例地变化,都属于此类。该控制系统的优点是充分利用了液压控制与电气控制的长处,即功率传递靠液压,信号处理靠电气的优化措施。 电液比例控制原理与要求 液压控制系统中两个最重要的被控参数

小幽余生不加糖 1万+

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 331

vue.2.2.1版本

/*! *转载自https://unpkg.com/vue@2.2.1/dist/vue.js * Vue.js v2.2.1 * (c) 2014-2017 Evan You * Released under the MIT License. */ (function (global, factory) { typeof exports === 'object' &amp;&...

weshouldhelp的博客 5749

【部署】Docker部署OpenClaw及常见问题解决(win11)

给AI单独开一个隔离的小容器,AI执行所有命令、下载文件都在这个小盒子里,就算AI被诱导执行危险命令,也不会影响你Win11本机的文件和系统,是必开的安全功能。Docker容器里的OAuth回调,会尝试在你Win11本机的1455端口捕获认证信息,但容器和Win11本机的网络隔离,导致浏览器访问不到这个回调地址。「挂载」就是把你Win11本机的文件夹,共享给容器里的「虚拟小电脑」,两边都能读写文件,比如你想让AI操作你D盘里的代码文件,就需要挂载。

海兰 4695

vue学习路径 - 最全最新Vue、Vuejs教程,从入门到精通

Vue学习目录

全网同名:PBitW,更多内容,可以搜索《普通前端进阶记》 2591

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Vue学习之路(基础篇)

Vue 是一个渐进式javascript 框架 js 简化页面js操作

程序员小王的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

后端学习Vue系列之——Vuex

前言 作为一个内心骚动想做点小系统的后端来说,学习Vue是过不去的一个坎,毕竟香嘛~ 遂写一篇博文用于记录在Vue中用的比较多的,且不容易记的知识点,方便自己在需要使用时能够查找到相关知识点以及如何快速使用。 在基础篇中,已经介绍了关于Vuex中的一些基础知识点,下面就会陆续介绍Vuex中进阶的一些知识点,总结出来方便自己随时查阅。 正文 在官网上,对于Vuex的介绍为,Vuex是一个专为Vue.js应用程序开发的状态管理模式,说白了就是为了实现组件之间数据的共享。对于Vue来说,组件之间共享数据的方式:

你要悄悄的拔尖,然后惊艳所有人 3157

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Vue学习总结——前后端分离

对于前后端分离从是什么,为什么,怎么办三方面谈谈自己的见解

qq_53008257的博客 1万+

vue怎么和python后端交互_vuejs前后端数据交互之从后端请求数据的实例

vuejs前后端数据交互之从后端请求数据的实例本文将向大家介绍一种用vue-resource从后端请求数据的方法。比如说从后端请求一张表过来,(1)首先,在data中return一个msg:[]数组来接收表的数据;(2)在方法中定义一个请求函数,比如我们这里函数名定义为showDetails;methods:{showDetails:function(){this.$http.get(baseUR...

weixin_39747049的博客 3076

探索高效开发:VueJS + Laravel 前后端分离框架

探索高效开发:VueJS + Laravel 前后端分离框架 项目介绍 vuejs-laravel 是一个专为现代Web开发设计的前后端分离框架,结合了 VueJS、Laravel、Webpack 和 Semantic-UI 等前沿技术。该项目旨在为开发者提供一个快速、高效、易于扩展的开发环境,特别适合构建单页面应用(SPA)和复杂的后台管理系统。 项目技术分析 前端技术栈 VueJS:作为前端...

gitblog_00061的博客 1033

分享一份给后端培训Vue基础知识的文档

文章目录Vue基础知识讲解创建第一个vue实例挂载点,模板,实例基本的数据表达式:Vue中的属性绑定和双向数据绑定vue中常用指令v-bindv-show, v-if, v-forv-onvue实例中方法和事件数据传输方法父子通信,子父通信,兄弟通信Vue中计算属性computed和监听属性函数watch定义computed和watch比较生命周期相关链接 Vue基础知识讲解 这是一份我给公司后...

ljw_Josie的博客 2465

Flask-VueJS 项目教程

Flask-VueJS 项目教程 1. 项目的目录结构及介绍 flask-vuejs-survey/ ├── backend/ │ ├── app/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── routes.py │ │ └── ... │ ├── config.py │ ├── requirements....

gitblog_00957的博客 1100

SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计

Spring Boot + Vue 管理系统,新手小白入门教程,配套视频及代码

qq1803291168 1万+

和小白一起学习Vue—Vue学习总结篇

Vue学习总结 作者:小白的蟒蛇 小白撰写,不喜勿喷,错误之处大神请指正。 一、基础学习 1. 基本废话 vue的学习要有最基本的前端知识基础。html、css、javascript。学习基础,不需要精深,学习基础基础基础。博主用了三天不到的时间简单过了一遍,以后学习中遇到不会的就再查文档,遇到不会的再查文档,不断下去自然而然就会了。下面提供一些学习资料直通车,可以先按照直通车的内容敲一遍...

小白的蟒蛇 1343

vuejs php 前后端分离,详解前后端分离之VueJS前端

前言前端用什么框架都可以,这里选择小巧的vuejs。要实现的功能很简单:1、登录功能,成功将服务器返回的token存在本地2、使用带token的header访问服务器的一个资源本次实验环境:css-loader": "^0.25.0","file-loader": "^0.9.0","vue-loader": "^11.1.4","vue-template-compiler": "^2.2.1",...

weixin_42311427的博客 362

后端 学习 前端 Vue 框架基础知识

Vue . component() // 使用Vue直接注册根实例组件,属于所有组件共有的Vuex 是一个状态管理模式的库,集中存储所有组件的状态。说到这里可能还有人不明白,什么叫做状态管理?在之前我们见到父子组件传递参数的时候,使用prop进行声明接收,但是只能单向传递,父传给子,子组件要想改变参数的值无法影响到父组件以及其他组件的。一个例子,有用户组件、员工组件、部门组件,在开发过程中,有一个数据count,三个组件中都要用到。

rain67的博客 2987

完整的vuejs + django 前后端分离项目实践(登录,注册,权限控制,可视化)

完整的vuejs + django 前后端分离项目实践(登录,注册,权限控制,可视化) vuejs是一个流行的前端框架,django是一个python非常流行的web框架,在某期的作业中,需要基于它两实现一个前端后分离,并且拥有权限管理的系统,声明本系统全优快云唯一,不允许转载,框架已经搭建成型,爬虫可以自行扩展成其他类型,实际效果图在最后方,本项目只可用于学习,不可用于非法使用,源码在最文字末尾,如遇有环境搭建问题,可以联系帮忙解决: 项目前端采用vuejs (vue-admin-template框架

Bansi的专栏 2797
上一篇: 二进制运算以及源码、补码、反码概念讲解
下一篇: 后端学习Vue系列之——Vuex
CoderBruis
博客等级 码龄10年 4444粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值