2021年(初/中级)前端面试看这篇就够了(都是最常问的知识点)

声明:这些只要能够掌握,能够回答面试官70%-80%的技术问题,项目面试问题,下次更新

一、HTML + CSS

1、常用实用技巧

01、定位:

Position:absolute/relative/fixed/static

Static:静态定位;

Absolute:绝对定位, 绝对定位的元素相对于最近的定位祖先元素进行定位。然而,如果绝对定位的元素没有定位祖先,它将相对于文档主体(body)进行定位

Relative:相对定位,相对于自己的初始位置进行定位;

Fixed:固定定位,固定定位的元素是相对于视口定位的,这意味着即使滚动页面,它也始终位于同一位置。

02、盒模型:

Margin:外边距;

Border:边框;

Padding:内边距;

Content:内容;

盒模型的宽:左外边距+左边框+左内边距+width+右内边距+右边框+右外边距;

盒模型的高:上外边距+上边框+上内边距+height+下内边距+下边框+下外边距;

03、垂直水品居中(内容的垂直水品居中和盒子的垂直水平居中)

(1)、内容垂直水品居中:

height=line-height;

Text-align:center;

(2) 、盒子垂直水平居中两种方法:

方法1:

Position:absolute;

Left: 50%;

Top: 50%;

Margin-left: -盒子宽一半;

Margin-top:-盒子高一般;

方法2:

Position:absolute;

Left: 50%;

Top: 50%;

Transform:translate(-50%,-50%);

2、知识点

01. HTML5新特性有哪些

新增了语义化标签如header、footer等

新增了视频(video)音频(audio)标签

新增了canvas和svg绘图

新增了地理定位(navigator.geolocation)

新增了拖拽API     segmentfault.com/a/119000000…

新增了多线程技术web worker和即时通讯技术web socket等

02. CSS3有哪些新特性

增加了transition渐变、animation动画、选择器、阴影box-shadow、弹性布局flex、媒体查询@media等

03. W3C标准有哪些

W3C标准不是一个标准,而是一系列标准的总和;

标准分为三个层面,结构(html)、行为(js)、表现(css)

标准有:

文档类型需要声明(DOCTYPE)

编码格式需要声明

javascript代码需要定义

css代码需要定义

标签名字和标签内部属性名字小写等

04. 常见的浏览器兼容问题有哪些

不同浏览器里面的

标签的外间距和内间距表现不同,解决方案:*{margin:0;padding:0},

图片有默认间距,解决方案:父标签设置font-size:0

05. CSS伪类选择器有哪些

:before 在...之前

:after   在...之后

:active   点击

:hover   鼠标悬停

:first-letter   所有文字当中的第一个

:first-line    所选元素当中的第一行

:first-child   第一个子元素

:nth-child()   获取子元素

:nth-of-type   获取指定类型的子元素

等等几十个

06. 什么是子选择器,什么是后代选择器

表示子选择器,例如 div>span 获取div的子标签span

空格 表示后代选择器,例如 div span 获取div里面所有的span

07. CSS权重的优先级是怎样的

    !important > 内联样式 > id > class > 标签名字

    权重可以叠加

08. 浏览器怎么做兼容

IE浏览器一般使用css hack方式来解决,即在代码前面加上* 、_、 +等符号

谷歌一般在属性前面加上-webkit-来进行兼容

火狐一般在属性前面加上-moz-进行兼容

webpack使用postcss给css属性自动添加前缀,进行兼容

09. 平时是怎么做适配的

通常的方案是通过rem配合媒体查询(@media)来进行适配,

标签或者文本设置大小的时候不设置px而是设置rem,

然后使用媒体查询根据屏幕大小来动态调整rem大小,那么所有设置rem单位的元素都会根据屏幕发生改变

010. rem和em有什么区别

em是相对于父级标签的字体大小来定义的

rem是相对于html标签的字体大小来定义的

011. canvas和svg有什么区别

都可以用来绘制图形,但是canvas是基于js来绘制的,svg是基于xml来绘制的

012. 页面优化有哪些方法

(1)减少 HTTP 请求
(2)减少 DOM 元素数量
(3)从页面中剥离 JavaScript 与 CSS
(4)移除重复脚本
(5)使用恰当的图片格式

13. 语义化的理解?

(1)html语义化就是让页面的内容结构化,便于浏览器、搜索引擎解析;

(2)在没有CSS样式情况下也以—种文档格式显示,并且是容易阅读的。

(3)使阅读源代码的人更容易将网站分块,便于阅读维护理解。

二、JS+jQuery

1、常用实用技巧

01. 数组的常用函数及其作用

juejin.cn/post/701582…

2、知识点

01. js基本数据类型有哪些

基本类型Number 、String、Boolean、Null、Undefined、symbol

引用类型Object

02. JS当中的typeof返回的类型有哪些

number 、string 、boolean 、 undefined 、symbol、function 、object

03. return,break,continue的区别是什么

return 必须写在函数内部,遇到return后函数内部剩余的代码不再执行,直接返回;还可以使用return返回一个值给外面使用

break 跳出循环,剩余的循环不再执行

continue  跳出本次循环,剩余的循环继续执行

04. typeof和instance of 的区别是什么

typeof判断对象的类型,返回值有7种可能

number、string、boolean、undefined、symbol、function、object

instanceof 判断是否是对方的实例化对象,返回值为true或者false

Typeof、instanceof、toString.call()、constructor

05. ==(宽松相等)和 ===(严格相等)有什么区别

== 判断左右两边的值是否一致,但是只能判断值,不能判断类型,也就是说

2 ==‘2’是成立的

=== 既判断值,也判断类型

06. js的强制转换和隐式转换是怎样的

   parseInt,parseFloat,Number 这三种是强制转换

   -=、*=、/=、%= 是隐式转换

07. get请求和 post请求的区别是什么

get请求将参数放在url当中,post请求将参数放在请求体当中,理论上post更安全

因为url长度大小不能超过1KB ,而get请求又将参数放在url当中,所以上传头像等操作不能使用get请求

08. 什么是冒泡和挖洞

当一个子标签触发某一个事件(比如click)后,该事件会从顶级父标签一级一级往该标签传递,这个过程叫做挖洞(捕获)

当找到该子标签之后事件会再从子标签开始一级一级往父标签传递,这个过程叫做冒泡

09. js当中的事件委托是怎么回事

用事件冒泡的原理,自己所触发的事件, 让他的父元素代替执行

010. call , apply 和bind的区别

(1)都可以更改this指向

(2)call,bind后面的第一个参数是指向的对象,第二个参数是往对象传的值

(3)apply后面的第一个参数是指向的对象,第二个参数是数组,数组里面是往对象传的值(arguments   全部参数)

(4)call和apply更改this指向会自动调用,bind需要手动调用

011. jsonP的作用是什么,原理是什么

    作用:解决跨域问题

    原理:动态创建script标签,回调函数

012. cookie , sessionStorage , localStorage的区别是什么

(1)都可以用来存储数据

(2)cookie一条数据大小不能超过4KB ,最多不能存储超过20条,如果没有设置过期时间,那么在浏览器关闭后消失

(3)sessionStorage是会话存储,一条大小不能超过5M,数量没有限制,关掉页面数据消失

(4)localStorage本地存储,一条大小不超过5M,数量没有限制,除非主动删除,否则数据不会消失

013、原型的概念

JavaScript的所有对象中都包含了一个 [proto] 内部属性,这个属性所对应的就是自身的原型JavaScript的函数对象,除了原型 [proto] 之外,还有 prototype 属性,当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的原型 [proto]

014. 什么是原型链?

 一个对象A调用方法的时候,会先从自身找有没有这个方法,如果没有就找自己的原型,看有没有该方法,没有就继续找对象A的父类B的原型,就这样一级一级往上找,称之为原型链。

任何一级找到就直接调用,不再往上找,如果到最后都没找到就报错 例子:a is not defined;

015. 什么是闭包

闭包指的是一个函数可以访问另一个函数作用域中变量

闭包的行成原因:一个函数套另一个函数,而内部的函数返回到函数外面,造成原有作用域链不释放,就会行成闭包。

闭包的作用:模块化作用域、储存变量、封装私有变量;

缺点:因为闭包造成原有作用域链不释放,所以会造成内存泄露;

如何解决内存泄漏:使用立即执行函数;(借助立即执行函数的执行规则,执行之后立即销毁,不会造成内存泄露)

016. 同步异步的区别是什么

同步流程:提交请求→等待服务器处理→处理完毕返回 

一次请求之后必须处理完毕后才能处理后续操作,处理效率较低。(例如B/S模式)

异步流程:提交请求→服务器处理→处理完毕

发送请求后不需要等待,可以继续执行后续操作。

当有消息返回时系统会通知进程进行处理,可以提高执行效率。(例如AJAX技术)

017. ES6语法的新增特性有哪些

(1)let关键字,声明变量
(2)const关键字,声明常量
(3)模板字符串
(4)箭头函数
(5)对象和数组解构
(6)数据类型Symbol
(7)Set集合和Map集合
(8)Promise对象
(9)引入class关键字
Symbol 函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象。可以接受一个字符串作为参数,为新创建的 Symbol 提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分。
Es6当中,函数在谁的范围内调用,函数内部this指向指的就是谁,
Es5当中,谁调用了函数,函数内部的this指向指的就是谁

018. var和let的区别有哪些

(1)可以用var对同一个变量重复声明,但是let不可以
(2)var有变量提升,可以先赋值,后声明。let没有变量提升,只能先声明,后赋值\

(3)let声明的变量 有块级作用域

019. 严格模式有哪些特性(这里说的严格模式一般指的是es6的严格模式)

(1)变量必须先声明 在使用  变量提升没了
(2)严格模式下 删除后的变量不能使用 
(3)严格模式下 函数内部的this指向默认指向的是 undefind 
(4)严格模式下 定时器 延时器内部的this指向的还是window 
(5)严格模式下 函数的参数的名字不能一样
(6)严格模式下 块级作用域当中不能声明函数

020. 函数的防抖和节流

防抖:事件触发并经过一段时间间隔后执行事件处理函数,如果在这段时间内事件又被触发了,那么将重新计时。

节流:事件触发并经过一段时间间隔后执行一次事件处理函数。也就是说不管你触发了多少次事件,在这段事件就只能触发一次。

021. 常见的Http状态码有哪些

1XX:信息状态码
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端 将返回此信息,表示确认,之后发送具体参数信息
2XX:成功状态码
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
3XX:重定向
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
4XX:客户端错误
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的 内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。|
404 Not Found 找不到如何与 URI 相匹配的资源。
5XX: 服务器错误
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

三、Vue

1、知识点

01. Vue常见的指令及其作用

v-text:绑定文本,不能加载标签

v-html:绑定文本,可以加载标签

v-bind: 用于绑定数据和元素属性

v-if:条件判断,为真添加元素,为假删除元素

v-for:循环

v-model:双向数据绑定

v-show:条件判断,为真显示,为假不显示

02. v-if和v-for写在同一个标签会发生什么

v-for的优先级比v-if更高,v-if不起作用

03. template标签的作用是什么

将元素包裹在一起,本身并不会加载到DOM结构当中

04. data为什么必须为函数

确保每一个组件独享一个数据对象,而不是共享一个数据对象  

05. transition标签的作用

  设置过渡效果,里面只能放置一个元素,且必须配合v-if、 v-show(或者动态组件、组件根节点)来使用

如果想要设置多个元素渐变,需要使用transition-group

06. slot插槽的作用是什么,什么是具名插槽

作用是获取组件中间的内容,有Name值的插槽是具名插槽

07. v-text和{{}}相比有什么好处

v-text在网速不好数据返回迟钝的情况下,页面不会出现{{}}

08. computed和watch的区别什么

computed: 计算属性 用来计算结果并返回 有缓存 当数据发生变化时 重新计算 不发生变化时使用缓存数据

watch: 是监听某个值的变化 当值发生变化时 执行相关操作

09. Vue循环的key作用

Key值的存在保证了唯一性,Vue在执行时,会对节点进行检查,如果没有key值,那么vue检查到这里有dom节点,就会对内容清空并赋新值,如果有key值存在,那么会对新老节点进行对比,比较两者key是否相同,进行调换位置或删除操作
可以减少渲染次数,提高渲染性能

010. axios数据请求的特点是什么

1.从浏览器中创建XMLHttpRequests;
2.node.js创建http请求;
3.支持Promise API;
4.拦截请求和响应;
5.转换请求数据和响应数据;
6.取消请求;
7.自动换成json。

012. Vue的核心是什么

数据驱动:ViewModel,保证数据和视图的一致性。

组件系统:应用类UI可以看作全部是由组件树构成的。

013. keep-alive的作用是什么

保持组件存活,即便组件消失也不移除

可以用在首页、购物车和商品详情,保持组件存活;

014. 什么是MVVM

 M  model数据模型,为页面显示的数据

 V  view 视图,为当前页面

VM   viewModel,监听数据变化,用户交互的内容,实质就是一个视图控制器 Controller

015. Vue生命周期钩子函数有哪些(很重要,问vue几乎必问)

beforeCreate 组件创建之前

Created 组件创建以后

beforeMount   组件渲染之前

Mounted   组件渲染以后

beforeUpdate   组件更新之前

Updated   组件更新以后

beforeDestroy   组件摧毁之前

Destroyed   组件摧毁以后

Activated (艾克提未忒特) 组件激活 (配合keep-alive使用)

Deactivated 组件未激活(配合keep-alive使用)

errorCaptured   当子孙组件出错的时候会调用这个函数

016. Vue怎么进行双向数据绑定,双向数据绑定的原理是什么

    使用v-model进行双向绑定

    原理:采用数据劫持,结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter/getter,在数据变动时发布消息给订阅者,触发相应监听回调。

当把一个普通 js对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty() 将它们转为 setter/getter。

用户看不到 setter/getter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。

017. Vue组件之间数据传递的方式有几种,怎么进行传递

    父传子: 子组件通过props方式接受

    子传父:子组件发射一个事件$emit,父组件接受事件以后调用相应的函数

   非父子: 使用一个空的Vue对象在第一个组件的点击事件中,使用$emit方式来发射事件,在第二个组件的mounted函数里面使用$on来接收事件

018. 三种路由传值?

1 在路径后面使用: 声明一个变量,调用路径后面跟一个参数  拿到值的话 this.$route.params.变量名,Route:肉特;router:rou(一声)特
2.使用path来匹配路由,然后通过query来传递参数 , 拿到值要 this.$route.qurey.变量名
3.使用name名来匹配路由,要使用params来传递参数,拿到值的话使用this.$route.params.变量名

019. Vue当中的事件修饰符有哪些?

1.<div @click.once=””>  .once表示点击事件只调用一次
2.<a @href.prevent=’’>    .prevent表示阻止默认事件提交(阻止的是相当于a标签的跳转功能)
3.<section @click.stop=””>  .stop阻止事件传递(阻止冒泡)

020. 路由当中的hash(哈希)模式和history(历史)模式有什么区别?

Hash:url地址后面会跟一个#,地址切换不会导致页面请求
History:地址后面没有#,地址切换会导致页面请求

021. Vue-Router的钩子函数有哪些

(1)、全局守卫

beforeEach 全局前置守卫
beforeResolve 全局解析守卫
afterEach    全局后置守卫
复制代码

(2)、独享守卫  

beforeEnter
复制代码

(3)、 组件内守卫

beforeRouteEnter 组件前置守卫  (该守卫没有this)          
beforeRouteUpdate    路由改变但是组件被复用时           
beforeRouteLeave     组件后置守卫
复制代码

022. Vue当中的状态管理的作用,以及属性的作用是什么

Vuex状态管理是为了统一管理页面所需要的数据,并能够在整个项目当中任意地方来使用这个数据,有5个属性

State:用来存放初始数据

Mutations:同步方法,用来修改state值

Actions:异步方法,需要调用Mutations中方法来修改State值

Getters:计算属性,类似于组件当中的computed属性

Modules:用来管理其他的Vuex对象

一般用来存储用户登陆的token(token表示的是用户登陆的状态,并不是值得用户id);用户id

缺陷:页面刷新时,state中数据会丢失

一般解决方案:

(1)、在app.vue的created方法中读取sessionStorage中的数据存储在store中,此时用vuex.store的replaceState方法,替换store的根状态

(2)、在beforeunload方法中将store.state存储到sessionStorage中。

023. 什么是动态组件?

    <component :is=""></component> 根据is属性的值来决定成为什么组件

024.什么是异步组件?

    路由加载的时候不会立马加载,等到需要使用的时候才加载的组件称之为异步组件

025. 系统修饰符

.ctrl、.alt、.shift、.meta

026. 按键修饰符

enter、tab、delete、esc、space、up、down、left、right

027. Vue项目当中怎么解决跨域问题?

在config/index.js 当中设置proxyTable属性,如果脚手架为3.0以上版本,则需要新建一个vue.config.js文件进行配置
解决跨域的具体方法:juejin.cn/post/703322…

028. Vue项目怎么打包app

1、使用命令npm run build 生成一个dist文件夹

2、使用hbuilder创建一个5+app项目,选择默认模板

3、用dist文件夹里面的东西来替换hbuilder创建的项目里面的内容

4、选择原生app-云打包

029. 怎么解决打包空白问题

1、在vue.config.js中添加字段publicPath后面的值从绝对路径改成相对路径, /改成./

2、如果静态资源在指定文件,需要制定输出路径outputDir:“dist”

3、把路由的历史模式给删除掉

030. vant、element、meiziUi组件库分别有什么区别

vant:主要做移动端商城类项目

element:是主要做pc端网页

amaze:主要做移动端

031. vue全家桶一般都有什么,作用是什么

 Vue-router 路由管理 创建配置路由

Vuex 状态管理 统一管理 页面所需的数据  供全局使用

Vue-cli 用来搭建vue项目

Axios 用来数据请求

032. Vue如何优化首屏加载速度?

(1) 按需加载组件,不一次性加载所有组件

(2) 减少不必要的网络请求;

033. devDependencies和dependencies的区别

(1)devDependencies

用于本地开发,打包时生产环境不会打包这些依赖

(2)dependencies

开发环境能用,生产环境也能用。生产环境会被打包

四、Webpack

1、知识点

01. 模块化分类有哪些

A. 浏览器端的模块化

(1)AMD(Asynchronous Module Definition,异步模块定义) 代表产品为:Require.js

(2)CMD(Common Module Definition,通用模块定义) 代表产品为:Sea.js

B. 服务器端的模块化,服务器端的模块化规范是使用CommonJS规范:

1. 使用require引入其他模块或者包

2. 使用exports或者module.exports导出模块成员

3. 一个文件就是一个模块,都拥有独立的作用域

C. ES6模块化,ES6模块化规范中定义:

1.每一个js文件都是独立的模块

2.导入模块成员使用import关键字

3.暴露模块成员使用export关键字

小结:推荐使用ES6模块化,因为AMD,CMD局限使用于浏览器端,

CommonJS在服务器端使用,

ES6模块化是浏览器端和服务器端通用的规范.

02. export default 和 exports有什么区别

前者是默认导出,每个模块只能有一个,导入的时候需要用 import XX from‘XXX’这种方式

后者是导出,每个模块可以有多个,导入的时候需要用import {XX} from‘XX’的方式  

如果在一个模块中没有向外暴露成员,其他模块引入该模块时将会得到一个空对象

03. webpack的作用是什么?

webpack是一个流行的前端项目构建工具,提供了模块化支持,代码压缩混淆,解决兼容问题,性能优化等特性,提高了开发效率和项目的可维护性。

1. 对代码重新加载翻译。

2. 合并静态资源,减少io

04. webpack的安装命令是什么?

npm install webpack webpack-cli -D

05. webpack当中的development和production有什么区别

前者为开发模式,代码不会进行压缩,打包速度也更快

后者是生产模式,代码会进行压缩,打包速度相对较慢

06. 如何配置webpack的出口和入口

在webpack.config.js当中设置entry字段,该字段用来配置文件的入口,默认为src下的index.js

在webpack.config.js当中设置output字段,该字段用来配置文件的出口,默认为dist文件下的main.js

07. 如何配置webpack自动打包的功能

 A.安装自动打包功能的包:webpack-dev-server

       npm install webpack-dev-server -D

 B.修改package.json中的dev指令如下:

"scripts":{
           "dev":"webpack-dev-server"
          }
复制代码

C.将引入的js文件路径更改为:<script src="/bundle.js"></script>(绝对路径)

D.运行npm run dev,进行打包

08. webpack Loder和plugins区别

loader是文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译、压缩等

plugins 主要是拓展 webpack 功能

09. webpack怎么打包非js文件

下载文件对应的加载器,然后再webpack.config.js当中配置module的语法规则

010. webpack如何打包css文件

下载style-loader 和 css-loader,然后再webpack.config.js当中配置语法规则

011. webpack如何打包less文件

下载less、less-loader、css-loader、style-loader,然后配置语法规则

012. webpack如何打包图片文件

下载url-loader、file-loader ,配置语法规则

013. webpack打包非vue

①. npm init 初始项目

②. 安装webpack及web -cli

③. 配置打包入口(entry)/出口(output)

④. 设置自动打包

⑤. 下载模块加载器,在webpack.config.js配置语法规则

五、微信小程序

01. 微信小程序当中如何获取用户信息

wx.getUserInfo 现在版本更新为wx.getUserProfile

02. 微信小程序如何实现用户登录

wx.login

03. 微信小程序当中如何获取当前手机设备信息,比如品牌、操作系统、蓝牙信息等

wx.getSystemInfo

04. 微信小程序如何实现更新微信版本

wx.updateWeChatApp

05. 微信小程序的页面跳转有哪些方式

wx.switchTab    只能跳转到tabbar包含的几个页面

wx.navigateTo   跳转到不在tabbar里包含的其它页面

wx.navigateBack  关闭当前页面,返回到上一级

wx.redirectTo   重定向,关闭当前面,不能跳转到tabbar里面包含的页面

wx.reLaunch   关闭所有页面,打开到应用内的某个页面

06. 微信如果实现下拉刷新

1.在页面json或者app.json当中配置 enablePullDownRefresh:true 然后在需要监听刷新的页面的js当中,会自动触发函数onPullDownRefresh

2.可以通过微信API-- wx.startPullDownRefresh和wx.stopPullDownRefresh来实现 开启和关闭刷新

07. 如何让页面滚动到指定位置

wx.pageScrollTo

08. 微信怎么进行数据请求,下载和上传

数据请求:wx.request

上传:wx.uploadFile

下载:wx.downloadFile

09. 微信小程序怎么在页面中共享数据

1. 将数据存放在app.js当中的globalData中

2. 使用wx.setStorage存储在本地

010. 微信小程序如何获取自己的地理位置信息

wx.getLocation 可以获取当前的地理位置、速度等信息

011. 微信小程序的生命周期函数有哪些

1. onLoad() 页面加载的时候触发,只调用一次

2. onShow() 页面显示/回到前台的时候调用 多次调用

3. onReady() 页面初次渲染完毕的时候调用,只调用一次

4. onHide() 页面隐藏/进入后台的时候调用

5. onUnload() 页面卸载的时候触发

012. 微信小程序怎么阻止事件冒泡

可以使用catchTap来替换bindTap

bind事件绑定不会阻止冒泡事件,catch事件绑定可以组件阻止冒泡事件

013. 说说你对rpx的理解

不管屏幕实际像素是多少,将当前屏幕分成750rpx

014. 微信小程序有哪些优势和劣势

优势:

1. 容易上手,有丰富的组件和强大的API

2. 用户基础广泛

3. 无需下载

4. 开发成本比app低

劣势:

1. 限制较多,单个页面大小不能超过1M,不能打开超过5个层级的页面

2. 组件样式单一,如果组件不能满足需求,需要自定义组件

3. 依托于微信,无法打包单独的安装包

015. 微信小程序和H5的区别是什么

1. 运行环境不同,微信小程序在微信中运行,h5在浏览器

2. 开发成本不同,h5需要进行各个浏览器的兼容

3. 小程序获取手机系统权限非常简单,h5较为复杂,需要依赖于其它的东西,比如uniApp或者插件

4. 事件绑定、传值、数据请求方式等都不一样

六、Git

01. 平时是怎么进行团队合作的

1. 首先会确定好需求,UI设计师根据需求设计效果图,效果图客户通过后,UI设计师会给前端一份标注图和切图,同时前后端根据需求开发页面和进行服务器开发

2. 服务器接口是后端给的,会给一份开发者文档,里面有各个需求请求接口地址、请求类型、参数和返回值等信息

3. 前端组各个成员会使用git进行代码提交,每天上班时会将最新的代码pull一下,下班前会将代码push上去

02. 如何解决代码冲突问题

1. 首先将自己的代码提交到本地仓库

2. 然后将最新的代码从云仓库拉下来

3. 进行代码合并,如果合并过程当中冲突,手动解决冲突(删除多余的代码或者合并两份代码)

4. 解决完冲突以后,重新提交到本地,最后上传到云仓库就行了

03. 平时使用git版本工具有哪些

习惯使用命令行提交

工具使用过sourceTree , 以及git自带的提交工具

04. git和SVN有什么区别

1. 平时只用了git

2. git是分布式的,svn是集中式的

3. git仓库可以克隆在本地,svn只可以存储在云上

4. git支持离线提交,svn只能在线提交

05. git常用的命令有哪些

1. git status 查看代码状态

2. git add . 保存代码到暂存区

3. git commit -m   保存代码到持久区

4. git pull 将云仓库的代码拉下来

5. git push 上传代码到云上

6. git clone 将云仓库代码克隆到本地

7. git merge XX 合并分支,合并分支的时候只允许在主枝合并

猜你喜欢

转载自juejin.im/post/7042938392174133278