ES4 (pop push unshift shift slice revert sort) indexOf lastIndexOf contact slice
`; //``是 es6 的模板字符串 遇到变量用 ${} 取值
})
includes 查找是否存在
返回的是 Boolean
Let arr=[1,2,3,4,5]
arr.includes(6) //false
FInd 找到具体的某一项
arr.find(function(item,index){ }) //为 true ,停止循环返回当前 item ;找不到返回 undefined
Some 找 true,找到 true 后停止返回 true
Every 找 false,找到 false 后停止返回 false
arr.some(function(item,index){ }) arr.every(function(item,index){ })
Reduce 收敛函数,四个参数,返回迭代后的结果
prev,next,index,item 分别指前一个(即当前值)、下一个、索引、原数组
Let arr=[1,2,3,4,5]
arr.reduce(function(prev,next,index,item){
Console.Log(arguments)
//return prev+next //求和,且会作为下一次的 prev , prev 是上一次循环的 return 值
})
1 2 1 [12345]
Undefined 3 2 [12345]
而对于数组里存放的是对象的话
Let objArr=[{count:1},{count:2},{count:3}]
Let sum1=objArr.reduce(function(prev,next,index,item){
return prev.count+next.count //此时需要 return 对象,返回下一次循环会报错
})
Sum1=NAN
此时需要给数组添加一个初始值 0,
Let objArr=[0,{count:1},{count:2},{count:3}] 使用修改为
objArr.reduce(function(prev,next,index,item){
return prev+next.count //此时可保证正确累加
})
或者不改数组,而是在方法添加第二个参数(第一个参数为 function)
objArr.reduce(function(prev,next,index,item){
return prev+next.count //此时可保证正确累加
}, 0 )
二维数组变成一维数组
Let arr=[[1,2,3],[4,5,6],[7,8,9]]
Arr.reduce(function(prev,next){
Return prev.concat(next);
})
或者
[].concat.apply([],arr)
字符串
charCodeAt方法返回一个整数,代表指定位置字符的 Unicode 编码。
fromCharCode方法从一些 Unicode 字符串中返回一个字符串。
charAt方法返回指定索引位置处的字符。如果超出有效范围的索引值返回空字符串。
slice方法返回字符串的片段。
substring方法返回位于 String 对象中指定位置的子字符串。
indexOf方法放回 String 对象内第一次出现子字符串位置。如果没有找到子字符串,则返回 -1 。
search方法返回与正则表达式查找内容匹配的第一个字符串的位置。 Match
concat方法返回字符串值,该值包含了两个或多个提供的字符串的连接。
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
toLowerCase ,t oUpperCase所有字母都被转换为 小、 大写字母。
Startwith endwith repeat replace trim “sss”.padstart(5,”ss”) padend 补全字符串
箭头函数
不具备 this和 arguments
自己没有则向上寻找 this
如何更改 this指向? call apply bind ;var self=this; 箭头函数
如何确定 this是谁? 看谁调用的 . 前面是谁 this 就是谁
Let a= b => b=1
-去掉 function 关键字
-若只有一个参数可以省略小括号
-小括号与大括号之间有箭头
-若没有大括号则直接是返回值
-有大括号需要用 return
例子: Let a=b=> c => b+c; //高阶函数 嵌套函数
闭包:单独的作用域,不销毁的作用域,当执行后返回的结果必须是引用数据类型,被外界变量接受,此时这个函数不会销毁,模块化(私有化)
//典型闭包
var t=function test(){
var a=1; return function(){console.log(a++)}
}();
//简写函数
arr.forEach(item=> console.log(item))
在 Vue中不经常使用箭头函数
2、Vue介绍
读音类似于 view 是一套构建用户界面的渐进式框架
框架 vue 拥有完整的解决方案 , 写好后别人调用
库 jquery 我们进行调用 工具
渐进增强 保证低版本支持,高版本效果增强
Vue全家桶 vuejs + vue-router + vuex + axios
渐进式的理解 (全家桶 )
声明式渲染(无需关心如何实现)
组建系统
客户端路由
大规模状态管理
构建工具( vue-cli) 全套完整的方案
Vue的两个核心点
响应的数据变化
当数据发生改变 --视图自动更新
组合的视图组件
Ui页面映射为组件树
划分组件可维护可复用可测试
MVC 单向
MVVM模式 双向绑定
Model数据 view 视图 viewmodel 视图模型
View viewmodel model
DOM DOM Listeners Data Bindings plain js objects
vue
Object.defineProperty(es5) 没有替代方案 不支持 ie8 以下
Vue安装
1、cdn 直接使用网址
2、npm node package manager
npm init
初始化会产生一个 package.json的文件来描述项目的依赖,项目名不能有大写 特殊字符 中文,而且不要和安装的包重名
npm init -y 全部取默认值,项目名为文件夹名
npm install vue install可简写为 -i
Package.json dependencies 会记录已安装依赖 npm install 会安装这些内容
Node_moudules 安装的代码 dist 代表目的地,即编译好的内容
Let vm = new Vue({ //vm == viewModel
el:”#app”, //告诉 vue 能管理哪个部分,不能挂载到 html body
data:{ //data中的数据会被 vm 代理
msg:”hello” //可以通过 vm.msg 取到对应内容
}
}); //Object.defineProperty
{{msg}} //moustache 小胡子语法 赋值 取值 三元 逻辑运算用( computed )
v-model双向绑定
v-mode会将 msg 的值赋予输入框 输入框的值改变了会影响数据
表单元素更改来影响数据(通过 vue指令 directive v- 开头)
一般的表单元素 input checkbox textarea radio select vue忽略 selected checked
Es5的原生方法
Let obj={}
Let temp={}
Object.defineProperty(obj,’name’,{
Configurable:true, //是否可删除 delete obj.name
Wirtable:false, //是否可重新赋值
Enumerable:false, //是否可枚举,能循环出来与否
Value:1 //值
})
Object.defineProperty(obj,’name’,{
get(){
return temp[“name”];
},
set(val){
temp[“name”]=val;
input.value=val; //重新赋值给文本框,双向绑定
}
})
Input.value=obj.name; //页面加载时,调用 get 方法
Input.addeventlistener(‘input’,function(){ //等待输入框变化
obj.name=this.value; //当时变化时调用 set 方法
})
Css放上面 先渲 dom
Js放下边 不影响展示
基础指令
v-model 双向绑定
v-text 显示文本 等价 {{}} ,此时渲染会显示出 {{}} 需要在标签中加样式 [v-cloak]{display:none}
v-once 只绑定一次,当数据再发生变化也不会导致页面刷新,加在标签中
v-html 当作 html 渲染
Vue会循环 data 中的数据(数据劫持) 依次添加 proxysetter 和 proxygetter
响应式数据
改对象
1、使用变量时,先要在 data中初始化,否则新加的元素不会导致页面刷新
2、vm.$set() //此方法可以给对象添加响应式的数据变化 vm.$set(vm.a, ’school’,1);
3、替换原对象 vm.a={school: 5}
改数组
去改变数组中的某一项是监控不到的,因为数组内的元素加不上 getter和 setter
//错误写法 vm.arr[0]=100 vm.arr.lenth-=2
//变异方法 pop push shift unshift sort reserve slice 都可以操作原数组,因此可变化
或者 vm.arr=vm.arr.map(item=>item*3) //filter map
v-for 解决循环问题 更高效 复用原有结构 以前拼接 innerHTML
v-for=”(item,index) in arr” v-for=”c in ‘aaaa’” v-for=”c in 10” v-for=”(value,key,index) in obj”
此时会传递默认值 event
v-on 绑定事件 //v-on:click= ”fn” 简写为 @符号 @click= ”fn”
放到 methods, methods 与 data 命名不能冲突, methods 中的 this 指向实例
fn( event )此时若 @click= ”fn”,则会自动带过来 event
fn(event,test) 此时若 @click= ”fn($event,123)” 需要手动传入 event参数
@keyup.enter=”fn” 代表只有按回车才执行 类似写法 @keyup.13 @keyup.ctrl.a
二
npm install vue axios bootstrap(响应式布局 )
Checkbox
只有一个复选框的时候,会把值转化为 Boolean类型,如果 true 代表选中
多个复选框的时候,要增加 value属性,数据类型用数组,会将选中的 value 值放到数组中
1
2
3
test[] 全选中 test 为 [1,2,3]
Select
//取得 value 的值,若 option 无 value 属性,则取显示的值
请选择
1
2
3
传统方式:监听 onchange事件, this.value 值为选中 option 的 value
data:{
a:””
}
//多项选择 a 变成数组类型
Radio
男 以前用 name 属性
女
sex为选中的 radio 的 value 值
Axios 基于 promise
//专门发送 ajax 的方法
created(){ //数据初始化后会调用 this 指向 vm 实例,钩子函数
axios.get(‘./carts.json’).then((res)=>{
this.pro=res.data; //data为真实的数据
},(err)=>{
})
}
发请求可以封装为方法放到 methods方法中,然后在 created 中调用
Promise 解决回调问题的
//回调函数 将后续处理逻辑传入当前要做的事,事情处理好以后调用此函数
Function buy(callback){
setTimeout(()=>{
Let a=’123’;
Callback(a);
},100);
}
Promise 三个状态 成功态 失败态 等待 // 定义时即会执行
//resolve 代表转向成功 reject 代表转向失败 均是函数
//promise的实例就有一个 then 方法,两个参数
var pro=new Promise((resovle,reject)=>{
console.log(1)
setTimeout(()=>{
let a=’123’;
resovle(a);
},100);
});
console.log(2);
pro.then((res)=>{console.log(res)},(err)=>{})
封装原生 ajax请求
function ajax({url=’xxx’,type=’get’,dataType=’json’}){
Return new promise({resolve,reject}=>{
Let xhr=new XMLHttpRequest();
Xhr.open(type,url,true); //最后参数为是否异步
Xhr.responseType=dataType;
Xhr.οnlοad=function(){ //xhr.readstate==200;xhr.status=4
If(xhr.status==200){
Resolve(xhr.response);
}
}
Xhr.onError=function(err){
Reject(err);
}
Xhr.send();
})
}
ajax({url:’./aaa’}).then((res)=>{},(err)=>{})
Fetch代替 Ajax
Async await 基于 promise
Bootstrap 栅格化布局 默认 12 列 其他框架会 8 、 24
常见样式 基本样式 + 增强样式
Default 灰色 success 绿色 danger 红 warning 警告 info 浅蓝
Vue的 ui 框架 iview mintui elementui
购物车 表格标题
动态绑定数据 在属性里使用需要用 v-bind或: v-bind:id= ”data”
//.number将输入框值变成数字类型 .lazy 当输入框失去焦点更新数据
toFiexed(2)两位小数
过滤器 原数据不变,只是改变显示的效果 |为管道符
{{a.price*a.count|toFiexed(2)}}
Filters:{//可以有好多的自定义过滤器
toFiexed(input, param1){ // 这里的 this 是 window,input 为值
Return “$”+input
}
}
两个对象比较,比较的是地址,因此可以比较是否相等
点击 checkbox时,用 change 事件
Sum() 数据一变化就会重新调用此函数 算出最新的结果 不会缓存上一次结果
Computed 也会放到实例上
Computed:{
Checkall:{
Get(){
Return this.pros.every(p=>p.isSelected)
},
Set(val){
This.pros.forEach(p=>p.isSelected=val)
}
},
Sum(){ } //只有 get 可写成函数模式,且会被缓存
}
V-if v-show if操作的是 dom show 操作的是样式
如果 if不通过内部指令不会再执行
只有 dom从显示到隐藏 或者隐藏到显示 才能使用 vue 的动画
//Vue自定义标签 (组件)
动画
Opacity: 0 1 1 0
V-enter v-enter-to v-leave v-leave
V-enter-active v-leave-active
V-enter V-enter-active v-leave-active
.v-enter{opacity:0;}
.v-enter-active{transition:1s linear;}
.v-leave-active{opacity:0;transition:1s linear}
name默认为 v
.test-enter{opacity:0;}
.test-enter-active{transition:1s linear;}
.test-leave-active{opacity:0;transition:1s linear}
animate.css 动画库 --save 会记录到 package.json 的依赖库
transition适用单个元素 transition -group 适用多个元素
V-for 默认会复用原有的 dom 元素,要加 :key 且 key 不同用以区分不同元素
三
修饰符 .number .lazy
按键修饰符 .enter.ctrl.keycode
事件 修饰符用于处理细节问题
@事件 .stop 停止事件传播 stoppropagation cancelBubblel=true
@事件 .capture 事件为捕获 div.addeventlisenter( ‘click’,fn,true(捕获 ))
@事件 .capture.stop 先捕获后停止
@事件 .prevent 阻止默认行为 preventDefault returnvalue=true
@事件 .once 事件只执行一次 Jquery once
@事件 .self 只有事件源是自己才会触发
e.srcElement&&e.target===”” 判断事件源绑定 事件
局部过滤器 New vue({
el:”#app”,
Filters:{
My(data){ return “data”+123}
}
})
全局过滤器,要放到页面的顶部
Vue.filter(“my”,(data)=>{ })
Computed不支持异步
Watch 只有值变化的时候才会触发 支持异步,其他情况更善于使用 computed
New vue({
Watch:{
a(newval,oldval){
If(newval.length<3) ....
}
}
})
Vm.$watch(‘a’,(newval,oldval)=>{})
V-if v-else
transtion
是 vue提供的无实际意义包裹元素的标签 v-show 不起效
默认情况下,切换 dom时 Vue 会复用元素,如果不复用需要加 :key
class=”a b c” style=”background:’color’”
第一种是对象 第二种是数组
:class绑定的样式和 class 绑定的不冲突 style 使用与 class 雷同
1 {classname:isActive,classname2:isSuccess}
2 data:{class1:x,class2:y} :class[class1,class2]
3 混用 :class[class1,class2,{z:false}]
实现单页开发的方式
通过 hash记录跳转的路径 可以产生历史管理
浏览器自带的历史管理的方法 history ( history.push )
History.pushState(“”,””,”/me”) 可能会导致 404 错误
开发时使用 hash方式 上线都话会使用 history 的方式
自定义指令
directives:{
color(el,bindings){ //el指代是 button 按钮
el.style.background=bindings.value
},
Drag(el){
}
},
data:{
flag:’red’
}
拖拽
El.οnmοusedοwn=function(e){
Var x=e.pagex-el.offsetLeft;
Var y=e.pageY-el.offsetTop;
document.οnmοusemοve=function(e){
El.style.left=e.pageX-x+”px”;
El.style.Top=e.pageY-y+”px”;
}
document.οnmοuseup=function(){
document.οnmοusemοve=document.οnmοuseup=null;
}
e.preventDefault();
}
Watch 默认值监控一层的数据变化,深度监控
Watch:{
Todos:{
Handler(){ //默认写出函数,就相当于写了个 handler
},
deep:true
}
}
四
Window.location.hash
Vue的生命周期
New vue
Init events &&lifecycle 初始化事件和实例的父子关系
beforecreate 此方法一般用不到
Init injections&reactivity 注册数据 进行双向绑定
Created 执行 ajax ,获取数据,初始化操作
是否有 el属性或者有没有 vm.$mount(el) 有编译的元素
是否有 “template ”,有则替换掉 elhtml 元素,否则把 el 的 outhtml 做模板
Beforemount
创建 vm.$el替换掉 el ,用编译好的数据替换掉模板
Mounted 真实 dom 渲染完毕,可以操作 dom
当 data发生变化
Beforeupdate //一般用 watch
虚拟 dom会重新渲染
updated
beforeDestroy //可以清除定时器或者清楚事件绑定
移除掉 watch components等
destroyed
// vm.$data vm上的数据
//this.$watch 监控
//vm.$el当前 el 元素
// vm.$set 后加的属性实现响应式变化
// vm.$option vm上的所有属性
//vm.$refs 获取真实的 dom 元素 v-for 才能获取多个 ’div’>
//vm.$nextTick 异步方法,等待 dom 渲染完获取元素
数据改变会渲染 dom,因为是异步的,若要获取 dom 需要使用 nextTick
This.nextTick(()=>{
This.$refs.wrap
})
组件化开发
页面级组件
1一个页面是一个组件 2 将可复用的部分抽离出来 基础组建
一个自定义标签 vue就会把他看成一个组件
全局组件
一般插件的时候全局组件多一些
声明一次在任何地方使用
1组件名不要带大写 多个单词用 -
2只要组件名和定义名相同是可以的 ( 首字母可大写 )
3 html采用 - 隔开命名, vue 中使用驼峰命名
Vue.component(‘name’,{ //一个对象可以看成一个组件
template:’
123
’ //
只能有一个根元素
data(){ //组件中数据必须是函数类型 返回一个实例作为组件的函数
return {}
}
})
局部组件 必要属于某个 vue实例
使用三部曲 1创建组件 2 注册组件 3 使用组件
组件是相互独立的 不能直接跨作用域 实例也是一个组件 组件拥有生命周期
如果组件共用数据 会导致同时更新 (独立性 ) ,因此 data 需要使用 return
Let aa={
template:’
123
’
}
Components:{
aa
}
层级间的消息传递 父到子 属性传递 props 子到父 事件传递 $emit
中间既不触发也不传递的为 v-bing=’ @attrs ’ v-on= ’ @listenners ’
当前组件的属性 =父级的值,给儿子加一个 m 属性,属性对应的数据是属于父亲的
Let vm=new Vue({
Compenents:{
Child:{
Props:[‘m’], //对象可添加校验
Template:’
儿子 {{m}}
’
}
}
})
Props:{
m:{ //不与 data 中相同 , 只是校验提示警告,不会阻断程序
type:[String,Boolean,Number,Array,Function] //校验属性类型
default:100 //可以赋默认值
required:true //此属性必传,但是不能和 default 同用
Validator(val){//第一个参数是当前值,返回值通过, false 不通过
Return val>300 //自定义校验器
}
}
}
发布订阅 //emit on
Vm.$on vm.$once vm.$off vm.$emit
Function Girl(){ this._events={} }
Girl.prototype.on=function(eventName,callback){
If(this.events[eventName]){
this.events[eventName].push(callback)
}else{
this.events[eventName]=[callback]
}
}
Girl.prototype.emit=function(eventName,...args){
//[].splice.call(argument,1)
If(this.events[eventName]){
this.events[eventName].forEach(fn=>fn(...args)); //fn.apply(this,args)
}
}
父亲绑定一些事件,儿子触发这个事件,将参数传递过去 单项数据流
Var vm=new Vue({
data:{
Money:100;
},
Methods:{
changeMoney(val){
This.money=val;
}
},
Components:{
Children:{
Props:[“m”],
Template: ”
钱: {{m}}”change”>加钱
”,
Methods:{
Change(){
This.$emit(“click-mes”,200);
}
}
}
}
})
组件就是自定义标签 全小写 或加横杠
驼峰命名会转化为短横线命名
Props:[‘myMessage’]
Sync 简写 不用
this.money=val”>
模态框 弹出层
居中 Top:50% left:50% trnasform:translate3d(-50%,-50%,0)
弹
flag=false”>
Let modal={
Props:[‘show’],
Methods:{
Closed(){
This.$emit(“close”);
}
}
Template:”#mydialog”
}
五
Npm install vue vue-router axios bootstrap
Slot 插槽 可以定制模板
确定删除么
默认标题 默认值 如果传值则会被替换掉
默认标题 有名字 默认为 default
为保证内容顺序 用名字区分位置
默认标题
默认内容
默认值
内容
标题
父调用子组件的方法 通过 ref
Mouted(){ //页面挂载好后获取组件实例
this.$refs.load.hide();
This.$refs.load.$el.style.background=’red’;
}
Keep-alive 为了提高性能 缓存组件 为路由缓存内容
$nextTick()
子组件和父组件同时拥有 mounted方法,先走子组件
需要等待子组件挂载完成后再触发父组件的挂载
Mounted是异步渲染 dom, 需要耗费时间渲染
this.nextTick(()=>{ //在 mounted 想操作 dom 就加一个 nextTick
this.$refs.child.$el.innerHTML
})
Flex 布局
Flex 是 Flexible Box 的缩写,意为 " 弹性布局 " ,用来为盒状模型提供最大的灵活性
display: flex;
采用 Flex 布局的元素,称为 Flex 容器( flex container ),简称 " 容器 " 。它的所有子元素自动成为容器成员,称为 Flex 项目( flex item ),简称 " 项目 "
容器默认存在两根轴:水平的主轴( main axis)和垂直的交叉轴( cross axis )
容器的属性
flex-direction 决定主轴的方向 row | row-reverse | column | column-reverse;
flex-wrap 决定如何换行 nowrap | wrap | wrap-reverse
flex-flow 前两个简写模式 || 默认值 row nowrap
justify-content 主轴上的对齐方式
f lex-start | flex-end | center | space-between(两端对齐 ) | space-around(两侧间隔相等 )
align-items 交叉轴上对齐
flex-start | flex-end | center | baseline (第一行文字基线 ) | stretch (无高度、 auto 占满项目 )
align-content 多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用
flex-start | flex-end | center | space-between | space-around | stretch (占满整个交叉轴 )
项目的属性
Order 项目的排列顺序。数值越小,排列越靠前,默认为 0
flex-grow 项目的放大比例,默认为 0,即如果存在剩余空间,也不放大
如果所有项目的 flex-grow属性都为 1 ,则它们将等分剩余空间(如果有的话)。如果一个项目的 flex-grow 属性为 2 ,其他项目都为 1 ,则前者占据的剩余空间将比其他项多一倍
flex-shrink 项目的缩小比例,默认为 1,即如果空间不足,该项目将缩小
如果所有项目的 flex-shrink属性都为 1 ,当空间不足时,都将等比例缩小。如果一个项目的 flex-shrink 属性为 0 ,其他项目都为 1 ,则空间不足时,前者不缩小
flex-basis 在分配多余空间之前,项目占据的主轴空间( main size)。
浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为 auto,即项目的本来大小
它可以设为跟 width或 height 属性一样的值(比如 350px ),则项目将占据固定空间
Flex 是 flex-grow, flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto
该属性有两个快捷值: auto (1 1 auto) 和 none (0 0 auto) 。
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
align-self 允许 单个项目有与其他项目不一样的对齐方式,可覆盖 align-items属性。默认值为 auto ,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch
转载于:https://www.cnblogs.com/comeasyouare/p/9910535.html
你可能感兴趣的:(vue杂记)
Vue 3 组合式 API 中的组件生命周期函数详解
码力无边-OEC
Vue vue.js 前端 javascript 前端框架 web
Vue3组合式API中的组件生命周期函数详解Vue3引入了组合式API(CompositionAPI),相比于选项式API(OptionsAPI),它更加灵活且易于复用。在组件的开发中,生命周期函数是必不可少的一部分,用于在特定的阶段执行逻辑操作。本文将详细讲解Vue3组合式API的生命周期函数及其相关知识点,并通过语法糖实现相关示例。什么是生命周期函数?Vue组件从创建到销毁的过程中,会经历一系
前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用
前端组件分享
前端Vue自定义顶部搜索框热门搜索历史搜索用于搜索跳转使用,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13128效果图如下:####自定义顶部搜索框用于搜索跳转使用方法```使用方法```####HTML代码实现部分```htmlimportCCBProjectListfrom'../../components/CCPro
Nginx 如何解决单页应用 History 模式路由的 404 难题?
wsj__WSJ
nginx
在现代前端开发中,单页应用(SPA)已经成为主流架构。无论是React、Vue还是Angular,都广泛使用History模式路由来实现无刷新页面跳转。但这个看似流畅的体验背后,却隐藏着一个容易被忽视的服务器配置问题——当用户直接访问路由地址或刷新页面时,往往会出现404错误。今天我们就来聊聊Nginx是如何通过简单配置解决这个问题的。一、History模式路由的“陷阱”先来看一个常见场景:当我们
【前端】ikun-qrcode:极简的二维码生成组件,使用view而非canvas避免层级问题
青春狗头少年不会梦到格温学姐
前端
文章目录背景ikun-qrcode界面效果如何发布一款自己的插件到uniapp市场。(5分钟搞定)背景之前在uniapp上100行搞定二维码生成,现在封装为vue组件分享出来:下载地址:https://ext.dcloud.net.cn/plugin?id=19351ikun-qrcode使用基础的view渲染二维码,需要给定宽高和单位和数据:uniapp默认整体宽度是750rpx。界面效果如何发
Vue3 实现 DOCX 文档在线预览功能(基于 docx-preview)
Vue3实现DOCX文档在线预览功能(基于docx-preview)在本篇文章中,我们将介绍如何使用Vue3+docx-preview来实现浏览器端的.docx文档预览功能。项目依赖首先需要安装以下依赖:npminstalldocx-previewaxios组件代码详解Template部分预览DOCX按钮用于触发加载文档事件,文档内容将渲染在docxContainer容器中。Script部分imp
gpt面试题
任小栗
#面试题 gpt vue.js 前端
vue面试题一、响应式系统相关❓1.Vue3的响应式系统是如何实现的?和Vue2有何本质区别?答案:Vue3使用Proxy实现响应式(位于@vue/reactivity模块),替代Vue2的Object.defineProperty。核心机制如下:使用targetMap:WeakMap存储依赖关系利用track()和trigger()方法实现依赖收集与派发更新effect()包装副作用函数,自动收
大概我们这个年纪都不会很老实,老实点的反倒会被排斥,融不进去,甚至被当成傻子笑柄。
今日杂记铺
今日杂记铺今日杂记铺我在网上开了一个属于我自己的微信公众号。起初的打算,写点我虚构的小说。写着写着,就有点力不从心。毕竟自己的经验摆在那儿。放了许久,我看了一些书籍。想着也学学别人,听故事,写故事。我就在网上到处发消息,看看有没有人愿意给我讲。第一次的时候,真的很激动,我很感谢那位网友。故事,我磨了很久,写完后发给他,生怕不满意,好在,他认可了我。我就有了写下去的信心。一有时间,我就在网上问问,愿
vue3 + xlsx + file-saver 读取excel数
土豆丶杨
前端 javascript vue.js
导出{{index}}import{ref}from"vue";import*asXLSXfrom"xlsx";importExport2Excelfrom'@/utils/Export2Excel'exportdefault{setup(){constexcelData=ref([]);constindex=ref("");constresData=ref([])consttitle=ref([
【学术会议投稿】Vue.js组件开发实战:从零构建高效可复用组件
小周不想卷
艾思科蓝学术会议投稿 vue.js
【IEEE出版|会后3-4个月EI检索】第三届云计算、大数据应用与软件工程国际学术会议(CBASE2024)_艾思科蓝_学术一站式服务平台更多学术会议请看:https://ais.cn/u/nuyAF3目录引言一、Vue.js组件开发基础二、构建高效可复用组件三、Vue.js组件的高级特性四、Vue.js的优点与缺点Vue.js的优点Vue.js的缺点引言在现代前端开发中,Vue.js凭借其简洁的
在vue项目中使用富文本编辑器 - tinymce
橘式不妙
vue 富文本编辑器 vue.js 前端 javascript 编辑器
推荐文章tinymce常用配置摘要在vue项目中使用tinymce富文本编辑器。这款编辑器比较轻量级、界面简洁、功能丰富,主要是易扩展。使用步骤安装tinymce官方地址1.安装tinymce#pnpm命令是npm命令的增强,p是proformance的意思,高性能pnpminstall--save"@tinymce/tinymce-vue@^5"2.引入tinymce的mainjstinymce
vue2解决页面重排滚动条问题
啥都不是的小白菜
前端 javascript html
项目场景:项目场景:vue2问题描述例如:在一个卡片页面底部添加一条数据后,滚动条自动跑到了页面顶部去了:原因分析:可能是添加数据后页面重排导致的解决方案:提示:通过deepseek给出了一个较为高效的方案且不会干扰用户的正常滚动行为exportdefault{data(){return{scrollPosition:0};},beforeUpdate(){this.scrollPosition=
《Vue.js 核心概念:前端魔法世界的奇幻基石》
Muai木离
前端 vue.js flutter
在当今数字化浪潮汹涌澎湃,Web应用如梦幻仙境般绚烂多彩且变幻无穷的时代,Vue.js仿若一位神秘而强大的魔法画师,其核心概念则是绘制出震撼人心的Web开发魔法画卷的神来之笔。这些概念宛如星空中最耀眼、最具魔力的星座,不仅赋予Vue.js令人心醉神迷的独特魅力与蓬勃无尽的创造力,更为构建灵动如仙、性能超凡且用户体验犹如置身奇幻梦境的Web应用勾勒出清晰可见的魔法蓝图。对于那些心怀对前端开发领域的炽
Pinia 实战指南:Vue 3 状态管理的高效之道
做人不能太高调
vue.js 前端 javascript
1.给我来个系统学习Pinia的大纲学习Pinia作为Vue.js的状态管理库,可以按照以下大纲来系统地进行学习:1.Pinia入门Pinia简介什么是Pinia?Pinia是Vue3的官方状态管理库,是对Vuex的继承和改进。它通过提供更简洁和灵活的API,使得在Vue应用中管理全局状态变得更加容易。Pinia是专为Vue3设计的,基于CompositionAPI,允许开发者以更加模块化和简洁的
【TypeScript学习笔记】TypeScript 核心知识点
Zaly.
Vue学习笔记 typescript 学习 笔记
目录前言TypeScript核心概念基本类型与高级类型常用内置工具类型类型断言与类型守卫TypeScript在Vue3中的应用Vue3中TypeScript的作用范围Props和Emits的类型定义CompositionAPI中的类型支持前言TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编
vue项目中使用tinymce富文本编辑器
常常不爱学习
vue.js 前端 javascript
vue使用tinymce文章目录vue使用tinymcetinymce富文本编辑器在这里插入图片描述一、本文要实现二、使用步骤1.安装tinymce2.tinymce组件新建3.在store添加商品详情的状态管理4.tinymce组件的引入tinymce富文本编辑器提示:以下是本篇文章正文内容,下面案例可供参考一、本文要实现在‘商品详情’tab页实现富文本编辑器的使用。前提,tab页可以正常实现功
error ‘vue‘ 不是内部或外部命令,也不是可运行的程序或批处理文件 [Windows/Mac/Linux 系统解决方案大全]
error‘vue‘不是内部或外部命令,也不是可运行的程序或批处理文件[Windows/Mac/Linux系统解决方案大全]在使用Vue.js开发时,常常会遇到如下错误提示:'vue'不是内部或外部命令,也不是可运行的程序或批处理文件。这是因为系统无法识别vue命令,可能源于多种原因:未安装或未正确配置环境变量、VueCLI未安装、Node.js管理工具(如nvm)切换版本后未重新全局安装等。作者
vue中实现验证码输入
结城
vue 验证码 vue输入框
vue验证码input输入解决焦点切换有点晚了就不吐槽了,咱还是把代码上了,赶紧洗澡,养好精神明天努力上班!!!想学node,想学react,想精进webpack,想vue学的更好一点,了解底层代码,学算法,学计算机原理,想写自己的博客网站…这是一条学无止境的路,没办法要恰饭效果html部分js部分exportdefault{props:{inputNums:{type:Number,defaul
《Vue3笔记》第38节:Vue3项目集成TinyMCE富文本编辑器
Mr.小朱同学
【Vue3项目开发】 笔记 vue.js 前端 TinyMCE 富文本编辑器tinymce tinymce编辑器 Vue3集成tinymce
前一个小节的内容中,已经介绍了Vue3项目中Quill如何配置highlight.js代码高亮的插件。这个小节来学一个新的富文本编辑器,叫做:TinyMCE。Vue3项目开发(微信文章集合)1.1、运行效果TinyMCE编辑器的效果,如下所示:1.2、安装TinyMCE依赖首先,需要安装tinymce依赖,执行下面命令:#安装依赖npminstalltinymce--save
vue3 路由设置滚动条置顶
开源字节
vue 大前端 vue router route
constrouter=createRouter({history:createWebHistory(),routes,//跳转路由后导航栏置顶scrollBehavior(to,from,saveScrollPosition){return{left:0,top:0};},});
vue切换路由的时候,如何让右侧滚动条滚动到顶部呢?
Roc-xb
前端 vue 滚动条
使用vue切换页面的时候,发现右侧的滚动条的位置似乎存在缓存似的,当右侧滚动条默认在顶部,切换页面的时候,位置停留在顶部,但当右侧滚动条的停留位置不是在顶部的时候,右侧滚动条停留的位置就会是上一个页面右侧滚动条停留的位置,因此,需要寻找一种方法解决这个问题。下面是解决办法,只需要在router/index.is里面增加一个scrollBehavior函数,并且指定对应位置即可,x=0,y=0时,默
浅析Vue3(vue3笔记之进阶篇)
唆键盘的小前端
Javascript 前端 vue 笔记 vue.js 前端 前端框架 javascript windows
本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠))喜欢的话点个赞,谢谢!有问题欢迎指正!!前面已经讲了基本的Vue生命周期和入门知识,本篇重点介绍Vue3的一些进阶知识1.vue-router路由Vue的路由对比React真是舒服太多了,路由守卫不需要自己配置,还可以方便自己添加一些自定义逻辑,比如在beforeEach加载进度条之类的,这里以Hash路由为
TinyMCE富文本编辑器在Vue中的使用教程
介绍TinyMCE是一款功能强大的富文本编辑器,本教程将指导您如何在Vue项目中集成和使用TinyMCE编辑器,从基础使用到高级功能扩展。目录基础集成核心配置详解图片上传处理自定义功能扩展双向数据绑定样式定制常见问题解决vue项目实际应用1.基础集成安装依赖#yarnyarnaddtinymceyarnadd@tinymce/tinymce-vue#npmnpminstalltinymce-Snp
入门指南:Vue.js的基本概念和用法
是小韩呀
vue.js javascript 前端
引言:Vue.js是一种流行的JavaScript框架,用于构建现代化的Web应用程序。它以其简洁易用的API和响应式的数据绑定而闻名,使得开发人员能够更轻松地构建交互性强大的用户界面。本文将介绍Vue.js的基本概念和用法,帮助初学者快速入门。一、Vue.js是一个轻量级、渐进式的JavaScript框架,用于构建用户界面。它的设计目标是通过尽可能简单的API,让开发者能够更高效地开发交互性强大
Vue 指定元素滚动条滚到顶部
我是唐赢
vue vue.js javascript 前端
命令:scrollTo代码:this.$refs.pdfDiv.scrollTo({top:0,behavior:'smooth'});
uni-app开发小程序,根据图片提取主题色值
需求,在页面根据传入的图片提取图片主色值并用来设置区块背景色{{item.name}}{{item.calorie}}千卡/{{item.unit}}分钟importproductChangefrom'./product-change.vue'exportdefault{name:'productItem',components:{productChange},props:{name:{type:
React 最新版本(hooks写法)
抬头第一眼,是天
React react.js javascript 前端
React目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录React目录前言一、指令jsx语法:需要注意的是:react的类名class变成了className,事件从onClick,因为class是react的内部关键字动态数据useState()相当于Vue3的ref(),reactive()条件渲染列
vue页面元素滚动条置顶
藤原とラふ店丶
vue.js 前端 javascript
以下是添加了详细注释的Vue组件代码,解释了每个方法的功能和实现原因:项目{{i}}这是第{{i}}个项目的详细内容。这里可以放置任意长度的文本,以便演示滚动效果。exportdefault{name:'ScrollToTop',props:{//内容项数量,用于演示滚动效果itemCount:{type:Number,default:20},//触发显示按钮的滚动阈值(像素)scrollThre
使用位运算优化 Vue.js 应用:高效状态管理技巧
结城
vue vue.js 前端 javascript
在Vue.js开发中,位运算(BitwiseOperations)是一种高效的工具,尤其适用于需要管理大量布尔状态或优化性能的场景。位运算通过操作二进制位来实现状态的存储和检查,相比传统的数组或对象操作,内存占用更低,执行速度更快。本篇博客将介绍如何在Vue.js中应用位运算技巧,结合Vue的响应式系统实现高效的状态管理。读vue3响应式源码有感https://github.com/vuejs/c
七、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天消息项的实现
智密科技
uniapp插件 IM源码 音视频 微信 uni-app 源码 im
会话好友列表的实现1、项目引言2、腾讯云后台配置TXIM3、配置项目并实现IM登录4、会话好友列表的实现5、聊天输入框的实现6、聊天界面容器的实现7、聊天消息项的实现8、聊天输入框扩展面板的实现9、聊天会话管理的实现10、聊天记录的加载与消息收发11、定位SD配置与收发定位消息12、贴图表情的定制化开发13、腾讯云后台配置TRTC功能14、集成音视频通话功能15、集成仿微信的拍照,相册选择插件16
vue自定义组件实现v-model双向数据绑定
小李大魔王
前端开发 vue vue.js javascript 前端
一、Vue2实现自定义组件双向数据绑定①v-model实现双向数据绑定在vue2中,子组件上使用v-model的值默认绑定到子组件的props.value属性上,由于子组件不能改变父组件传来的属性,所以需要通过$emit触发事件使得父组件中数据的变化,然后再同步到子组件。vue2默认触发v-model数据变化的事件为input。使用如下:子组件MySon 双向数据绑定:{{$props.val
jsonp 常用util方法
hw1287789687
jsonp jsonp常用方法 jsonp callback
jsonp 常用java方法
(1)以jsonp的形式返回:函数名(json字符串)
/***
* 用于jsonp调用
* @param map : 用于构造json数据
* @param callback : 回调的javascript方法名
* @param filters : <code>SimpleBeanPropertyFilter theFilt
多线程场景
alafqq
多线程
0
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?
Java多线程
2012年11月23日 15:41 Young9007 Young9007
4
0 0 4
Comment添加评论关注(2)
3个答案 按时间排序 按投票排序
0
0
最典型的如:
1、
Maven学习——修改Maven的本地仓库路径
Kai_Ge
maven
安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。
placeholder的浏览器兼容
120153216
placeholder
【前言】
自从html5引入placeholder后,问题就来了,
不支持html5的浏览器也先有这样的效果,
各种兼容,之前考虑,今天测试人员逮住不放,
想了个解决办法,看样子还行,记录一下。
【原理】
不使用placeholder,而是模拟placeholder的效果,
大概就是用focus和focusout效果。
【代码】
<scrip
debian_用iso文件创建本地apt源
2002wmj
Debian
1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下
2.创建N个挂载点目录
如下:
debian:~#mkdir –r /media/dvd1
debian:~#mkdir –r /media/dvd2
debian:~#mkdir –r /media/dvd3
….
debian:~#mkdir –r /media
SQLSERVER耗时最长的SQL
357029540
SQL Server
对于DBA来说,经常要知道存储过程的某些信息:
1. 执行了多少次
2. 执行的执行计划如何
3. 执行的平均读写如何
4. 执行平均需要多少时间
列名 &
com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil
7454103
eclipse
今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下:
错误提示信息:
An error has occurred.See error log for more details.
Reason:
com/genuitec/
用正则删除文本中的html标签
adminjun
java html 正则表达式 去掉html标签
使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。
如下:
public static String Html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textSt
嵌入式系统设计中常用总线和接口
aijuans
linux 基础
嵌入式系统设计中常用总线和接口
任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线
Java函数调用方式——按值传递
ayaoxinchao
java 按值传递 对象 基础数据类型
Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。
首先,让我们看一看基础数据类型是如何按值传递的。
public static void main(String[] args) {
int a = 2;
ios音量线性下降
bewithme
ios音量
直接上代码吧
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
if (!_flag) {
_tempVolume = player.volume;
与其怨它不如爱它
bijian1013
选择 理想 职业 规划
抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。
一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。
一边时间不够用一边浪费时间
bingyingao
工作 时间 浪费
一方面感觉时间严重不够用,另一方面又在不停的浪费时间。
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。
精神还是很差,下午像一直野鬼在城市里晃荡。
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。
控制让自己周末早睡早起,你就成功了一半。
有多少个工作
【Scala八】Scala核心二:隐式转换
bit1129
scala
Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con
sudoku slover in Haskell (2)
bookjovi
haskell sudoku
继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。
board = [0,3,4,1,7,0,5,0,0,
0,6,0,0,0,8,3,0,1,
7,0,0,3,0,0,0,0,6,
5,0,0,6,4,0,8,0,7,
Java-Collections Framework学习与总结-HashSet和LinkedHashSet
BrokenDreams
linkedhashset
本篇总结一下两个常用的集合类HashSet和LinkedHashSet。
它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序
读《研磨设计模式》-代码笔记-备忘录模式-Memento
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
/*
* 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
《RAW格式照片处理专业技法》笔记
cherishLC
PS
注意,这不是教程!仅记录楼主之前不太了解的
一、色彩(空间)管理
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼)
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv
使用 Git 下载 Spring 源码 编译 for Eclipse
crabdave
eclipse
使用 Git 下载 Spring 源码 编译 for Eclipse
1、安装gradle,下载 http://www.gradle.org/downloads
配置环境变量GRADLE_HOME,配置PATH %GRADLE_HOME%/bin,cmd,gradle -v
2、spring4 用jdk8 下载 https://jdk8.java.
mysql连接拒绝问题
daizj
mysql 登录权限
mysql中在其它机器连接mysql服务器时报错问题汇总
一、[running]
[email protected] :~$mysql -uroot -h 192.168.9.108 -p //带-p参数,在下一步进行密码输入
Enter password: //无字符串输入
ERROR 1045 (28000): Access
Google Chrome 为何打压 H.264
dsjt
apple html5 chrome Google
Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome
yii 获取控制器名 和方法名
dcj3sjt126com
yii framework
1. 获取控制器名
在控制器中获取控制器名: $name = $this->getId();
在视图中获取控制器名: $name = Yii::app()->controller->id;
2. 获取动作名
在控制器beforeAction()回调函数中获取动作名: $name =
Android知识总结(二)
come_for_dream
android
明天要考试了,速速总结如下
1、Activity的启动模式
standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。)
singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac
高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元
gcq511120594
工作 项目管理
高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖!
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕
linux expect
heipark
expect
1. 创建、编辑文件go.sh
#!/usr/bin/expect
spawn sudo su admin
expect "*password*" { send "13456\r\n" }
interact
2. 设置权限
chmod u+x go.sh 3.
Spring4.1新特性——静态资源处理增强
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
idea ubuntuxia 乱码
liyonghui160com
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。
2.在ubuntu 下可以执行下面操作安装该字体:
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf /usr/share/fonts/truetype/simsun
fc-cache -f -v
改良程序的11技巧
pda158
技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
尽量保持方法简短
永远永远不要把同一个变量用于多个不同的
300个涵盖IT各方面的免费资源(下)——工作与学习篇
shoothao
创业 免费资源 学习课程 远程工作
工作与生产效率:
A. 背景声音
Noisli:背景噪音与颜色生成器。
Noizio:环境声均衡器。
Defonic:世界上任何的声响都可混合成美丽的旋律。
Designers.mx:设计者为设计者所准备的播放列表。
Coffitivity:这里的声音就像咖啡馆里放的一样。
B. 避免注意力分散
Self Co
深入浅出RPC
uule
rpc
深入浅出RPC-浅出篇
深入浅出RPC-深入篇
RPC
Remote Procedure Call Protocol
远程过程调用协议
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发