| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> Web前端开发面试之JavaScript篇 -> 正文阅读 |
|
[JavaScript知识库]Web前端开发面试之JavaScript篇 |
1、谈谈你对MVVM开发模式的理解答:MVVM 分为 Model、View、ViewModel 三者。
Model 和 View 并无直接关联,而是通过 ViewModel 来进行联系的,Model 和 ViewModel 之间有着双向数据绑定的联系。因此当 Model 中的数据改变时会触发 View 层的刷新,View 中由于用户交互操作而改变的数据也会在 Model 中同步。 这种模式实现了 Model 和 View 的数据自动同步,因此开发者只需要专注对数据的维护操作即可,而不需要自己操作 dom。 vue双向绑定原理Vue双向绑定原理 通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。 具体步骤: 第二步: compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 第三步: Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是: 在自身实例化时往属性订阅器(dep)里面添加自己自身必须有一个update()方法待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。 第四步: MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变更的双向绑定效果。 2、原型对象,构造函数,实例之间的关系?(1)每个构造函数都有一个 prototype 属性,指向这个构造函数的原型对象。 3、介绍一下原型链?(js的原型和原型链)答:原型:所有的函数都有一个特殊的属性prototype(原型),prototype属性是一个指针,指向的是一个对象(原型对象),原型对象中的方法和属性都可以被函数的实例所共享。所谓的函数实例是指以函数作为构造函数创建的对象,这些对象实例都可以共享构造函数的原型的方法。 原型链:原型链是用于查找引用类型(对象)的属性,查找属性会沿着原型链依次进行,如果找到该属性会停止搜索并做相应的操作,否则将会沿着原型链依次查找直到结尾。常见的应用是用在创建对象和继承中。 原型链:原型对象上的属性和方法是被构造函数创建的实例所共有的,当访问一个实例的属性或方法的时候,在这个实例上本身上没有找到这个属性或方法,往原型对象上找,(通过__proto__),如果在上一级原型对象上还没找到这个属性或方法,会在这个原型对象的基础上,沿着__proto__继续往上一级原型对象查找,依次类推,直到找到一个名字匹配的属性或方法或到达原型链的末尾:null。 扩展:介绍一下作用域链? map 和 set
4、JS继承?JS继承有哪几种方法,各自优缺点是?https://blog.csdn.net/xuedan1992/article/details/83515342 继承实现的原理? (1)借用构造函数实现继承(构造继承) 特点: 解决了子类实例共享父类引用属性的问题;创建子类实例时,可以向父类传递参数;可以实现多继承(call多个父类对象) 缺点: 实现部分继承。父类原型链上的属性和方法并没有被子类所继承,子类继承的只是父类构造函数里面的属性和方法。 缺点: 实例并不是父类的实例,只是子类的实例;只能继承父类的实例属性和方法,不能继承原型属性/方法;无法实现函数复用,每个子类都有父类实例函数的副本,影响性能。 (2)原型链继承 特点: 非常纯粹的继承关系,实例是子类的实例,也是父类的实例;父类新增原型方法/原型属性,子类都能访问到;简单,易于实现。 缺点: 问题主要在包含引用值的原型上,一个实例改变会导致原型上内容的改变。 (3)组合继承(伪经典继承,实际开发中最常用的方法) 特点:
缺点: 可以看出在这个过程中父类的构造函数使用了两次,一次在创建子类原型的时候,另一次是在子类构造函数内部,但是使用过程中,子类的实例属性会屏蔽原型属性,也就是说某些原型属性其实是用不上的,这造成了内存的浪费。 (4)实例继承 (5)拷贝继承 (6)寄生组合继承 5、Promise ,没有 Promise 怎么办Promise 对象是 CommonJS 工作组提出的一种规范,目的是为异步编程提供统一接口。每一个异步任务返回一个 Promise 对象,该对象有一个 then 方法,允许指定回调函数。 一个 promise 可能有三种状态:等待(pending)、已完成(resolved,又称fulfilled)、已拒绝(rejected)。 promise 必须实现 then 方法(可以说,then 就是 promise 的核心),而且 then 必须返回一个 promise,同一个 promise 的 then 可以调用多次,并且回调的执行顺序跟它们被定义时的顺序一致。 then 方法接受两个参数,第一个参数是成功时的回调,在promise由 没有 promise,可以用回调函数代替。 6、知道哪些ES6,ES7的语法promise,await/async,let、const、块级作用域、箭头函数 let,const,箭头函数,promise,class,解构赋值,export,模版字符串,(…扩展符) promise 和 await/async 的关系 都是异步编程的解决方案 7、 js 加载过程阻塞,解决方法指定 script 标签的 async 属性。 如果 如果不使用 async 且 8、 js对象类型,基本对象类型以及引用对象类型的区别分为基本对象类型和引用对象类型。 (1)基本数据类型:按值访问,可操作保存在变量中的实际的值。基本类型值指的是简单的数据段。 (2)引用类型:当复制保存着对象的某个变量时,操作的是对象的引用,但在为对象添加属性时,操作的是实际的对象。引用类型值指那些可能为多个值构成的对象。 引用类型有这几种: 9、 JavaScript中的轮播实现原理?假如一个页面上有两个轮播,你会怎么实现?图片轮播的原理就是图片排成一行,然后准备一个只有一张图片大小的容器,对这个容器设置超出部分隐藏,在控制定时器来让这些图片整体左移或右移,这样呈现出来的效果就是图片在轮播了。 如果有两个轮播,可封装一个轮播组件,供两处调用。 10、classES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class 关键字,可以定义类。 11、口述数组去重法一:indexOf 循环去重,建一个空数组,循环目标数组,判断新数组中是否有当前单参数,没有就push,有就跳过 法二:ES6 Set 去重;Array.from(new Set(array)) 法三:Object 键值对去重;把数组的值存成 Object 的 key 值,比如 Object[value1] = true,在判断另一个值的时候,如果 Object[value2] 存在的话,就说明该值是重复的。 数组的常用操作
12、箭头函数和 function 有什么区别箭头函数根本就没有绑定自己的 this,在箭头函数中调用 this 时,仅仅是简单的沿着作用域链向上寻找,找到最近的一个 this 拿来使用。 13、new 操作符原理
14、bind(),apply(),call() 3种方法的区别(1) apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如: (2)call:调用一个对象的一个方法,用另一个对象替换当前对象。例如: (3)bind:除了返回是函数以外,它的参数和 call 一样。 15、arguments,箭头函数获取 argumentsarguments 是类数组对象,有 length 属性,不能调用数组方法 。 可用 箭头函数可用 16、闭包闭包函数: 声明在一个函数中的函数,叫做闭包函数。 闭包: 内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。 闭包的特点:
缺点:易造成内存泄漏不会被垃圾回收机制回收 闭包的应用: (1)什么是闭包: 闭包是指有权访问另外一个函数作用域中的变量的函数。 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。闭包就是就是函数的“堆栈”在函数返回后并不释放,我们也可以理解为这些函数堆栈并不在栈上分配而是在堆上分配。当在一个函数内定义另外一个函数就会产生闭包。 (2)为什么要用: 匿名自执行函数:我们知道所有的变量,如果不加上var关键字,则默认的会添加到全局对象的属性上去,这样的临时变量加入全局对象有很多坏处,比如:别的函数可能误用这些变量;造成全局对象过于庞大,影响访问速度(因为变量的取值是需要从原型链上遍历的)。除了每次使用变量都是用var关键字外,我们在实际情况下经常遇到这样一种情况,即有的函数只需要执行一次,其内部变量无需维护,可以用闭包。 结果缓存:我们开发中会碰到很多情况,设想我们有一个处理过程很耗时的函数对象,每次调用都会花费很长时间,那么我们就需要将计算出来的值存储起来,当调用这个函数的时候,首先在缓存中查找,如果找不到,则进行计算,然后更新缓存并返回值,如果找到了,直接返回查找到的值即可。闭包正是可以做到这一点,因为它不会释放外部的引用,从而函数内部的值可以得以保留。 17、事件委托(事件代理)DOM事件流:事件捕获,目标阶段,事件冒泡 事件委托利用了 事件委托是利用事件的 事件代理是利用事件的 举个例子:页面上有这么一个节点树, 事件冒泡,就是元素自身的事件被触发后,如果父元素有相同的事件,如onclick事件,那么元素本身的触发状态就会传递,也就是冒到父元素,父元素的相同事件也会一级一级根据嵌套关系向外触发,直到document/window,冒泡过程结束。 18、Eventloop (js运行机制)在 js 中,任务分为宏任务(macrotask)和微任务(microtask),这两个任务分别维护一个队列,均采用先进先出的策略进行执行。同步执行的任务都在宏任务上执行。 宏任务主要有:script(整体代码)、setTimeout、setInterval、I/O、UI 交互事件、postMessage、MessageChannel、setImmediate(Node.js 环境)。 微任务主要有:Promise.then、 MutationObserver、 process.nextTick(Node.js 环境)。 具体的操作步骤如下:
这 4 步构成了一个事件的循环检测机制,即我们所称的eventloop。
任务队列中,在每一次事件循环中,macrotask 只会提取一个执行,而microtask 会一直提取,直到 microsoft 队列为空为止。 也就是说如果某个 microtask 任务被推入到执行中,那么当主线程任务执行完成后,会循环调用该队列任务中的下一个任务来执行,直到该任务队列到最后一个任务为止。而事件循环每次只会入栈一个 macrotask,主线程执行完成该任务后又会检查 microtasks 队列并完成里面的所有任务后再执行 macrotask 的任务。 macrotasks(宏任务 task,也是我们常说的任务队列): 19、let、const、 var的区别 ,什么是块级作用域,如何用ES5的方法实现块级作用域(立即执行函数),ES6 呢提起这三个最明显的区别是,var 声明的变量是全局或者整个函数块的,而 let,const 声明的变量是块级的变量,var 声明的变量存在变量提升,let,const 不存在,let 声明的变量允许重新赋值,const 不允许。 20、什么是事件监听addEventListener() 方法,用于向指定元素添加事件句柄,它可以更简单的控制事件,语法为
第一个参数是事件的类型(如 “click” 或 “mousedown”). 第二个参数是事件触发后调用的函数。 第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的,默认的是冒泡,即 false,当值为 true 时,即为捕获阶段。 事件传递有两种方式,冒泡和捕获 事件传递定义了元素事件触发的顺序,如果你将 p 元素插入到 div 元素中,用户点击 p元素。 在冒泡中,内部元素先被触发,然后再触发外部元素。 捕获中,外部元素先被触发,在触发内部元素。 21、浅克隆、深刻隆
22、浅拷贝、深拷贝基本数据类型:名字和值都存在栈中。 引用数据类型:名字在栈中,值在堆中,栈内存会提供一个引用地址,指向堆内存中的值。 浅拷贝:1.for只遍历第一层 2.assign 3. =直接赋值
设计模式:单例,工厂,发布订阅(1)单例模式: 在它的核心结构中值包含一个被称为单例的特殊类。一个类只有一个实例,即一个类只有一个对象实例。 (2)工厂模式: 在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 (3)发布订阅模式: 在软件架构中,发布订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。 说说vue react angularjs jquery的区别JQuery与另外几者最大的区别是,JQuery是事件驱动,其他两者是数据驱动。 JQuery业务逻辑和UI更改该混在一起, UI里面还参杂这交互逻辑,让本来混乱的逻辑更加混乱。 Angular,vue是双向绑定,而React不是 。 webpack 和 gulp 区别(模块化与流的区别)(1)gulp 强调的是前端开发的工作流程,我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让 gulp 执行这些 task,从而构建项目的整个前端开发流程。 (2)webpack 是一个前端模块化方案,更侧重模块打包,我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和 plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。 ajax返回的状态0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了 实现一个 Ajax (写出原生Ajax)如果我想发出两个有顺序的ajax需要怎么做?Ajax 能够在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容,实现局部刷新,大大降低了资源的浪费,是一门用于快速创建动态网页的技术,ajax 的使用分为四部分: 1、创建 XMLHttpRequest 对象 2、向服务器发送请求,使用 XMLHttpRequest 对象的 open 和 send 方法。 3、监听状态变化,执行相应回调函数。 (1)设置请求参数(请求方式,请求页面的相对路径,是否异步) (2)设置回调函数,一个处理服务器响应的函数,使用 onreadystatechange ,类似函数指针。 (3)获取异步对象的 readyState 属性:该属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。 (4)判断响应报文的状态,若为200说明服务器正常运行并返回响应数据。 (5)读取响应数据,可以通过 responseText 属性来取回由服务器返回的数据。
发出两个有顺序的 ajax,可以用回调函数,也可以使用 Promise.then或者 async 等。 JSONP的缺点JSON 只支持 get,因为 script 标签只能使用 get 请求; JSONP 需要后端配合返回指定格式的数据。 跨域(jsonp,ajax)JSONP:ajax 请求受同源策略影响,不允许进行跨域请求,而 script 标签 src 属性中的链接却可以访问跨域的 js 脚本,利用这个特性,服务端不再返回 JSON 格式的数据,而是返回一段调用某个函数的 js 代码,在 src 中进行了调用,这样实现了跨域。 如何实现跨域(1)JSONP:通过动态创建 script,再请求一个带参网址实现跨域通信。 (2)document.domain + iframe 跨域:两个页面都通过 js 强制设置document.domain 为基础主域,就实现了同域。 (3)location.hash + iframe跨域:a 欲与 b 跨域相互通信,通过中间页 c 来实现。 三个页面,不同域之间利用 iframe 的 location.hash 传值,相同域之间直接 js 访问来通信。 (4)window.name + iframe跨域:通过 iframe 的 src 属性由外域转向本地域,跨域数据即由 iframe 的 window.name 从外域传递到本地域。 (5)postMessage 跨域:可以跨域操作的 window 属性之一。 (6)CORS:服务端设置 Access-Control-Allow-Origin 即可,前端无须设置,若要带 cookie 请求,前后端都需要设置。 (7)代理跨域:起一个代理服务器,实现数据的转发 。 dom 是什么,你的理解?文档对象模型(Document Object Model,简称DOM),是 W3C 组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为 DOM。 简单介绍一下 symbolSymbol 是 ES6 的新增属性,代表用给定名称作为唯一标识,这种类型的值可以这样创建, Symbol 确保唯一,即使采用相同的名称,也会产生不同的值,我们创建一个字段,仅为知道对应 symbol 的人能访问,使用 symbol 很有用,symbol 并不是 100% 隐藏,有内置方法。
也有一个方法 所以并不是真正隐藏。但大多数库内置方法和语法结构遵循通用约定他们是隐藏的。 js判断类型判断方法:typeof(),instanceof,Object.prototype.toString.call()等 如何判断一个数组(讲到typeof差点掉坑里)Object.prototype.call.toString() 数组常用方法push(),pop(),shift(),unshift(),splice(),sort(),reverse(),map()等 说一下什么是virtual dom用JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中 当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异 把所记录的差异应用到所构建的真正的DOM树上,视图就更新了。Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。 webpack用来干什么的webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。 写一个函数,第一秒打印1,第二秒打印2两个方法,第一个是用 let 块级作用域
第二个方法闭包
this的指向哪几种默认绑定:全局环境中,this默认绑定到window。 隐式丢失:隐式丢失是指被隐式绑定的函数丢失绑定对象,从而默认绑定到window。 new绑定:如果函数或者方法调用之前带有关键字new,它就构成构造函数调用。对于this绑定来说,称为new绑定。 【1】构造函数通常不使用return关键字,它们通常初始化新对象,当构造函数的函数体执行完毕时,它会显式返回。在这种情况下,构造函数调用表达式的计算结果就是这个新对象的值。 【2】如果构造函数使用return语句但没有指定返回值,或者返回一个原始值,那么这时将忽略返回值,同时使用这个新对象作为调用结果。 【3】如果构造函数显式地使用return语句返回一个对象,那么调用表达式的值就是这个对象。 mouseover和mouseenter的区别mouseover:当鼠标移入元素或其子元素都会触发事件,所以有一个重复触发,冒泡的过程。对应的移除事件是mouseout 。 mouseenter:当鼠标移除元素本身(不包含元素的子元素)会触发事件,也就是不会冒泡,对应的移除事件是mouseleave。 js的new操作符做了哪些事情new 操作符新建了一个空对象,这个对象原型指向构造函数的prototype,执行构造函数后返回这个对象。 js的各种位置,比如clientHeight,scrollHeight,offsetHeight ,以及scrollTop, offsetTop,clientTop的区别?clientHeight:表示的是可视区域的高度,不包含border和滚动条 offsetHeight:表示可视区域的高度,包含了border和滚动条 scrollHeight:表示了所有区域的高度,包含了因为滚动被隐藏的部分。 clientTop:表示边框border的厚度,在未指定的情况下一般为0 scrollTop:滚动后被隐藏的高度,获取对象相对于由 px rem em vh vw之间的区别1、px:相对长度单位。像素 px 是相对于显示器屏幕分辨率而言的。 2、em:相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。 3、rem:相对长度单位。r’是“root”的缩写,相对于根元素的字体大小。 4、vh 和 vw:相对于视口的高度和宽度,而不是父元素的(CSS百分比是相对于包含它的最近的父元素的高度和宽度)。 vue 生命周期vue生命周期是指vue实例对象从创建之初到销毁的过程,vue所有功能的实现都是围绕其生命周期进行的,在生命周期的不同阶段调用对应的钩子函数实现组件数据管理和DOM渲染两大重要功能。
vue生命周期的作用: 它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。 第一次页面加载会触发哪几个钩子? created 和mounted 的区别 mounted:在模板渲染成 html 后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。 DOM操作:获取、增、删、查、改等操作
循环
js中的堆和栈
computed、methods、watch的区别(1)methods:调用方法一定要有()。methods方法页面刚加载时调用一次,结果不会缓存。methods里面是用来定义函数的,很显然,它需要手动调用才能执行。而不像 watch 和 computed 那样,“自动执行”预先定义的函数。 (2)computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值; computed:计算属性可以依赖多个 vue 实例的数据,只要其中一个任何一个数据发生变化,计算属性就会重新执行,视图也会更新(有缓存) (3)watch: 是监听,监听是方法,一旦监听的值发生变化,就会调用相应的方法 methods 是必须要有一定触发条件才能执行,(没有缓存)(点击执行) watch擅长处理的场景:一个数据影响多个数据 v-model是什么? vue中标签怎么绑定事件?答:v-model这个指令只能用在表单元素上,可以用他进行双向数据绑定。绑定事件:<input @click=doLog() /> 说出至少4种vue当中的指令和它的用法?答:v-if:判断是否隐藏; 请说下 vue 组件的优点,以及注册使用的过程?答:首先,组件可以提升整个项目的开发效率。能够把页面抽象成多个相对独立的模块,解决了我们传统项目开发:效率低、难维护、复用性等问题。 使用 vuex是什么?怎么使用?哪种功能场景使用它?答:vue框架中状态管理。在main.js引入store,注入。 新建了一个目录store.js,…… export 。 场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车 vue-router是什么?它有哪些组件?vue用来写路由一个插件。router-link、router-view 你是怎么认识vuex的?答:vuex可以理解为一种状态管理的开发模式或者框架,data中的属性需要共享给其他vue组件使用。状态为state集中放在store中; 改变状态的方式是提交mutations,这是个同步的事物; 异步逻辑应该封装在action中。 vuex有哪几种属性?答:有五种,分别是 State、 Getter、Mutation 、Action、 Module state => 基本数据(数据源存放地) vue-router是什么Vue Router 是 Vue.js 官方的路由管理器,创建单页应用程序:通过Vue.js,我们已经在使用组件组成应用程序。将Vue Router添加到混合中时,我们要做的就是将组件映射到路由,并让Vue Router知道在哪里渲染它们 vue-router有哪几种导航钩子( 导航守卫 )1、全局守卫: router.beforeEach VueRouter中hash和history模式的原理hash 模式:在用超链接制作锚点跳转的时候,就会发现,url后面跟了"#id"(略。。。啊格雷),hash值就是url中从"#"号开始到结束的部分。当 URL 改变时,页面不会重新加载。 History 模式 :history就是我们平时看到的正常的连接形式。利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。pushState 设置的新 URL 可以是与当前 URL 同源的任意 URL。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 5:29:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |