Vue-2

从零开始搭建自己的VueJS2.0+ElementUI单页面网站(二、编写导航页) 从零开始搭建自己的Vuejs2.0+ElementUI单页面网站之使用vue-router编写导航页面 阅读详情

生命周期

Vue 生命周期

在这里插入图片描述

Vue 生命周期函数

Vue 生命周期过程中,会自动运行一些函数,被称为"生命周期钩子",让开发者可以在特定阶段运行自己的代码

在这里插入图片描述

  • created 应用演示
<body>
  <div class="box">
    <ul v-for="item in list" :key="item.id">
      <li><img :src="item.img"></li>
      <li>{{ item.title }}</li>
      <li>{{ item.source }}</li>
      <li>{{ item.time }}</li> 
      <hr>
    </ul>
  </div>

  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script src="./js/vue.js"></script>
  <script>
    const boxObj = new Vue({
      el: '.box',
      data: {
        list: []
      },
      // created 应用演示
      async created() {
        const res = await axios.get('http://hmajax.itheima.net/api/news/')
        this.list = res.data.data
      }
    })
  </script>
</body>
  • mounted 应用演示
<body>
  <div class="box">
    <input type="text" v-model="words" class="search">
    <button @click=" words='' ">搜索一下</button>
  </div>

  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script src="./js/vue.js"></script>
  <script>
    const boxObj = new Vue({
      el: '.box',
      data: {
        words: ''
      },
      // mounted 应用演示
      // 等输入框渲染出来后,获取输入框焦点
      mounted() {
        document.querySelector('.search').focus()
      }
    })
  </script>
</body>

Vue CLI

基本介绍

Vue CLI 是 Vue 官方提供的一个全局命令工具,它可以帮助我们快速创建一个开发 Vue 项目的标准化基础架子(集成了 webpack 配置)

使用步骤

  1. 打开终端,全局安装 (一次):yarn global add @vue/cli 或 npm i @vue/cli -g
  2. 查看 Vue 版本:vue --version
  3. 创建项目架子:vue create 项目名称 (项目名称不能用中文)
  4. 启动项目:yarn serve 或 npm run serve (在 package.json 文件中可自定义命令)

目录文件介绍

在这里插入图片描述

组件化开发

认识组件化

  • 什么是组件化
一个页面可以拆分成一个个组件 (部分),每个组件有着自己独立的结构、样式、行为
  • 组件化的好处
便于维护,利于复用,提升了开发效率
  • 分类
1.根组件(App.vue)
2.普通组件

在这里插入图片描述

  • 组件的三个构成部分
template 结构 (有且只能有一个根元素)
script   行为 (写js逻辑)
style    样式 (可支持less,需要安装包)
在 style 中使用 less 语法的具体操作:
	1.安装依赖包 less 和 less-loader
	  输入命令即可:	yarn add less less-loader -D
	  其中 -D 的意思是只在开发时使用
	2.设置属性,例如: <style lang="less">...</style>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

组件的注册使用

方式分类

方式一:局部注册,只能在注册的组件内使用

  • 创建 .vue 文件(三个组成部分)
  • 在使用的组件内导入并注册

方式二:全局注册,所有组件内都能使用

注意事项

组件名规范,采用大驼峰命名法

局部注册

  • 文件路径:src/App.vue
<template>
  <div class="App">
    <!-- 头部组件 -->
    <Header></Header>
    <!-- 主体组件 -->
    <Main></Main>
    <!-- 底部组件 -->
    <Footer></Footer>
  </div>
</template>

<script>
// 导入普通组件
import JackHeader from "./components/JackHeader.vue";
import JackMain from "./components/JackMain.vue";
import JackFooter from "./components/JackFooter.vue";

// 导出的默认配置
export default {
  components: {
    // '组件名':组件对象
    Header: JackHeader,
    Main: JackMain,
    Footer: JackFooter
  },
};
</script>

<style>
.App {
  width: 600px;
  height: 700px;
  background-color: #87ceeb;
  margin: 0 auto;
  padding: 20px;
}
</style>
  • 文件路径:src/components/JackHeader.vue
<template>
  <div class="header">头部</div>
</template>

<script>
export default {
  
};
</script>

<style>
.header {
  height: 100px;
  line-height: 100px;
  text-align: center;
  font-size: 30px;
  background-color: #8064a2;
  color: white;
}
</style>
  • 文件路径:src/components/JackMain.vue
<template>
  <div class="main">主体</div>
</template>

<script>
export default {
  
};
</script>

<style>
.main {
  height: 400px;
  line-height: 400px;
  text-align: center;
  font-size: 30px;
  background-color: #f79646;
  color: white;
  margin: 20px 0;
}
</style>
  • 文件路径:src/components/JackFooter.vue
<template>
  <div class="footer">底部</div>
</template>

<script>
export default {
  
};
</script>

<style>
.footer {
  height: 100px;
  line-height: 100px;
  text-align: center;
  font-size: 30px;
  background-color: #4f81bd;
  color: white;
}
</style>

全局注册

  • 文件路径:src/main.js
// 本文件的核心作用:导入 App.vue 文件,基于 App.vue 文件创建结构渲染 index.html

// 1. 导入 Vue 核心包
import Vue from 'vue'

// 2. 导入 App.vue 根组件
import App from './App.vue'

// 5. 导入组件
import JackButton from "./components/JackButton.vue"

// 3. 提示:当前处于什么环境(生产环境 / 开发环境)
Vue.config.productionTip = false

// 6. 对组件进行全局注册
// Vue.component(组件名, 组件对象)
Vue.component('MyButton', JackButton)

// 4. Vue 实例化,提供 render 方法,基于 App.vue 创建结构渲染 index.html
// new Vue({
//   el: '#app',
//   render: (createElement) => { return createElement(App) }
// })
// 上面的代码等价于下面代码
new Vue({
  render: createElement => createElement(App)
}).$mount('#app')

组件的样式冲突

冲突问题:

默认情况下,写在组件中的样式会"全局生效",因此,很容易造成多个组件之间的样式冲突问题发生

解决办法:

可以给组件中的 style 标签加上 scoped 属性,这样可以让该组件的 style 样式只作用于当前组件,例如 `<style scoped>...</style>`

data 函数

<template>
  <div>
    <button @click="count--">-</button>
    <span>{{ count }}</span>
    <button @click="count++">+</button>
  </div>
</template>

<script>
export default {
  // data 函数保证每一个组件实例,维护一个独立的数据对象
  data() {
    return {
      count: 99,
    };
  },
};
</script>

<style scoped>
div {
  margin: 20px;
}
span {
  margin: 10px;
}
</style>

组件通信

基本内容

含义介绍:组件通信,就是指"组件与组件"之间的数据传递

组件关系:

  • 父子关系
  • 非父子关系

通信方案:

  • 父子关系 =》使用 props & $emit
  • 非父子关系 =》使用 provide & inject 或者 event bus
  • 通用解决方案 =》使用 Vuex(适合复杂业务场景)

在这里插入图片描述

父子通信

  • 文件路径:src/App.vue
<template>
  <div>
    <!-- 通过"自定义属性"向子组件发送数据 -->
    <BaseTest
      title="这是来自'父组件'的数据"
      :username="username"
      :age="age"
      :isSingle="isSingle"
      :hobby="hobby"
      @content="infoFn"
    ></BaseTest>
    <!-- 展示来自"子组件"的数据 -->
    <div class="box">{{ something }}</div>
  </div>
</template>

<script>
import BaseTest from "./components/BaseTest.vue";
export default {
  data() {
    return {
      something:'',
      // 假设从服务器端获得了数据
      username: "Jack",
      age: 30,
      isSingle: true,
      hobby: ["code", "run", "swim"],
    };
  },
  methods: {
    // 接收来自"子组件"的数据
    infoFn(info) {
      this.something = info
    },
  },
  components: {
    BaseTest,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseTest.vue
<template>
  <div>
    <hr />
    <h3>{{ title }}</h3>
    <p>姓名:{{ username }}</p>
    <p>年龄:{{ age }}</p>
    <p>是否单身:{{ isSingle ? "是" : "否" }}</p>
    <p>兴趣爱好:{{ hobby.join("、") }}</p>
    <button @click="func">确认收到</button>
    <hr />
  </div>
</template>

<script>
export default {
  // prop 是在组件上注册的一些自定义属性
  // 通过 props 进行接收这些属性
  props: ["title", "username", "age", "isSingle", "hobby"],
  methods: {
    func() {
      // 通过 $emit 向"父组件"发送消息
      this.$emit("content", "子组件已确认收到消息");
    },
  },
};
</script>

<style scoped>
</style>

props 验证

  • 文件路径:src/App.vue
<template>
  <div>
    <!-- 通过"自定义属性"向子组件发送数据 -->
    <BaseTest :w="width"></BaseTest>
  </div>
</template>

<script>
import BaseTest from "./components/BaseTest.vue";
export default {
  data() {
    return {
      width: 300,
    };
  },
  components: {
    BaseTest,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseTest.vue
<template>
  <div>
    <div class="base-progress">
      <div class="inner" :style="'width:' + w + '%'"></div>
    </div>
    <span>{{ w }}%</span>
  </div>
</template>

<script>
export default {
  // 通过 props 接收自定义属性,然后对其进行校验,如果校验失败,则控制台报错
  // 1. 基础写法(类型校验)
  // props: {
  //   w: Number,  // 约束传递过来的数据的类型
  // },
  // 2. 完整写法(更多校验)
  props: {
    w: {
      type: Number, // 类型
      required: true, // 是否必须(非空判断)
      default: 0, // 默认值
      validator(value) {
        if (value < 0 && value > 100) return true;
        else {
          console.error("数据范围必须是0~100");
          return false; // false 代表没有通过校验
        }
      },
    },
  },
};
</script>

<style scoped>
.base-progress {
  height: 26px;
  width: 400px;
  border-radius: 15px;
  background-color: #272425;
  border: 3px solid #272425;
  box-sizing: border-box;
  margin-bottom: 10px;
}
.inner {
  height: 90%;
  background-color: rgb(124, 193, 246);
  border-radius: 15px;
  border: 1px solid #272425;
}
</style>

非父子通信

  • 文件路径:utils/EventBus.js
// 1. 创建一个事件总线(空的 Vue 实例)
import Vue from 'vue'
const Bus = new Vue()
// 2. 导出事件总线
export default Bus
  • 文件路径:src/App.vue
<template>
  <div>
    <BaseA></BaseA>
    <BaseB></BaseB>
  </div>
</template>

<script>
import BaseA from "./components/BaseA.vue"
import BaseB from "./components/BaseB.vue"
export default {
  components: {
    BaseA,
    BaseB,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseB.vue
<template>
  <div>
    <span>BaseB</span>
    <button @click="sendMsg">发布消息</button>
  </div>
</template>

<script>
import Bus from "../utils/EventBus.js";
export default {
  methods: {
    sendMsg(){
      // 发布消息,该消息可以被多个组件同时接收
      Bus.$emit('B_Send_Msg','Hello, How are you?')
    }
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseA.vue
<template>
  <div>
    <span>BaseA</span>
  </div>
</template>

<script>
import Bus from "../utils/EventBus.js";
export default {
  // 钩子函数(详情回顾:生命周期知识点)
  created() {
    // 监听 Bus 事件
    Bus.$on("B_Send_Msg", (msg) => {
      alert("来自B发送的信息: " + msg);
    });
  },
};
</script>

<style>
</style>

跨层级非父子通信

  • 文件路径:src/App.vue
<template>
  <div>
    <BaseA></BaseA>
  </div>
</template>

<script>
import BaseA from "./components/BaseA.vue";
export default {
  // 所有的子孙后代都能共享这些数据
  provide() {
    return {
      color: this.color, // 传递"简单类型"是非响应式的,即数据不会更新
      userInfo: this.userInfo, // 传递"复杂类型"是响应式的,数据可以动态变化(推荐)
    };
  },
  data() {
    return {
      color: "pink",
      userInfo: {
        name: "Jack",
        age: 30,
      },
    };
  },
  components: {
    BaseA,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseA.vue
<template>
  <div>
    <p>{{ color }}</p>
    <p>{{ userInfo.name }}</p>
    <p>{{ userInfo.age }}</p>
  </div>
</template>

<script>
export default {
  inject: ["color", "userInfo"],
};
</script>

<style>
</style>

v-model 原理

原理解析:

v-model 本质上是一个"语法糖"(即:value 属性 和 input 事件的合写)

作用:提供数据的双向绑定

  • 数据变化,视图跟着变化
  • 视图变化,数据跟着变化

注意:$event 用于模板中,获取事件的形参

<template>
   <div>
    <input v-model="msg" type="text" />
    <!-- 上面的代码本质是下面的代码 -->
    <input :value="msg" @input="msg = $event.target.value" type="text" />
  </div>
</template>

表单类组件封装

数据绑定问题

在开发中,我们需要对"表单类组件"进行封装,而这个"子组件"的数据是来自"父组件"的,我们无法直接对"子组件"的"表单类标签"使用 v-model 进行双向的数据绑定,所以我们需要使用 `v-model拆解` 实现绑定数据

具体解决

  • 文件路径:src/App.vue
<template>
  <div>
    <BaseSelect
    :cityId="selectId"
    @changeId="selectId = $event"
    ></BaseSelect>
  </div>
</template>

<script>
import BaseSelect from "./components/BaseSelect.vue";
export default {
  data() {
    return {
      selectId: "102",	// 城市编号
    };
  },
  components: {
    BaseSelect,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseSelect.vue
<template>
  <div>
    <select :value="cityId" @change="handleChange">
      <option value="101">北京</option>
      <option value="102">上海</option>
      <option value="103">广州</option>
      <option value="104">深圳</option>
      <option value="105">重庆</option>
    </select>
  </div>
</template>

<script>
export default {
  props: {
    cityId: String,
  },
  methods: {
    handleChange(e) {
      this.$emit("changeId", e.target.value);
    },
  },
};
</script>

<style>
</style>

组件数据双向绑定

.sync 修饰符

作用:可以实现"子组件"与"父组件"的双向绑定,简化代码

特定:prop 属性名,可以自定义,不用固定为 value

具体演示

  • 文件路径:src/App.vue
<template>
  <div>
    <button @click="isShow = true">确认付款</button>
    <!-- <BaseDialog :visible="isShow" @update:visible="isShow = $event"></BaseDialog> -->
    <!-- :visible.sync => :visible + @update:visible 化简后结果如下所示:-->
    <BaseDialog :visible.sync="isShow"></BaseDialog>
  </div>
</template>

<script>
import BaseDialog from "./components/BaseDialog.vue";
export default {
  data() {
    return {
      isShow: false,
    };
  },
  components: {
    BaseDialog,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/BaseDialog.vue
<template>
  <div>
    <div v-show="visible" class="dialog">
      <p>你是否确定要付款?</p>
      <button @click="close">确定</button>
      <button @click="close">取消</button>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    visible: Boolean,
  },
  methods: {
    close() {
      this.$emit("update:visible", false);
    },
  },
};
</script>

<style>
.dialog {
  margin: 0 auto;
  width: 200px;
  border: 5px solid #000;
  border-radius: 10px;
}
</style>

ref 和 $refs

通过 ref 与 $refs 获取 dom 元素

<template>
  <div>
    <div class="box" ref="myBox"></div>
  </div>
</template>

<script>
export default {
  mounted() {
    // 通过 ref 与 $refs 获取 dom 元素,防止 document.querySelector() 从全局中获取元素产生冲突
    const myBox = this.$refs.myBox;
  },
};
</script>

<style>
</style>

通过 ref 与 $refs 获取"组件实例"

  • 第一步:给目标组件添加 ref 属性
<BaseForm ref="hhh"></BaseForm>
  • 第二步:使用 this.$refs.xxx 获取目标组件(同时可以调用其方法)
this.$refs.hhh.组件方法

Vue 异步更新

问题解析:

Vue 为了提高性能,修改了 dom 并不会立即更新,而是会等待一会儿再集中一起更新。如果在 dom 还没有更新的时候,代码继续执行下去,可能会出现找不到某个 dom 元素的问题。 

解决方案:

使用 $nextTick 后,等 DOM 更新后,才会触发执行此方法里的函数体
this.$nextTick(()=>{
	// 这里写 DOM 更新后,要执行的代码
})
从零开始搭建自己的VueJS2.0+ElementUI单页面网站(一、环境搭建) 前言VueJS可以说是近些年来最火的前端框架之一,越来越多的网站开始使用vuejs作为前端框架,vuejs轻量、简单的特性使得前端开发变得更加简易,而基于vuejs的前端组件库也越来越多。我们今天使用的ElementUI,是饿了么团队开发的一款基于vuejs的前端组件库,也是众多vuejs组件库里面比较优秀的一款。这里要说一下我们构建网站所需要用到的一些东西: NodeJS(npm) Webstor 阅读详情

相关推荐

【vuejs】vue2项目中封装组件的分析以及常用方式和属性讲解

定义组件模板是封装过程的第一步。在Vue2中,模板是组件的声明式部分,它描述了组件的UI结构。模板可以包含HTML标签、组件自定义标签以及Vue指令。基本结构:每个组件模板都应遵循基本的HTML结构,包括标签包裹的组件内容。组件复用:在模板中使用标签来复用已有的Vue组件或HTML元素。动态组件:利用可以实现组件的动态切换。条件渲染:使用v-ifv-else-ifv-else和v-show实现条件渲染,使组件能够根据不同条件显示不同内容。列表渲染:使用v-for。

工作的日常记录和平凡的生活分享 2111

vuejs插件_VueJS 2的基本翻译插件

vuejs插件 Vue-Polyglot (Vue-Polyglot) basic translation plugin for VueJS 2+. VueJS 2+的基本翻译插件。 View demo 查看演示 Download Source 下载源 安装 (Installation) npm install --save vue-polyglot TLDR (TLDR) can lo...

cuk5340的博客 2152

PLC编程标准之争:IEC61131与IEC61499核心区别与选型指南

在工业自动化领域,PLC编程长期依赖IEC61131标准,它定义了梯形图、结构化文本等语言,通过周期扫描机制保证确定性执行。然而,随着工业4.0和分布式控制场景的兴起,IEC61499以事件驱动模型打破传统范式,让功能块能跨设备协同,实现更灵活的柔性产线和模块化系统。理解两者在程序结构、数据交互、部署方式和实时性上的差异,是选型与工程落地的关键。本文从基础概念出发,剖析执行模型与架构演进,结合一线调试经验,帮助工程师在传统PLC与下一代标准之间做出理性决策。

weixin_27014595的博客 268

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

ranran0306的博客 9692

Paddle账户与支付宝功能快速开通指南:全球化支付解决方案

本文为开发者提供了Paddle账户与支付宝功能集成的详细开通与配置指南。通过Paddle这一全球化支付与销售平台,开发者可一站式管理全球支付与税务合规,而集成支付宝则能无缝覆盖中国用户,实现“一个平台,覆盖全球主流支付方式”,有效提升支付转化率与收款效率。

qq_27496129的博客 1119

【数据结构】平行四边形数量

平行四边形个数,哈希表,散列

cyy010617的博客 4009

VueJS2 todoList Demo

VueJS2 todoList Demo最近在学习VueJS,先看2.0的API,目前看完了基础部分,搭建Demo练习一下工具: sublime, vue-cli 环境: 按教程,通过cnpm安装; app.vue代码如下:<template> <div id="app"> <h1 v-text="title"></h1> <input type="text" v-mo

Carl·铭的博客 372

Windows下RISC-V开发环境搭建:xpack-riscv-none-elf-gcc安装配置全攻略

本文详细介绍了在Windows平台下搭建RISC-V开发环境的完整流程,重点讲解xpack-riscv-none-elf-gcc工具链的安装配置方法。从环境变量设置到VSCode集成开发环境搭建,涵盖汇编程序和C程序开发实践,为开发者提供一站式解决方案,助力快速掌握RISC-V架构开发技能。

weixin_26765287的博客 437

vuejs 排序map_vuejs2的简单干净数据表,具有排序之类的基本功能

vuejs 排序map Vue好表 (Vue-good-table) A simple, clean data table for VueJS (2.x) with essential features like sorting, column filtering, pagination etc. 一个简单,干净的VueJS(2.x)数据表,具有诸如排序,列过滤,分页等基本功能。 现场演示 ...

cuk5239的博客 1289

单路径微分相除和微分自乘相减算法(PGC-SDD-DSM)

PGC-SDD-DSM算法通过融合单路微分相除和差分自乘,解决了传统PGC解调技术对调制深度和光强干扰敏感的问题,显著提升了解调稳定性和抗失真能力。其高信噪比、低谐波失真以及对参数变化的鲁棒性,使其在光纤传感领域具有重要应用价值。PGC-SDD-DSM算法在计算复杂度方面具有显著的优势,主要体现在其高稳定性和低谐波失真上。这些优势使其在光纤光学干涉传感器中表现出色,尤其是在面对光强干扰和调制深度变化时。

百态·数智思维 | 聚焦大数据、量化与未来AI 841

《民机适航入门指南:从法规学习到项目实践的全面解析》

适航(Airworthiness)是指航空器、其发动机、螺旋桨和其他部件在规定条件下,能够安全飞行并满足有关航空法规规定的条件。简而言之,适航代表了航空器在任何时候都能安全运营的状态。适航在民用航空领域尤为关键,因为飞机必须经过严格的适航认证才能投入商用。这些认证的目标是确保飞机能够在广泛的运行条件下保持飞行安全,从而保护乘客、机组和地面人员的生命财产安全。适航法规覆盖了飞机的整个生命周期,包括设计、制造、测试、运营、维护和报废。

qq_41854911的博客 992

vuejs插件_VueJS 2的访问控制列表插件

vuejs插件 Vue JS 2中的访问控制列表插件 (Plugin of Access Control List from Vue JS 2) This plugin aims to control the layout of the system and block access to certain routes of the vue-router, that according to th...

cuk5239的博客 338

yolov5-6.0的稀疏化训练、结构化剪枝、微调

YOLOv5的BN剪枝、微调

qq_41920323的博客 4394

vuejs 组件_VueJS 2的头像组件

vuejs 组件 Vue头像 (VueAvatar) Avatar component for VueJS 2 VueJS 2的头像组件 Use username to create letter avatar (up to 3 chars) 使用用户名创建字母头像(最多3个字符) If an image src is provided, will try to use it as avat...

cuk5239的博客 415

收放卷伺服控制系统详细算法介绍(电子齿轮+张力PID卷绕轴控制功能块)

收放卷控制系统涉及的内容非常多,这里我们介绍全伺服系统利用电子齿轮指令实现主从轴的比例随动速度控制,收放卷控制算法介绍常用链接如下1、收放卷+排线控制收放卷+排线控制系统框图-优快云博客文章浏览阅读24次。1、收放卷前馈量计算FC收放卷前馈量计算FC(CODESYS ST源代码)-优快云博客文章浏览阅读16次。1、收放卷前馈量计算FC(博途PLC):收放卷前馈量计算FC(梯形图+SCL代码)-优快云博客文章浏览阅读534次。2、收放卷前馈量计算FC。

RXXW_Dor的博客 3120

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

视频教程-VueJS2.0前端框架/全球排名第一-Vue

VueJS2.0前端框架/全球排名第一 云知梦创始人,国际架构师,11年互联...

weixin_30522425的博客 527

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

vue2 、 vue3 官网

vue2 、 vue3 官网

qq_45852108的博客 3688

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

tooltip.js_基于VueJS 2.x Tooltip组件的tooltipster.js

tooltip.js Vue工具提示器 (vue-tooltipster) This is a Vue tooltipster component for VueJS2 inspired in Tooltipster plugin. 这是受Tooltipster插件启发的VueJS2的Vue工具提示组件。 View demo 查看演示 Download Source 下载源 Also ...

cuk5239的博客 485

VueJS2 学习指南(四)

这是本书的最后一章。老实说,我对此感到有点难过。我和你在一起的时间真的很愉快。我知道我不认识你,但我觉得我认识你。我和你交谈,有时我觉得你也在和我交谈。到目前为止开发的一切,我不能说都是我开发的;我觉得我们一直在一起工作。实际上,这是一种非常有趣的感觉,因为当你阅读这本书时(对我来说,这是未来),我同时处于现在和未来。而你现在处于你的现在,同时又在过去和我交谈。我喜欢书籍和技术建立的联系方式,不仅在人与人之间建立联系,还在不同的时间间隔之间建立联系。这太神奇了。

龙哥盟 1091

Vue2.0+Vue3.0全套教程丨vuejs从入门到精通之第2篇

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。Vue2.0+Vue3.0全套教程丨vuejs从入门到精通。

只想AC的博客 2811

vuejs 优化滚动条_VueJS 2的虚拟响应式跨浏览器滚动条组件

vuejs 优化滚动条 VBar (VBar) The virtual responsive crossbrowser scrollbar component for VueJS 2x VueJS 2x的虚拟响应式跨浏览器滚动条组件 现场演示 (Live Demo) https://luiguild.github.io/v-bar/ https://luiguild.github.io...

cuk5340的博客 264

Vue2和Vue3官网地址

Vue2和Vue3官网地址

weixin_44846945的博客 2960

Vue Material Kit 2:构建现代网页的利器

Vue Material Kit 2:构建现代网页的利器 在当今快速发展的网页设计领域,选择一个既美观又功能强大的设计系统至关重要。Vue Material Kit 2 正是这样一个解决方案,它结合了VueJS 3和Bootstrap 5的强大功能,为开发者提供了一个全面的前端开发工具包。 项目介绍 Vue Material Kit 2 是一个免费的VueJS设计系统,灵感来源于Material ...

gitblog_00023的博客 920

【Vuejs】802- 如何区别 Vue2 和 Vue3 ?

作者:王立发https://zhuanlan.zhihu.com/p/267040951Vue 3 的 Template 支持多个根标签,Vue 2 不支持Vue 3 有 createA...

pingan8787 7848

vuejs2.0和element-ui

使用vuejs2.0和element-ui 搭建的一个后台管理界面 转载于:https://www.cnblogs.com/peach/p/7392682.html

weixin_33739541的博客 275

vue2.0 html5,Vuejs2.0 使用教程

Vuejs2.0 使用教程简介:在本实验中你可以学到数据双向绑定,介绍vuejs的部分指令等等。适合有一些html和js经验的伙伴。教程提纲:第1节 开始使用 Vuejs 2.0第2节 Vuejs的常用指令第3节 Vuejs的第一个示例第4节 Vuejs组件第5节 vuejs 计算属性第1节 开始使用 Vuejs 2.0一、实验介绍1.1 实验内容本实验简单介绍Vuejs的概念,获取,和简单的例子...

weixin_35981962的博客 379
上一篇: 如何将浏览器设置为黑色
下一篇: Vue-3
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值