当前位置: 首页 > news >正文

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言

  • VUE是前端用的最多的框架;
  • 这篇文章是本人大一上学习前端的笔记;
  • 欢迎点赞 + 收藏 + 关注,本人将会持续更新。
  • 本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总结
  • 前端入门一之HTML知识讲解
  • 前端入门一之CSS知识详解
  • 前端入门一之JS最基础、最基础语法
  • 前端入门一之JS对象、字符串对象、数组对象、Data()对象等
  • 前端入门一之DOM、获取元素、DOM核心、事件高级、操作元素、事件基础、节点操作
  • 前端入门一之BOM、window对象常见事件、定时器、JS执行机制、location对象、navigatior对象、history对象
  • 前端入门一之ES6–面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包
  • 前端入门一之ES6–递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set
  • 前端入门之VUE–基础与核心
  • 前端入门之VUE–vue组件化编程
  • 前端入门之VUE–vue脚手架编程
文章目录
      • 4、Vue中的Ajax
          • 4.1、Vue脚手架配置代理
        • 4.2、vue-resource
        • 4.3、slot插槽
      • 5.Vuex插件
        • 5.1、理解vuex
          • 5.1.1、Vuex是什么
          • 5.1.2、什么时候用vue
        • 5.2搭载Vuex环境
          • 5.2.1、使用Vuex编写
        • 5.3、getters配置项
        • 5.4、四种方法
        • 5.5、模块化 + 命名空间
      • 6.Vue Router路由管理器
        • 6.1、相关理解
        • 6.2、基本路由
        • 6.3、注意事项
        • 6.4、多级路由
        • 6.5、query()
        • 6.6、命名路由
        • 6.7、路由的params参数
        • 6.8、props配置
        • 6.9、路由跳转replace()
4、Vue中的Ajax
4.1、Vue脚手架配置代理

下载axios库:npm install axios

vue脚手架配置代理服务器:

  • 方法一:在vue.config.js中添加如下配置

    devServer: {proxy: "http://localhost:5000"
    }
    

    说明:

    1. 优点:配置简单,请求资源时直接发给前端即可
    2. 缺点:不能配置多个代理,不能灵活的控制请求是否走代理
    3. 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资源)
  • 方法二:

    devServer: {proxy: {'/api1': { // 匹配所有以 '/api1'开头的请求路径target: 'http://localhost:5000',// 代理目标的基础路径changeOrigin: true,pathRewrite: {'^/api1': ''}},'/api2': { // 匹配所有以 '/api2'开头的请求路径target: 'http://localhost:5001',// 代理目标的基础路径changeOrigin: true,pathRewrite: {'^/api2': ''}}}
    }// changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
    // changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080
    

    优点:可以配置多个代理,且可以灵活的控制请求是否走代理

    缺点:配置略微繁琐,请求资源时必须加前缀

4.2、vue-resource

下载 vue-resource库:npm i vue-resource

总结:

vue项目常用的两个Ajax库:

  1. axios:通用的Ajax请求库,官方推荐,效率高
  2. vue-resource:vue插件库,vue 1.x使用广泛,官方已不维护
4.3、slot插槽

作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信方式

分类:默认插槽、具名插槽、作用域插槽

使用方法:

  1. 默认插槽

    父组件中:<Category><div>html结构1</div></Category>
    子组件中:<template><div><slot>插槽默认内容</slot></div></template>
    
  2. 具名插槽

    父组件中:<Category><template slot="center"><div>html 1</div></template><template v-solt:footer><div>html 2</div></template></Category>
    子组件中:<template><solt name="center">默认卡槽内容</solt><solt name="footer">卡槽默认内容</solt></template>
    
  3. 作用域插槽

    父组件中:




    • {{g}}



    	<Category><template slot-scope="scopeData"><!-- 生成的是h4标题 --><h4 v-for="g in scopeData.games" :key="g">{{g}}</h4></template></Category>
    

    子组件中:




        <script>export default {name:'Category',props:['title'],//数据在子组件自身data() {return {games:['红色警戒','穿越火线','劲舞团','超级玛丽']}},}</script>
    
5.Vuex插件
5.1、理解vuex
5.1.1、Vuex是什么
  1. 概念:专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对 vue 应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信

在这里插入图片描述

5.1.2、什么时候用vue
  1. 多个组件依赖同一个状态
  2. 来自不同组件的行为需要变更同一状态
5.2搭载Vuex环境
  1. 下载Vuex:npm i vuex

  2. 创建src/store/index.js

    //引入Vue核心库
    import Vue from ‘vue’
    //引入Vuex
    import Vuex from ‘vuex’
    //应用Vuex插件
    Vue.use(Vuex)

    //准备action对象响应组件中用户的动作、处理业务逻辑
    const active ={}
    //准备mutations对象——修改state中的数据
    const mutations = {}
    //准备state对象——保存具体的数据
    const state = {}

    //创建并暴露store
    export default new Vuex.Store({
    actions,
    mutations,
    state
    })

src/main.js中创建 vm 时传入store配置项:

import Vue from 'vue'
import App from './App.vue'
import Vuex from 'vuex'
import store from './store'Vue.config.productionTip = falseVue.use(Vuex)new Vue({el:"#app",render: h => h(App),store
})
5.2.1、使用Vuex编写

src/components/Count.vue:

<template><div><h1>当前求和为:{{$store.state.sum}}</h1><select v-model.number="n"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select><button @click="increment">+</button><button @click="decrement">-</button><button @click="incrementOdd">当前求和为奇数再加</button><button @click="incrementWait">等一等再加</button></div>
</template><script>export default {name: 'Count',data() {return {n: 1,}},methods: {increment() {this.$store.commit('ADD',this.n)},decrement() {this.$store.commit('SUBTRACT',this.n)},increamOdd() {this.$store.dispatch('addOdd',this.n)},incrementWait()  {this.$store.dispatch('addWait',this.n)}}}
</script>

src/store/index.js:

//引入vue核心库
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)//准备一个action对象
const active = {addOdd(context,value) {console.log("actions中的addOdd被调用了")if(context.state.sum%2){context.commit('ADD',value)}},addWait(context,value) {console.log("actions中addWait被调用了")setTimeout(() => {context.commit('ADD',value)},500)}
},
//准备mutations对象——修改state中的数据
const mutations = {ADD(state,value) {state.sum += value},SUBTRACT(state,value) {state.sum -= value
}
},
//准备state对象——保存具体的数据
const state = {sum: 0
}//创建并且暴露store
export default new Vuex.Store({actions,mutations,state
})

总结:

Vuex的基本使用:

1.初始化数据state,配置actionsmutations,操作文件store.js

//引入Vue核心库
import vue from 'vue'
//引入VUex
import vuex from 'vuex'
//引入Vuex
Vue.use(Vuex)const action = {//响应式添加动作jia(context,value) {context.commit('JIA',value)},
}const mutations = {//执行加jia(state,value) {state.sum += value}
}const state = {sum:0
}//创建并暴露store
export default Vuex.store({actions,mutations,state,
})
  • 组件中读取vuex中的数据:$store.state.sum
  • 组件中修改vuex中的数据:$store.dispatch('action中的方法名',数据)$store.commit('mutations中的方法名',数据)
5.3、getters配置项

总结:

getters配置项的使用:

  1. 概念:当state中的数据需要经过加工后再使用时,可以使用getters加工

  2. store.js中追加getters配置


    const getters = {
    bigSum(state){
    return state.sum * 10
    }
    }

    //创建并暴露store
    export default new Vuex.Store({

    getters
    })

3.组件中读取数据:$store.getters.bigSum

5.4、四种方法
  1. mapState方法:用于帮助我们映射state中的数据

    computed: {//借助mapState生成计算属性:sum、school、subject(对象写法)...mapState({sum:'sum',school:'school',subject:'subject'}),//借助mapState生成计算属性:sum、school、subject(数组写法)...mapState(['sum','school','subject']),
    },
    
  2. mapGetters方法:用于帮助我们映射getters中的数据

    computed: {//借助mapGetters生成计算属性:bigSum(对象写法)...mapGetters({bigSum:'bigSum'}),//借助mapGetters生成计算属性:bigSum(数组写法)...mapGetters(['bigSum'])
    },
    
  3. mapActions方法:用于帮助我们生成与actions对话的方法,即:包含$store.dispatch(xxx)的函数

    methods:{//靠mapActions生成:incrementOdd、incrementWait(对象形式)...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})//靠mapActions生成:incrementOdd、incrementWait(数组形式)...mapActions(['jiaOdd','jiaWait'])
    }
    
  4. mapMutations方法:用于帮助我们生成与mutations对话的方法,即:包含$store.commit(xxx)的函数

    methods:{//靠mapActions生成:increment、decrement(对象形式)...mapMutations({increment:'JIA',decrement:'JIAN'}),//靠mapMutations生成:JIA、JIAN(对象形式)...mapMutations(['JIA','JIAN']),
    }
    
5.5、模块化 + 命名空间
  1. 目的:让代码更好维护,让多种数据分类更加明确

  2. 修改store.js

    const countAbout = {namespace: true,  //开启命名空间state: {x:1},mutation: {...},actions: {...},getters: {bigSum(state) {return state.sum * 10}}
    }const personAbout = {namespace: true,state: {...},mutations: {...},actions: {...}
    }const store = new Vuex.store({modules: {countAbout,personAboutx
    }
    })
    
  3. 开启命名空间,组件中读取state数据

    //1.直接读取
    this.$store.personAbout.list
    //2.借助mapState读取
    ...mapState('countAbout',['sum','school','subject']),
    
  4. 开启命名空间后,组件中读取getters数据:

    //1.自己直接读取
    this.$store.getter['personAbout/firstPersonName']
    //2.借助mapgetters读取
    ...mapGetters('sountAbount',['bigSum'])
    
  5. 开启命名空间后,组件中调用dispatch:

    //方式一:自己直接dispatch
    this.$store.dispatch('personAbout/addPersonWang',person)
    //方式二:借助mapActions:
    ...mapActions('countAbout',{incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
    
  6. 开启命名空间后,组件中调用commit:

    //方式一:自己直接commit
    this.$store.commit('personAbout/ADD_PERSON',person)
    //方式二:借助mapMutations:
    ...mapMutations('countAbout',{increment:'JIA',decrement:'JIAN'}),
    
6.Vue Router路由管理器
6.1、相关理解
  • vue 的一个插件库,专门用来实现SPA 应用
    • 整个页面只有一个完整的页面
    • 点击页面的导航链接不会刷新页面,只会局部更新
6.2、基本路由
  1. 安装vue-router,命令:npm i vue-router

  2. 应用插件Vue.use(VueRouter)

  3. 编写router配置项:

    //引入VueRouter
    import VueRouter from 'vue-router'
    //引入Luyou 组件
    import About from '../components/About'
    import Home from '../components/Home'//创建router实例对象,去管理一组一组的路由规则
    const router = new VueRouter({routes:[{path:'/about',component:About},{path:'/home',component:Home}]
    })//暴露router
    export default router
    
  4. 实现切换(active-class可配置高亮度样式)

    <router-link active-class="active" to="/about">About</router-link>
    
  5. 指定展示位:

src/router/index.js:

//该文件专门用于创建整个路由
import VueRouter from "vue-router"
//引入组件
import Home from ''
import About from ''//创建并且暴露一个路由
export default new VueRouter({routes: [{path: '/about'component: About},{path: '/home'component: Home}]
})

src/main.js:

import Vue from 'vue'
import App from  './App.vue'
import VueRouter from 'vue-router'
import router from './router'Vue.use(VueRouter)new Vue({el:'#root',render: h => h(App)router
})

src/App.vue:

<template><div><div class="row"><div class="col-xs-offset-2 col-xs-8"><div class="page-header"><h2>Vue Router Demo</h2></div></div></div><div class="row"><div class="col-xs-2 col-xs-offset-2"><div class="list-group"><!-- 原始html中我们使用a标签实现页面跳转 --><!-- <a class="list-group-item active" href="./about.html">About</a><a class="list-group-item" href="./home.html">Home</a> --><!-- Vue中借助router-link标签实现路由的切换 --><router-link class="list-group-item" active-class="active" to="/about"> 							About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link></div></div><div class="col-xs-6"><div class="panel"><div class="panel-body"><!-- 指定组件的呈现位置 --><router-view></router-view></div></div></div></div></div>
</template><script>export default {name:'App',}
</script>

src/components/Home.vue:

<template><h2>我是Home组件的内容</h2>
</template><script>export default {name:'Home'}
</script>

src/components/About.vue:

<template><h2>我是About组件的内容</h2>
</template><script>export default {name:'About'}
</script>
6.3、注意事项

路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹

6.4、多级路由
  • 配置路由规则,使用children配置项:

    routes: [{path: '/about',component: About,},{path: '/home'component: Home,children: [{path: 'news',  //注意此处一定不要写 : /newscomponent: News},{path: 'message',component: Message}]}
    ]
    
  • 跳转(要写完整的路径):News

6.5、query()
  1. 传递参数

    <!-- 跳转并携带query参数,to的字符串写法 -->
    <router-link :to="/home/message/detail?id=666&title=你好">跳转</router-link><!-- 跳转并携带query参数,to的对象写法 -->
    <router-link :to="{path:'/home/message/detail',query:{id:666,title:'你好'}
    }">跳转</router-link>
    
  2. 接受参数

    $route.query.id
    $route.query.title

src/router.index.js:

//引入路由
import VueRouter from "vue-router"
//引入组件
import Home from '../pages/Home'
import About from '../pages/About'
import News from '../pages/News'
import Message from '../pages/Message'
import Detail from '../pages/Detail'//创建一个并且暴露一个路由器
export default VueRouter({routes: [{path:'/about',component:About},{path:'/home',component:Home,children:[{path:'news',component:News},{path:'message',component:Message,children:[{path:'detail',component:Detail}]}
]
})

src/pages/Detail.vue:

<template><ul><li>消息编号:{{$route.query.id}}</li><li>消息标题:{{$route.query.title}}</li></ul>
</template><script>export default {name:'Detail'}
</script>
6.6、命名路由

作用:简化路由的跳转

使用:

  1. 给路由命名:

    {path: '/demo',component: Test,children: [{path: 'text',component: Text,children: [{name: 'hello'  //命名path: 'welcome',component: Hello}]}
    ]
    }
    
  2. 简化跳转:

    跳转

    跳转

    <router-link
    :to=“{
    name:‘hello’,
    query:{
    id:666,
    title:‘你好’
    }
    }”

    跳转

6.7、路由的params参数
  1. 配置路由,声明接收params参数

    {path:'/home',component:Home,children:[{path:'news',component:News},{component:Message,children:[{name:'xiangqing',path:'detail/:id/:title', //使用占位符声明接收params参数component:Detail}]}]
    }
    
  2. 传递参数

    <!-- 跳转并携带params参数,to的字符串写法 -->
    <router-link :to="/home/message/detail/666/你好">跳转</router-link><!-- 跳转并携带params参数,to的对象写法 -->
    <router-link :to="{name:'xiangqing',params:{id:666,title:'你好'}}"
    >跳转</router-link>
    
  3. 接收参数

    $route.params.id
    $route.params.title

6.8、props配置
  • 作用:让路由组件方便收到参数

    {name:'xiangqing',path:'detail/:id',component:Detail,//第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件// props:{a:900}//第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件// props:true//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props(route){return {id:$route.query.id,title:$route.query.title}}
    }
    
    6.9、路由跳转replace()
    1. 作用:控制路由跳转时操作浏览器历史记录的模式
    2. 浏览器的历史记录有两种写入方式:push和replace,其中push是追加历史记录,replace是替换当前记录。路由跳转时候默认为push方式
    3. 开启replace模式:<router-link replace …>News

相关文章:

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架&#xff1b;这篇文章是本人大一上学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。本人不是学前端的&#xff0c;这个是大一的时候上学的和做的笔记&#xff0c;那个时候学的也蒙&#xff0c;故这里对前端做一个总…...

LabVIEW实现NB-IoT通信

目录 1、NB-IoT通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网…...

蓝牙协议——音乐启停控制

手机播放音乐 手机暂停音乐 耳机播放音乐 耳机暂停音乐...

深入理解C++ 容器类

承接Qt/C软件开发项目&#xff0c;高质量交付&#xff0c;灵活沟通&#xff0c;长期维护支持。需求所寻&#xff0c;技术正适&#xff0c;共创完美&#xff0c;欢迎私信联系&#xff01; 引言 C 标准库提供了丰富的容器&#xff08;container&#xff09;类型&#xff0c;用于存…...

Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena

指令微调后的模型不一定在传统Benchmark上取得更好的结果&#xff0c;类似MMLU和HELM。根据人类爱好对齐后的模型&#xff0c;需要新的评测方法。 文章提出了两个主要内容&#xff1a;MT-bench和Chatbot Arena MT-bench是一系列开放式问题&#xff0c;用于评估聊天机器人的多回…...

Qt 的信号槽机制详解:之信号槽引发的 Segmentation Fault 问题拆析(下)

Qt 的信号槽机制详解&#xff1a;之信号槽引发的 Segmentation Fault 问题拆析&#xff08;下&#xff09; 前言一. 信号槽的误用导致崩溃的常见原因1.信号和槽连接的对象被提前释放案例解决方法 2.参数类型不匹配案例解决方法 3. 多线程信号槽使用不当案例解决方法 4. 信号重复…...

测试时计算策略(BON, stepwiseBON, beamsearch, lookahead,混合方法,计算最优扩展,过程奖励模型引导,多数投票)

、Step-wise BoN、Self-Refine、Agent Workflow 一 测试时计算 测试时计算&#xff08;test-time compute&#xff09;&#xff0c;也称为推理计算&#xff0c;是指 LLM 生成提示响应时使用的计算资源。与用于创建和完善模型本身的训练计算不同&#xff0c;每次使用模型时都会…...

设置postgreSQL字段自增

CREATE SEQUENCE ai_mirror_opcode_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; nextval(ai_mirror_opcode_seq) 手动创建序列并设置默认值&#xff1a; 如果你需要更细粒度的控制&#xff0c;可以手动创建一个序列&#xff0c;并将其设置为某个字段的…...

flask-admin的modelview 实现list列表视图中扩展修改状态按钮

背景&#xff1a; 在flask-admin的模型视图&#xff08;modelview 及其子类&#xff09;中如果不想重构UI视图&#xff0c;那么就不可避免的出现默认视图无法很好满足需求的情况&#xff0c;如默认视图中只有“新增”&#xff0c;“编辑”&#xff0c;“选中的”三个按钮。 材…...

强大且灵活的终端工具Tabby的强大功能与详细配置指南

文章目录 前言1. Tabby下载安装2. Tabby相关配置3. Tabby简单操作4. ssh连接Linux4.1 ubuntu系统安装ssh4.2 Tabby远程ssh连接ubuntu 5. 安装内网穿透工具5.1 创建公网地址5.2 使用公网地址远程ssh连接 6. 配置固定公网地址 前言 大家好&#xff01;今天我要给大家安利一个超级…...

dns显示不可用是怎么回事?

在互联网的世界里&#xff0c;DNS(域名系统)扮演着至关重要的角色。它负责将用户输入的网址(域名)转换为服务器的IP地址&#xff0c;从而让用户能够访问到相应的网站。然而&#xff0c;有时用户可能会遇到DNS显示不可用的情况&#xff0c;这不仅影响上网体验&#xff0c;还可能…...

探索Flink动态CEP:杭州银行的实战案例

摘要&#xff1a;本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容&#xff1a; Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…...

单机服务和微服务

单体服务 一种软件开发模型&#xff0c;它将所有的服务组件集成在一个独立的系统单位中进行开发、部署和维护。在这种架构中&#xff0c;前端用户界面、后端服务器逻辑、数据库操作等组件通常紧密耦合在一起&#xff0c;形成一个统一的程序。这种架构模式易于开发和部署&#x…...

孔雀鱼和斑马鱼能一起养吗?

在观赏鱼的世界里&#xff0c;孔雀鱼和斑马鱼都是备受鱼友喜爱的热门品种。它们独特的外形和相对容易的饲养条件&#xff0c;使得不少养鱼新手跃跃欲试将它们混养在一起&#xff0c;但这其中实则有诸多因素需要考量。 从生存环境来看&#xff0c;孔雀鱼和斑马鱼有一定的兼容性…...

作业帮基于 Apache DolphinScheduler 3_0_0 的缺陷修复与优化

文|作业帮大数据团队&#xff08;阮文俊、孙建业&#xff09; 背 景 基于 Apache DolphinScheduler &#xff08;以下简称DolphinScheduler&#xff09;搭建的 UDA 任务调度平台有效支撑了公司的业务数据开发需求&#xff0c;处理着日均百万级别的任务量。 整个 UDA 的架构如…...

【LC】111. 二叉树的最小深度

题目描述&#xff1a; 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2示…...

HarmonyOS NEXT 实战之元服务:静态案例效果--- 歌手推荐

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …...

selenium自动化测试(超详细~)

最近也有很多人私下问我&#xff0c;selenium学习难吗&#xff0c;基础入门的学习内容很多是3以前的版本资料&#xff0c;对于有基础的人来说&#xff0c;3到4的差别虽然有&#xff0c;但是不足以影响自己&#xff0c;但是对于没有学过的人来说&#xff0c;通过资料再到自己写的…...

Spring Boot教程之三十一:入门 Web

Spring Boot – 入门 Web 如今&#xff0c;大多数应用程序都需要模型-视图-控制器(MVC) 架构来满足各种需求&#xff0c;例如处理用户数据、提高应用程序效率、为应用程序提供动态特性。它主要用于构建桌面图形用户界面 (GUI)&#xff0c;但现在越来越流行用于构建基于 Web 的…...

【每日学点鸿蒙知识】指纹识别隐藏背面、数组内部值变化刷新UI、键盘输入类型、跨组件路由、C++20特性支持

1、HarmonyOS 指纹识别情况下&#xff0c;隐藏背面内容&#xff1f; 有一个场景&#xff0c;在指纹识别验证页面时候&#xff0c;此时需要用户看不到背面的内容&#xff0c;请问应该怎么处理这块。或者有什么方案&#xff0c;可以通过window&#xff0c;获取到当前页面的page&…...

Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息

目录 Python正则表达式re库的基本用法 引入re库 各函数功能 总结 使用方法举例 正则表达式语法与书写方式 正则表达式的常用操作符 思科ASA防火墙数据 数据1 数据2 书写正则表达式 Python中pydantic的使用 导入基础数据模板 根据数据采集目标定义Pydantic数据类型…...

centos系统如何安装kubectl和部署kube-apiserver

1.使用 yum 安装&#xff08;推荐&#xff09; 添加 Kubernetes 软件源&#xff1a; 首先&#xff0c;你需要添加 Kubernetes 的官方 YUM 软件源。这可以通过下载并安装 kubernetes.repo 文件来实现。 shell cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [k…...

【源码编译】windows下mingw64安装以及cmake调用

最近因为安装MIRTK库&#xff0c;太多第三方依赖了&#xff0c;太折磨了&#xff0c;学习了使用Cmake&#xff0c;有些库又需要Fortran编译器&#xff0c;VS2022里面装了但又调用不了&#xff0c;也不知道为什么&#xff0c;最后装的mingw64&#xff0c;记录一下。 1、mingw64安…...

HarmonyOS NEXT 实战之元服务:静态案例效果---最近播放音乐

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index import { authentica…...

【QT开发自制小工具】PDF/图片转excel---调用百度OCR API接口

前言 前几年WPS还可以免费处理5页以内的PDF转excel&#xff0c;现在必须付费了&#xff0c;而且百度其他在线的PDF转excel都是要收费的&#xff0c;刚好前几年调研过百度OCR的高精度含位置接口&#xff0c;依然是每天可以免费调用50次&#xff0c;本篇是基于此接口&#xff0c;…...

uniapp 基于xgplayer(西瓜视频) + renderjs开发,实现APP视频播放

背景&#xff1a;在uniapp中因原生video组件功能有限&#xff0c;选择引入xgplayer库来展示视频播放等功能。并且APP端无法操作dom&#xff0c;所以使用了renderjs。 其他的不多说&#xff0c;主要列举一下renderjs中需要注意的点&#xff1a; 1、使用&#xff1a;在标签后&…...

[1111].集成开发工具Pycharm安装与使用

所有博客大纲 后端学习大纲 Python大纲 1.下载&#xff1a; 官方下载地址 2.安装&#xff1a; 1.双击exe文件&#xff0c;然后下一步选择安装目录 2.选择桌面快捷方式及安装&#xff1a; 3.安装完成 3.启动&#xff1a; 4.设置&#xff1a; 4.1.设置运行时环境&#xff1a;…...

【玩转OCR】 | 腾讯云智能结构化OCR在多场景的实际应用与体验

文章目录 引言产品简介产品功能产品优势 API调用与场景实践图像增强API调用实例发票API调用实例其他场景 结语相关链接 引言 在数字化信息处理的时代&#xff0c;如何高效、精准地提取和结构化各类文档数据成为了企业和政府部门的重要需求。尤其是在面对海量票据、证件、表单和…...

红狮金业:2024年尾声,黄金市场需要关注的消息面

随着2024年的尾声渐近&#xff0c;全球金融市场在美联储的年度最后一次降息决策中迎来了新的波澜。上周&#xff0c;美联储宣布降息&#xff0c;而美联储主席鲍威尔随后的发言更是在市场上掀起了巨大波动。他透露&#xff0c;美联储计划在明年放缓降息步伐&#xff0c;可能仅实…...

使用BCrypt进行密码加密

1. 添加依赖&#xff1a; 在pom.xml文件中添加Spring Security依赖&#xff0c;以使用BCryptPasswordEncoder。 <!-- Spring Security 依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-secu…...

《智启新材热学性能优化之路:人工智能的神奇力量》

在当今科技飞速发展的时代&#xff0c;材料科学与人工智能的融合正成为创新的前沿阵地。其中&#xff0c;利用人工智能优化材料的热学性能&#xff0c;为众多领域的突破带来了新的曙光&#xff0c;从航空航天的高效热防护到电子设备的散热管理&#xff0c;其影响深远且广泛&…...

IIC驱动EEPROM

代码参考正点原子 i2c_dri:主要是三段式状态机的编写 module iic_dri#(parameter SLAVE_ADDR 7b1010000 , //EEPROM从机地址parameter CLK_FREQ 26d50_000_000, //模块输入的时钟频率parameter I2C_FREQ 18d250_000 //IIC_SCL的时钟频率)( …...

目标检测——基于yolov8和pyqt的螺栓松动检测系统

目录 1.项目克隆和环境配置1.1 我这里使用的是v8.0.6版本1.2 项目代码结构介绍 2.数据集介绍2.1 数据集采集2.2采集结果介绍 3.模型训练4.pyqt界面设计4.1 界面内容介绍4.2 界面实现 5.操作中的逻辑实现5.1 图片检测5.2 文件夹检测5.3 视频检测和摄像头检测 6. 效果展示 1.项目…...

JVM系列(十三) -常用调优工具介绍

最近对 JVM 技术知识进行了重新整理&#xff0c;再次献上 JVM系列文章合集索引&#xff0c;感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…...

酷睿i7和i5哪个好?i5和i7的区别介绍

在英特尔酷睿处理器家族中&#xff0c;i7与i5作为面向不同用户群体的主流产品&#xff0c;各自承载着不同的性能定位与使用价值。在面对“酷睿i7和i5哪个好”的问题时&#xff0c;答案并非一概而论&#xff0c;而是取决于具体的应用需求、预算考量以及对性能与效率的期待。本文…...

实现用户登录系统的前后端开发

**一、**实验名称 实现用户登录系统的前后端开发。 **二、**参考资料 Web开发技术第一章课件。 **三、**实验目的 1.练习前端基本技术的使用。 2.练习使用Servlet/JSP开发简单后端程序。 3.练习使用Tomcat发布Web应用。 4.练习使用Spring Boot开发简单的后端程序。 **…...

Log4j1.27配置日志输出级别不起效

起因&#xff1a;构建独立版本debezuim使用时&#xff0c;日志一直打印debug信息。 原因&#xff1a;包冲突问题&#xff0c;进行排包操作。 参考log4j日志级别配置完成后不生效 系统一直打印debug日志_log4j不起作用-CSDN博客 1、application.properties logging.configc…...

一、后端到摄像头(监控摄像头IOT)

前言&#xff1a; 开发流程从 后端到摄像头 打通是第一步&#xff0c;那么我们可以着手设计 后端实现 的具体步骤&#xff0c;确保能够稳定地接收和处理来自摄像头的视频流&#xff0c;并提供后续的功能扩展&#xff0c;如视频流转发、存储和控制。 1. 后端系统架构设计 在开始…...

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…...

微信小程序中momentjs无法切换中文问题处理

微信小程序中momentj.s无法切换中文问题处理. 表现为 使用 locale(“zh-cn”)无效。 处理方法 # 1、先删除 miniprogram_npm\moment\index.js # 2、将 node_modules\moment\min\moment-with-locales.min.js 复制到 miniprogram_npm\moment下 并重命名为index.js # 3、修改mi…...

Linux零基础速成篇一(理论+实操)

前言&#xff1a;本教程适合Linux零基础学习&#xff0c;也适合Linux期末考试的小伙伴&#xff0c;从头到尾理论与实操相结合&#xff0c;让你快速对Linux进行了解和掌握。 一、Linux概述 为什么要学习Linux操作系统&#xff1f; 完全免费-开源 任何用户均可下载使用 安全…...

【087】基于51单片机智能宠物喂食器【Proteus仿真+Keil程序+报告+原理图】

☆、设计硬件组成&#xff1a;51单片机最小系统LCD1602液晶显示MY1680语音播放模块DS1302时钟芯片SG90舵机AT24C02存储芯片LED灯按键设置。 1、设计采用STC89C52、AT89C52、AT89S52作为主控芯片&#xff1b; 2、系统采用DS1302时钟芯片实现对日期时间计时并通过LCD1602液晶显…...

全局流量管理:提升用户体验与保障服务稳定性

全局流量管理的工作原理 全局流量管理主要依赖于 DNS&#xff08;域名系统&#xff09;技术&#xff0c;通过将全球用户的访问请求引导至离他们最近的服务器或数据中心&#xff0c;极大减少了访问延迟和带宽负载&#xff0c;从而提升了用户体验。同时&#xff0c;GTM 还结合健…...

达梦数据守护搭建

主备库初始化 ./dminit path/dmdata/data db_nameDM01 instance_nameDMSVR01 port_num5236 page_size16 extent_size32 log_size500 case_sensitive1 SYSDBA_PWDDM01SYSDBA ./dminit path/dmdata/data db_nameDM02 instance_nameDMSVR02 port_num5236 page_size16 extent_size3…...

【C++】容器适配器全知道

亲爱的读者朋友们&#x1f603;&#xff0c;此文开启知识盛宴与思想碰撞&#x1f389;。 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 目录 一、前言 二、什么是适配器 &#xff08;一&#xff09;现实生…...

企业资源规划系统(ERP)服务器上线项目实施指南

企业资源规划系统&#xff08;ERP&#xff09;服务器上线项目实施指南 项目背景 在当今竞争激烈的商业环境中&#xff0c;企业资源规划系统&#xff08;ERP&#xff09;已成为企业提升内部管理效率和响应市场变化的重要工具。为了实现业务流程的整合和优化&#xff0c;公司决…...

Kubernetes(k8s)离线部署DolphinScheduler3.2.2

1.环境准备 1.1 集群规划 本次安装环境为&#xff1a;3台k8s现有的postgreSql数据库zookeeper服务 1.2 下载及介绍 DolphinScheduler-3.2.2官网&#xff1a;https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2 官网安装文档&#xff1a;https://dolphinscheduler.apach…...

嵌入式linux驱动框架 从0到1编写设备驱动 i2c_driver i2c_client

一、编写最简单的IIC驱动框架 在之前的文章中&#xff0c;我们已经深入探讨了I2C通信的基本原理、硬件架构以及时序等基础知识。现在&#xff0c;我们将进入一个更加实际和深入的层面&#xff0c;构建一个完整的I2C驱动程序&#xff0c;并阐述驱动框架的设计。这将帮助你不仅能…...

小程序canvas画环形百分比进度图

组件封装 component/canvas-ring目录下 canvas-ring.js <canvas style"width:{{canvasWidth}}px;height:{{canvasWidth}}px; margin:0 auto;position:relative" type"2d" id"myCanvas"><view class"circle-bar" style&quo…...

面试经验分享 | 北京渗透测试岗位

更多大厂面试经验的视频经验分享看主页 目录&#xff1a; 所面试的公司&#xff1a;安全大厂 所在城市&#xff1a;北京 面试职位&#xff1a;渗透测试工程师 面试方式&#xff1a;腾讯会议线上面试线下面试 面试过程&#xff1a; 面试官的问题&#xff1a; 1、说一下XSS有哪…...