Vue框架1(vue搭建方式1,vue指令,vue实例生命周期)

news2025/5/25 6:54:53

一.VUE

vue概述(vue.js)

vue是前端JavaScript框架,对JavaScript进行封装,是一套用于构建用户界面的渐进式框架.vue的核心只关注图示层,不仅易上手,还便于与第三方库或既有的项目整合.
vue.js和Angular.js,React.js一起,并称为前端三大主流框架

注意:    在此初步学习的是vue2并不是vue3,vue3属于入门级

 vue.js特点

  • 体积小(封装的文件小) 压缩后33k
  • 更高的运行效率,不直接频繁的对网页上的标签进行操作,基于dom技术进行优化
  • 实现数据双向绑定,程序员只关心要操作的数据即可,把数据渲染到标签上交给vue框架处理
  • 生态丰富,学习成本低

 vue.js如何实现数据绑定

通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象,把更多的精力投入到业务逻辑上.
MVVM是Model-View-ViewModel的缩写.MVVM就是将其中的View的状态和行为抽象化,让我们将视图UI和业务逻辑分开. 

二.VUE搭建

方式1:直接用<script>引入

进入vue.js官网https://v2.cn.vuejs.org/

找到安装

 
将下载得到的文件复制或移入项目中的js目录

在需要使用vue框架的项目中导入js文件<script src="js/vue.js"></script>

三.第一个VUE程序

vue.js的核心是一个允许采用简洁模板语法来声明式地将数据渲染进DOM的系统

  1. 导入开发版本的vue.js
  2. 创建vue实例对象,设置el属性和data属性
  3. 使用简洁的模板语法把数据渲染到页面上

实例: 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js库 -->
		<script src="js/vue@2.js"></script>
		<!-- 导入一个文件后,下方不能再写一个js文件 -->
	</head>
	<body>
		<!-- {{变量}}必须写在命中标签的内部-->
		<div id="app">
			<div>
			{{message}},
			</div>
			<p>
			{{a}}
			</p>
		</div>
		
		<!-- 以后的Script标签写在标签的后面,先加载网页的内容,再加载js -->
		<script type="text/javascript">
			/*创建vue对象,把页面指定id的标签与vue对象进行绑定 
			  el是vue对象中的属性,可以选择#id,或.类,建议使用id选择器
			  el命中标签不能是body
			  data属性中定义使用的数据 键:值 键值对之间需要使用","隔开最后一个键值对后不添加","正常数据都要定义在data中
			  {{变量名}} 插值表达式,获取到data中定义的数据
			 */
			let app = new Vue({
				el:"#app",
				data:{
					a:"abc",
					message:"hello vue"
				}
			});
		</script>
	</body>
</html>

示例代码解析:

{{变量}},插值表达式用于获取data数据

new Vue();创建Vue对象(VM对象)

el:数据挂载的dom对象

Vue会管理el选项命中的元素及其内部的后代元素

可以使用其他的选择器,但是建议使用ID选择器

可以使用其他的闭合标签,不能使用HTML和BODY

data:{message:'hello world'} model数据

Vue中用到的数据定义在data中

data中可以写复杂类型的数据,如对象,数组 

四.VUE指令 

VUE指令是指带有v-开头,以代表它们是VUE提供的特殊属性.

插值表达式{{message}}

{{message}} 插值表达式不会覆盖标签体中的内容,只是在标签内部插入一个值,在标签中有值得情况也可以添加插值表达式,不会影响原本数据的显示

示例: 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<!-- {{变量}}必须写在命中标签的内部-->
		<div id="app">
			<div>
			{{message}}不影响比标签中的其他内容
			</div>
			<p>
			{{a}}
			</p>
		</div>
		<script type="text/javascript">
			/* 
			  {{变量名}} 插值表达式,获取到data中定义的数据
			 */
			let app = new Vue({
				el:"#app",
				data:{
					a:"abc",
					message:"hello vue"
				}
			});
		</script>
	</body>
</html>

 效果演示:

v-text指令 

该指令的作用是设置标签的文本内容,此写法会替换标签中的全部内容

内部支持写插值表达式
<p v-text="message">被替换的内容</p>

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<div v-text="Message1">这是一段被替代的话</div>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					Message1:"v-text指令会替代标签中的内容"
				}
			});
		</script>
	</body>
</html>

使用v-text前效果: 

使用后的效果:

v-html指令 

该指令的作用是设置元素的innerHTML,变量中的内容中存在html结构会被解析为标签

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<div v-html="Message2">这是一段被替代的话</div>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					Message2:"<b>这是一段被加粗的文字</b>"
				}
			});
		</script>
	</body>
</html>

效果演示:

 

插值表达式,v-html,v-text的区别

{{message}} 插值表达式 不会覆盖标签体中的内容,只是在标签内部插入一个值
v-html与v-text 会用数据覆盖标签体中的内容

v-html与v-text的区别:
v-html:能解析字符串中的标签
v-text:不能解析字符串中的标签

v-on指令

该指令的作用是为元素绑定事件,事件名不需要写on指令可以简写为@

绑定方法定义在methods属性中,可以传入自定义参数
<input type="button" value="按钮" v-on:click="text(1,2)"/>向方法中传入参数的用法
<input type="button" value="按钮" @click="text"/>简写且不传入参数的写法

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js库 -->
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- 
			添加事件的两种方式
			 v-on:click 点击事件
			 @click
			 -->
			 <input type="button" value="按钮1" v-on:click="test1()"/>
			 <input type="button" value="按钮2" @click="test2(1)"/>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					message:"hello vue",
				},
				methods:{
					test1(){//this表示vue对象
						alert(this.message);
					},
					test2(a){//传参
						alert(a);
					}
				}
			});
		</script>
	</body>
</html>

注意:   在methods属性中添加函数时不需要使用function关键字,且在函数中使用在data中定义好的变量或methods属性中定义的其他方法时,需要使用this关键字

v-model指令

该指令的作用是便捷的设置和获取表单元素的值,绑定的数据会和表单元素值相关联
绑定的数据<---->表单元素的值 双向数据绑定

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 导入vue.js库 -->
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			 <p><!--还可以使用v-text-->
				 {{name}}
			 </p>
			 <!-- v-model可以将输入标签中的值(value)  绑定到指定的属性上 (这里通过vue框架将文本输入框的值,变量name,p标签中的内容插值表达式绑定)-->
			 <input type="text" value="" v-model="name"/>
			 <input type="button" value="测试" @click="test3"/>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					name:""
				},
				methods:{
					test3(){//改变name变量的值
						this.name = "jim";
					}
				}
			});
		</script>
	</body>
</html>

在此案例中通过v-model指令将输入框的value属性,变量name的值,p标签的值相互绑定,只要name变量的值发生改变其他两个标签的值也会发生改变

v-show指令

该指令的作用是根据布尔值显示或隐藏当前标签,原理是修改元素的display,实现显示隐藏,指令后面的内容,最终都会解析为布尔值,值为true元素显示,值为false元素隐藏,数据改变后,对应元素的显示状态会同步更新

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- 
			 v-show="布尔值" 根据布尔值显示或隐藏当前标签
			 通过display的值控制标签显示或隐藏,每次不需要重新创建标签,效率高
			 -->
			<div v-show="isshow">123</div>
			<div v-show="a>5">456</div>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					isshow:false,
					a:10
				}
			});
		</script>
	</body>
</html>

在此案例中,v-show="false"时,标签会显示,通过改变标签的dispaly属性来实现标签的隐藏,由于a变量的值为10,a>5最终也会被解析为布尔值true. 

v-if与v-else指令

v-if指令的作用是根据表达式的真假切换元素的显示状态,本质是通过操纵dom元素来切换,显示状态表达式的值为true,元素存在于dom中,为false,从dom中移除.频繁的切换使用v-show,反之使用v-if,前者的切换消耗更小

v-if和v-else标签必须挨着满足则显示if标签内容,否则显示else内容

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- 
			v-if="布尔值" 根据布尔值显示或隐藏当前标签
			 每次从网页中要删除/创建标签,数量多了效率低
			 v-if 和 v-else标签必须挨着满足则显示if标签内容,否则显示else内容
			 -->
			<div v-if="isshow">789</div>
			<div v-if="a>5">101</div>
			<div v-else>aaa</div>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					isshow:true,
					a:4
				}
			});
		</script>
	</body>
</html>

注意:  v-else需要紧挨着v-if使用,当v-if="false"时显示v-else指令的标签

v-show与v-if的区别

v-show标签是通过display属性来实现显示或隐藏标签
而v-if标签每次都要从网页中删除/创建标签,数量多了效率太低.

在频繁的切换标签隐藏或显示,v-show标签相比于v-if标签效率更高.
但v-if标签可以搭配v-else标签使用,实现通过逻辑控制标签的隐藏与消失.

v-bind指令

该指令的作用是为元素绑定属性,完整写法是 v-bind:属性名

简写的话可以直接省略v-bind,只保留: 属性名

示例1:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- <img src="imgsrc"/> 错误写法,不能将data中的属性填充到普通标签属性中-->
			<!-- <img v-bind:src="imgsrc"/> 通过v-bind对标签的属性进行操作-->
			<!-- 简单写法 -->
			<img :src="imgsrc" :title="title"/>
			
			<input type="button" value="下一张" @click="next"/>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					imgsrc:"img/图片1.png",
					title:"第一张图片"
				},
				methods:{
					next(){
						this.imgsrc = "img/图片2.png";
						this.title = "第二张图片";
					}
				}
			});
		</script>
	</body>
</html>

在此案例中,通过v-bind指令对图片的src以及title属性进行操作,并通过v-on指令为按钮添加了点击事件实现了图片的属性切换.这里使用的v-bind指令采用的简单写法, 直接省略v-bind,只保留: 属性名

我们还可以传给v-bind:class一个对象,以动态地切换class:

示例2:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			.active{
				color: red;
			}
		</style>
		<script src="js/vue@2.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- 通过isActive控制是否为标签添加指定的类名 active是类名-->
			<div v-bind:class="{active:isActive}">状态</div>
            <!--为按钮添加点击事件,实现点击按钮改变标签样式的功能-->
            <input type="button" @click="next"/>
		</div>
		
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					isActive:false//控制是否添加样式表
				},
				methods:{
					next(){//使用this关键字调用data中定义的变量
						this.isActive="true";
					}
				}
			});
		</script>
	</body>
</html>

在此案例中,需要注意v-bind:class="{active:isActive}"  其中active是标签的类名,isActive是data键值对中定义的变量名,通过改变变量的布尔值,实现此标签样式的存在或消失

v-for指令

该指令的作用是根据数据生成列表结构,数组经常和v-for结合,其语法是  (item,index) in 数据
item和index可以结合其他指令一起使用,数组长度的更新会同步到页面上是响应式的
为循环绑定一个Key值 :Key="值" 尽可能唯一 

示例1:通过v-for指令循环遍历数据到列表项中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		 
		<script src="js/vue@2.js"></script>
	 
	</head>
	<body>
		 <!-- 5点18 -->
		<div id="app">
			<!-- 使用v-for指令循环遍历数据到列表项中,在列表项内容中添加插值表达式,p指的是数组中的一个字符串数据-->
			 <ul>
                 <!--不添加数组索引的写法-->
 				 <!-- <li v-for="p in provinces">{{p}}</li> -->

                   <!--添加数组索引的写法,在循环时为它添加序号-->
				 	<li v-for="(p,index) in provinces">{{index+1}}{{p}}</li>
			 </ul>
		</div>
		
		 
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
					//模拟从服务器后端响应回来的数据,在前端把后端响应的数据动态的响应在网页上
				  provinces:['北京','天津','上海']//字符串类型数组
				}
			});
		</script>
	</body>
</html>

在此案例中,通过v-for指令将字符串类型数组provinces的数据循环遍历在列表项中,并添加了数组的索引值,由于数组的索引值是从零开始的,我们在插值表达式中为索引值加1,实现添加的数字序号从1开始.
v-for="(p,index) in provinces" 其中p为字符串数组中的一个字符串数据,这里的用法与增强for循环遍历数据类似

示例2:表格使用v-for遍历数据

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		 
		<script src="js/vue@2.js"></script>
	 
	</head>
	<body>
		<div id="app">
			 <table border="1">
				 <tr>
					 <td>序号</td>
					 <td>学号</td>
					 <td>姓名</td>
					 <td>性别</td>
				 </tr>
				 <tr v-for="(student,index) in students">
					 <td>{{index}}</td>
					 <td>{{student.id}}</td>
					  <td>{{student.name}}</td>
					   <td>{{student.gender}}</td>
				 </tr>
			 </table>
		</div>
		
		 
		<script type="text/javascript">
			let app = new Vue({
				el:"#app",
				data:{
				  //对象类型数组
				  students:[{id:101,name:'jim',gender:'男'},{id:102,name:'tom',gender:'男'},{id:103,name:'jery',gender:'女'}]
				}
			});
		</script>
	</body>
</html>

在此案例中,data中定义的数据类型是students对象类型的数组,每一个大括号代表一个对象,其中的id,name,gender等是该对象的属性.
注意:    v-for指令应当写在行标签中,将插值表达式写在列标签中,在插值表达式中通过student.id来获取students对象类型数组中一个对象student的属性id值.

五.VUE 实例生命周期

每个Vue 实例在被创建时都要经过一系列的初始化过程-例如,需要设置数据监听,编译模板,将实例挂载到DOM 并在数据变化实更新DOM 等.同时,在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己代码的机会.

下面图示表示不同的生命周期钩子函数的所处位置:

用户通过这八个生命周期函数,实现在不同的阶段添加代码,实现代码功能 

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue@2.js"></script>
		 
	</head>
	<body> 
		<div id="app"> 
		</div>
		<script type="text/javascript">
			 /* 
			 vue对象生命周期
			 */
			let app = new Vue({
				el:"#app",//vue对象绑定标签
				data:{
					 
				},
				methods:{//自定义函数
				
			},//vue对象生命周期钩子函数
			beforeCreate(){//vue对象创建之前执行
				console.log("beforeCreate")
			},
			created(){//在vue对象创建后执行
				console.log("created")
			},
			beforeMount(){//这个是vue对象与标签绑定前执行,这里的绑定指el绑定
				console.log("beforeMount")
			},
			mounted(){//这个是vue对象与标签绑定后执行,这是我们后面需要的,在网页打开后,自动执行某些操作
			          //如自定义的向后端发送请求加载数据
				console.log("mounted")
			}
			});
		</script>
	</body>
</html>

在此案例中使用了四个生命周期钩子函数,在不同的阶段执行了代码中的功能,代码中注释了这四个函数在不同的阶段执行.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2385164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

skywalking 10.2 源码编译

1.源码下载 Downloads | Apache SkyWalking 选择 SkyWalking APM 最新版下载&#xff0c; 下载后&#xff0c;在本地解压。 2.Idea加载工程 2.1 根目录pom文件删除checkstyle 插件 后续做二开时避免代码风格校验报错 2.2 删除apm-webapp 工程中 frontend-maven-plugin插件…

C++ --- string

C --- string 简介1、构造函数2、迭代器&#xff08;主流的遍历方式&#xff09;2.1字符串经典遍历和修改的方式2.2使用迭代器遍历和修改字符串2.3使用范围for遍历对象&#xff08;C11支持的新特性&#xff09; 3、常见&#xff0c;常用方法或重载3.1查询大小和容量管理3.2增3.…

Android Studio 连接夜神模拟器 自动断开的问题

版本情况&#xff1a; Android Studio Meerkat Feature Drop | 2024.3.2 Build #AI-243.25659.59.2432.13423653, built on April 30, 2025 Runtime version: 21.0.6-13368085-b895.109 amd64夜神模拟器 V7.0.5.9046 问题描述&#xff1a; cmd命令行使用adb连接夜神模拟器成…

Python入门手册:Python中的数据结构类型

在Python中&#xff0c;数据结构是组织和存储数据的方式&#xff0c;它们允许你以高效的方式操作和处理数据。Python提供了几种内置的数据结构&#xff0c;包括列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、集合&#xff08;Set&#xff09;和字典&a…

巡礼中国西极·跨越昆仑天山 | 北斗卫星徽章护航昆仑科考

神秘深邃&#xff0c;遗世独立。帕米尔高原&#xff0c;横亘于中亚东南部&#xff0c;我国的最西端&#xff0c;面积约10万平方千米&#xff0c;平均海拔4500米以上&#xff0c;古代丝绸之路在此经过。昆盖山&#xff0c;一座掩藏在帕米尔高原褶皱深处、鲜为人知的山脉&#xf…

Vue常用自定义指令-积累的魅力【VUE】

前言 在【自定义指令—v2与v3之间的区别【VUE基础】一文中&#xff0c;整理了自定义指令部分vue2和vue3 两个版本的区别&#xff0c;有兴趣的伙伴或者针对自定义部分比较迷茫的伙伴可以跳转看一下。此次主要介绍一些自己积累的一些自定义指令的代码&#xff0c;与大家一起分享。…

LangChain4j第三篇: RAG的简单应用与实践

引言:RAG 构建属于你的大模型 大语言模型(LLM)的知识体系本质上仅限于它所接受的训练数据。 其一在知识时效性方面,模型参数固化于训练完成的时点,而现实世界中的知识和信息持续动态更新。 其二在非公开数据层面,企业内部的机密文档(如产品设计图、商业策略等)及个人隐…

功能强大且易于使用的 JavaScript 音频库howler.js 和AI里如何同时文字跟音频构思想法

howler.js 是一个功能强大且易于使用的 JavaScript 音频库&#xff0c;它提供了跨浏览器的音频播放功能&#xff0c;支持多种音频格式&#xff0c;并且具有丰富的 API&#xff0c;可以方便地控制音频的播放、暂停、循环、音量等。下面是如何在 Vue 项目中使用 howler.js 实现音…

如何使用patch-package给npm包打补丁

一、背景 在移动应用开发中,轮播是一种很常见的效果,我们项目采用的是RN跨平台技术,RN的轮播我们直接使用的是第三方插件:react-native-snap-carousel。不过,当我们在项目中使用的时候却发现Android和iOS的表现不一致:https://stackoverflow.com/questions/60711611/rea…

maxkey单点登录系统

github地址 https://github.com/MaxKeyTop/MaxKey/blob/master/README_zh.md 1、官方镜像 https://hub.docker.com/u/maxkeytop 2、MaxKey:Docker快速部署 参考地址&#xff1a; Docker部署 | MaxKey单点登录认证系统 拉取docker脚本MaxKey: Dromara &#x1f5dd;️MaxK…

windows bat 在目录下(包括子目录)搜索批量指定文件名称复制到另一个文件夹内

windows bat 在目录下(包括子目录)搜索批量指定文件名称复制到另一个文件夹内 前言&#xff1a;最近遇到一个需求&#xff0c;我有15个文件夹(可能包含子文件夹) &#xff0c;目前我有一批文件名称&#xff0c;需要在这15个文件夹中查找出来&#xff0c;并拷贝到一个新的文件夹…

Notepad++ 下载与安装教程(小白专属)

文章目录 Notepad下载渠道的专业选择1. 官方网站下载&#xff08;海外用户或网络条件优越者首选&#xff09;2. 国内优化下载地址&#xff08;国内用户高效选择&#xff09; Notepad精细化安装流程解析总结与后续建议 在当前的开发与文本处理工作中&#xff0c;Notepad无疑是一…

Spring Cloud Gateway 微服务网关实战指南

上篇文章简单介绍了SpringCloud系列OpenFeign的基本用法以及Demo搭建&#xff08;Spring Cloud实战&#xff1a;OpenFeign远程调用与服务治理-CSDN博客&#xff09;&#xff0c;今天继续讲解下SpringCloud Gateway实战指南&#xff01;在分享之前继续回顾下本次SpringCloud的专…

微服务架构实战:Eureka服务注册发现与Ribbon负载均衡详解

微服务架构实战&#xff1a;Eureka服务注册发现与Ribbon负载均衡详解 一 . 服务调用出现的问题二 . EureKa 的作用三 . 服务注册3.1 搭建 EureKaServer① 创建项目 , 引入 spring-cloud-starter-netflix-eureka-server 的依赖② 编写启动类 , 添加 EnableEurekaServer 注解③ 添…

采用多维计算策略(分子动力学模拟+机器学习),显著提升 α-半乳糖苷酶热稳定性

字数 978&#xff0c;阅读大约需 5 分钟 在工业应用领域&#xff0c;α-半乳糖苷酶在食品加工、动物营养及医疗等方面发挥着重要作用。然而&#xff0c;微生物来源的该酶往往存在热稳定性不足的问题&#xff0c;限制了其在工业场景中的高效应用。近日&#xff0c;来自江南大学的…

【java】小练习--零钱通

文章目录 前言一、项目开发流程说明二、功能实现2.1 菜单2.2 零钱通明细2.3 零钱通收益2.4 零钱通消费2.5 零钱通退出确认2.6 零钱通金额校验2.7 完整代码 三、零钱通OOP版 前言 本文是我跟着B站韩顺平老师的 Java 教程学习时动手实现“零钱通”项目的学习笔记&#xff0c;主要…

Docker-mongodb

拉取 MongoDB 镜像: docker pull mongo 创建容器并设置用户&#xff1a; 要挂载本地数据目录&#xff0c;请替换此路径: /Users/Allen/Env/AllenDocker/mongodb/data/db docker run -d --name local-mongodb \-e MONGO_INITDB_ROOT_USERNAMEadmin \-e MONGO_INITDB_ROOT_PA…

Gartner《Optimize GenAI Strategy for 4 Key ConsumerMindsets》学习心得

一、引言 在当今数字化营销浪潮中,生成式人工智能(GenAI)正以前所未有的速度重塑着市场格局。GenAI 既是一场充满机遇的变革,也是一场潜在风险的挑战。一方面,绝大多数 B2C 营销领导者对 GenAI 赋能营销抱有极高期待,他们看到了 GenAI 在提升时间与成本效率方面的巨大潜…

达梦数据库-学习-22-库级物理备份恢复(超详细版)

目录 一、环境信息 二、说点什么 三、概念 1、备份恢复 2、重做日志 3、归档日志 4、LSN 5、检查点 四、语法 1、BACKUP DATABASE 2、DMRMAN RESTORE DATABASE 3、DMRMAN RECOVER DATABASE 4、DMRMAN UPDATE DB_MAGIC 五、实验 1、开归档 &#xff08;1&#xf…

python网络爬虫的基本使用

各位帅哥美女点点关注&#xff0c;有关注才有动力啊 网络爬虫 引言 我们平时都说Python爬虫&#xff0c;其实这里可能有个误解&#xff0c;爬虫并不是Python独有的&#xff0c;可以做爬虫的语言有很多例如&#xff1a;PHP、JAVA、C#、C、Python。 为什么Python的爬虫技术会…