1. lineheight只适用于块级元素。如果是span标签的,lineheight不会起作用
-
通过flex布局后所有子元素都变成块级元素
-
border适用于一切元素,只是在最顶端是的时候会不一样
-
图片消除下边界可以使用vertical-align然后是bottom来消除
-
Es6语法中,position relative可以是元素浮起来但是没有完全脱离文档流在计算calc时
偏移的部分不用计算在内 -
浮动时,如果元素是行级或者是行快元素只用设置一个,如果都是块级元素则既需要设置
左浮动,有需要设置右浮动 -
通过计算时间可以使用var time = new Date()来计算,然后是time。getFullYears
time。getMonth()+1 time。getDate() time。getMinute() time。getSecond() -
获得时间戳的方法是new Date().getTime
-
数字字符串强制转换成number型可以通过1)*1 2)通过偏移>>>0
-
数组的拼接方法有通过解包的方式…[ ] 把数组分解成一个个元素然后在通过push来加到新的元素中
-
查找数组元素的方法find
-
flex-direction: row-reverse 或者是 column-reverse flex-wrap:nowrap和white-space
:nowrap很像都是不换行的意思。justify-content对齐方式有flex-start,flex-end,center,space-between
space-around。 -
overflow: hidden; // 多行文本超出加省略号
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
font-size: 26rpx; -
可恶意
-
orient 东方
-
对象的字面量的增强写法一般是const obj = new Object()?也可以这样写 obj = { }
-
匿名闭包:(function(){
})()的导入导出,通过moduleA = { 添加一个对象 return a} -
对象的解构{ }
-
common.js的导入导出方法:module.exports={} var a require(‘ ’)
common.js计算是基于node 的环境中才可以运行的才可以解析 -
异步操作: await的返回结果到一定是一个promise对象, 而且必须搭配async()
函数来使用,还有就是try{}catch(){}用来捕获错误最后在加上finally,原理上
就是把异步操作变成同步操作,等待结果返回后在执行函数体内的代码块。 -
异步操作有哪些呢: 定时器, 事件绑定, ajax一般都是异步操作
-
common.js的导入导出 module。exports={ } var aaa = require(‘ ’) 一般用在
node.js中。es6的模式是: export +导出的内容 inport { 和前面导出的字段是一样的}
第二种方式是: export default+导出的内容 inport aaa from ‘ ’ -
数组处理的方法:1) slice 获得结果是数组的元素, 并且原数组不会发生改变。splice是用来
删除数组中的元素的,返回的是删除的元素数组,并且改变原来的数组 2)join方法是将
数组变成字符串通过指定的字符连接 。3)reverse()时间数组的顺序调换 4) sort()是给
数组排序 5) concat()是将两个数组拼接在一起 -
只有通过position: relative后才可以使用z-index relateive定位后虽然脱离文档流但是
还是在原来的位置占位置,只是浮动起来。而且是相对与自身的位移用的是top和left来定
位 -
flex-direction通常和ailgn-item搭配
26.通过绝对定位如果是绝对居中的话可以死这样top,left,bottom,right都为零然后在
margin为0 -
总结文档流 真正脱硫文档流的是fixed和absolute他们不占有位置,而float和transform
是占位置的,relative是占据原来的位置 position:static就是正常的文档流 -
动画是有infinite的,而transtion是没有infinite的,延时效果只能循环一次。
-
动画有一个延时效果。通过animation-delay
-
如果父元素已经设置了flex然后是居中,子元素的块级元素是
31 . 其实绝对定位父元素可以不用设置relative,一般我们使用绝对定位偏多,因为他是完全
脱离文档流的不会占用位置。而且在设置的时候,他会自己浮动到父元素的最上边 -
一般改变类型通过改变类?改变
-
页面间的数据传输是通过json的格式传输的,如果不是需要转换成json的格式。
-
路由跳转后面接的参数是query参数,而且url是字符串里面不能随意的加入空格
如果后面接入参数他会自动的转换为字符穿的形式,调用的是object的tostring方法。 -
通过npm init来初始化产生一个文件package。json文件件,这个文件就是整个包的说明书
npm还可以安装依赖,所有的依赖都是一个个包。通过这个文件展示出来所有安装的包文件放置在
node module中。 -
git工具是版本管理工具,可以下载远程的包通过git clone,下载完还需要安装一些开发时依赖
-
安装npm-dev-server是一个本地服务器。方便开发时更新。
-
使用npm或者使用cnpm,两者是不冲突的,cnpm的两种使用方法。1)临时使用:
npm --registery http://registery.npm.taobao.org +安装依赖的名字
2)永久使用:安装 npm install -g cnpm --registery=http://registery.npm.taobao.org
然后下次使用直接把npm换成cnpm -
每次调用封装的函数时候都要使用this的引用,不要每次都要忘记
-
下次再使用npm安装包的时候直接使用过cnpm来安装包
-
对于时间的处理可以f调用一个moment。js的包
-
在flex布局中,他们默认是换行的,如果想换行必须设置flexwrap属性为wrap,一般在
文字设置不换行中也有这个white-space属性为nowrap -
分类: 内联元素, 内联块级元素, 块级元素
需要注意的是; 内联元素既可以设置padding属性也可以设置margin-left和margin-right属性
只有margin-bottom和margin-top属性不能设置,而内联块级元素和块级元素都可以设置 -
input的表单事件包括change和input事件区别是change事件需要失去焦点时才可以触发。
-
trim函数是用来消除空格的,例如e.detail.value.trim()
-
使用函数节流来控制请求的次数,节约请求资源
-
在函数调用的的时候必须要传参,函数与函数之间通过传参才可以实现两者的通信
-
如果数组的长度为0时他的布尔值就是false不需要再用等式来判断了,可以直接使用
还有就是字符串串如果为空串时也是为false -
shift是删除并返回第一个元素,而unshift是向数组的开头添加一个元素,并返回数组的长度,就是向
数组的开头添加元素,原数组发生改变,返回值是新的数组的长度。 -
数组查找的方法find的使用: 数组.find()括号里面加上一个条件函数,满足添加的元素就会被返回
-
数组,字符串的查找也可以使用indexof来查找,通过返回值的-1判断里面是否有满足条件的元素。
-
npm是用来安装别人编写的包和命令行,同时自己也可以上传,安装方式的不同
全局安装npm install -g 本地安装npm install xxx 或者是npm install xxx -save -dev这样的安装方式可
可以按package。json的devdependency中看到
全局安装的包的路径在node的node-module中,而本地安装实在项目中的node-modules
用法的不同全局安装需要在命令行中执行,而本地安装需要引用require来引用执行 -
es6是浏览器可以解析的,因为有node可以使用common。js的语法,使用webpack来处理
有底层支撑。
54.webpack进行打包生成很多个bundle(包)其实acss也是一个个包,webpack也是依赖于node环境的
webpack -v 等同于webpack --version -
src里面放的都是源码,把src打包进dist,最终发布dist文件,
-
path这个包的resolve(–dirname,‘dist’)可以把两个路径实现拼接
-
npm run build 首先是执行的是的本地的webpack的不是全局的webapck,一般全局有webpack,本地也要安装
webapck,优先使用本地的webapck,脚本 -
开发时依赖,运行时依赖,开发是依赖本地需要–save-dev
-
三种安装npm的方式:1)通过下载源码然后通过script标签引入, 2)通过cdn引入
3) 通过import Vue from ‘ 这个里面是直接从包引入的所以?不用加其他的路径 ’ export default Vue( ) -
npm 安装时如果没有- g则是本地安装, 如果–save 没有-dev则是运行时依赖
npm run dev 本地服务器;npm run bulid -
vue-cli翻译为命令行界面,俗称脚手架,用来快速搭建Vue开发环境及webpack的配置。
-
脚手架也是依赖node的环境中的。而且脚手架时全局安装global -g
-
在命令行中检测的包版本都是全局的包
-
node是可以直接执行js指令的 node build.js
-
js开发服务器, node是使用c++开发的 js即可以在浏览器中执行又可以在node中执行
js–>字节码–>浏览器 js–>二进制代码 -
node为js提供一个运行环境。执行js的方式是node aaa.js 。
-
2.x的卸载和安装 npm install vue-cli -g npm uninstall vue-cli -g
3.x 的卸载和安装 npm install @vue-cli -g npm uninstall @vue/cli -g
下载指定版本npm install @vue/cli@3.10.0 -g
下载的版本是可以覆盖的高版本覆盖低版本的 -
大括号可以随便使用,作用是就是括号内的是一个整体
-
pink :粉色 deeppink: 深紫色
-
父传子 所有的参数都是在props中可以找到,在template中的动态绑定的值是data和computed的值
-
一般tabbar是fixed布局,完全脱离文档流,不占有位置。
-
路径起别名 alias extention 扩展程序,
-
如果是改了配置,需要重新再起启动本地服务。x从下次注意?创
74.asstes: 资源 里面一般放入 img 和css, -
box-size; border-box 规范盒子模型
-
network使用来放置axios的
-
trim_trailing_whitespace 修剪 拖尾的
-
terminate; 终止
-
jsp
-
line-height:必须需要里面有内容才能有效,如果内有内容需要设置height的高度才可以
-
动态的绑定属性,属性包括calss, style 等 class可以实现控制样式,style也可以控制样式,但是style
6是直接控制样式的,可以使用大括号把里面的内容括起来. 调用第三方框架一般需要对他进行封装,不要直接使用 -
jsonp是解决跨越的问题的
-
如果是get请求的则参数就是params:{ } 如果是post请求则后面跟的参数是请求体data: { } request body
-
一个服务对应的ip地址不一样,nginx反向代理
-
如果直接引用的axios的使用的全局的配置,直接通过实例一个axios,这样可以避免多个baseurl
-
promise具有then和catch方法使用来把结果显示出来,如果进行网络封装的话可以使用这种形式把结果
回调出去,使用axios也有then和catch方法用来显示结果,不是这样的axios放回的结果也是一个promise的对象
所以也有then和catch的方法 promise的最终目的就是把返回的结果给回调出来
88.js 是单线程语言,浏览器的内核是多线程的至少包括三个线程,js引擎线程,ui渲染线程,浏览器事件触发线程
ui线程和js引擎线程是相互互斥的
如果js引擎线程执行时ui线程会被挂起,直到js引擎线程空闲时,ui线程会被立即执行
89.什么是回调函数: 函数作为参数传递给另外一个函数。像是一个高阶函数,组合函数
90.封装好的组件可以统一导出现集合在一个index的文件中,import default import { }
的导入方式都是一样的只不过后者需要加上一个大括号 -
如果只有一个插槽的话不要给插槽起名字,如果是多个插槽的话需要用name属性给插槽起名字
92 mint-ui/iview/这些都是一些UI库这一直接调用 -
什么事ui设计师,User interface 主要包括视觉设计,交互设计 ,用户体验,可以比如成一个美女
-
gui就是对界面的色彩图标进行绘制的职位,全称为 图形用户界面设计师
95.template中如果去找数据的话可以在data中或者在props中找 -
这个就是组件树
-
margin : 中的auto只对块级元素管用,img如果想使用auto需要先转换成display: block
-
(resolve, reject)调用resolve的话调用then,调用reject的话调用的是catch方法,如果是
把而直接写进then则不需要再使用catch方法 -
图片设置大小一般只需要设置一个参数就行了,另外一个参数让他自适应
-
滚动的问题不要使用原生的,因为放在移动端的话会出现很多卡顿,使用iscroll或者是better scroll
来解决 -
在设置fixed的时候最好要有top:0 left: 0 right : 0 这样就不会动了,不设置的就会出现一些问题
-
ul>li{站位文字$}*10
-
如果直接传过去的是字符串的可以不需要动态绑定
-
在里面使用的时候,不用加this,只有在script标签需要this 动态的绑定class属性
:class=“{active:true}” -
methods和computed是不一样的,点几事件需要放在methods中,可以绑定class时绑定在父元素
上,如果父元素的 属性没有那么子元素的属性也就没有了 -
停留效果,吸顶效果
-
什么是mock :模拟,就是模拟接口返回的数据,用已有的数据替换返回的数据局,从而实现测试的效果
分为前端对接口的mock和和后端对接口的mock 单纯的前端可以通过fiddler或者是charles -
bulid文件和config文件是在cli2中对webpack进行配置的
-
cube-ui是滴滴团队开发的ui库
-
package-lock可以看安装的依赖的具体版本,还有一个功能是实现,防止重复安装,没有安装eslintic。js
-
创建好的项目需要自己再加上去一个文件editconfig,来规范代码书写格式
-
后编译:应用依赖的包不需要在发布前编译,而是随着应用编译打包前的时候一块编译,减少编译代码的冗余
123.cube-ui安装方式1)vue add cube-ui 2)npm install cube-uiss -
cube-ui是适用于移动端,需求评审,技术评审,和微信小程序很像都有自己封装好的组件
-
数据可能存在不同的表
-
DNS的域名解析
-
其实cnpm就服务器是一个代理,是国外的npm 的一个代理服务器
-
读取本机的IP地址: 在命令行中输入ipconfig然后回车
-
const path = require(‘path’) path.join(__dirname, ‘文件名’) 目的是获取文件的绝对路径
dirname: 目录名
130.数据传输json格式JSONstringfiy是转换成字符串格式,一般数据传输传的是string格式,所以需要转换
传输过后然后需要解析调用json的parse方法 -
path.join(拼接多个路径成为一个路径) path.resolve(将相对路径装换成绝对路径) 两个方法是一样的
-
mock.js.com是mock的官网里面有需要的文档
-
Mock.mock( template ) 根据数据模板生成模拟数据。
-
还有一种引入的形式就是cdn引入 有一个网站: bootcdn里面有很多开源的项目可以引入,不要安装包就可以使用
与npm的区别就是他是直接用script引入的是一个网站 -
xml被用来传输和存储数据 html用来展示数据,xml没有预定义标签,html都是预定义标签
之前服务器返回的就是xml的字符串,现在返回的是json数据。可以直接把字符串转换成js对象 -
ajax: 优点;可以不用刷新页面而与服务器进行通信,没有浏览历史,没有撤退可言,存在跨域问题
SEO不太友好: 搜索引擎优化 第一次源代码是没有这些数据的,所以爬虫是爬取不到的, -
HTTP协议 浏览器和万维网服务器通信的规则,包括请求报文,和相应报文
行 get post delete ?ie=utf-8 http/1.1
头host: atguigu.com
cookie: name=guigu
空行
体 只有是post请求才有请求体
相应报文:
行 http/1.1 200(相应状态码) ok
头 格式和请求头一样
content-type: text/html; charset=utf-8
content-length: 2048
content-encoding: gzip
空行
体 我们想要的内容在相应体中,对响应体进行解析,然后浏览器渲染。
- 如果npm先安装包之前先去npm init初始化产生一个package。json文件,然后再去安装一个包
- 不同包创建对象的形式不太一样,有的需要家new,有的不需要,创建对象和创建实例是一个意思
- express就是搭建服务器的一个框架
- 安装包时如果没有加后缀的话,都是本地安装
- –yes 也可以简写成 -y
- npm install -g cnpm --registry=https://registry.npm.taobao.org
- 建议node最好安装在c盘的默认路径下
- 载cmd界面中, 退出node.js 运行环境, 连续两次按Ctrl+c 或者 .exit 回车
- sytle标签里面是写样式的, style标签可以放在head标签中也可以放在其他的位置,随便放,script标签要放在
html元素的下面 - readstate是xhr的属性, 表示状包括0 ,1,2,3,4 当readystate的值为4时3表示请求结束
对应返回不同的相应状态码200,401,403,404,500 在200-300之间表示请求成功 - node有很多内置的模块,所以不需要引用,比如http模块,express是其他的模块
- 响应投中设置的编码和响应体中设置的编码要一致utf-8
- 浏览器是服务端,而node是服务端
js在node环境中编写服务器 - 模板字符串的好处可以在字符串中添加变量,以前的字符串需要通过字符串和变量之间需要通过
+号连接,模板字符串就省略了这一步骤语法是${ } - 响应状态码是后端人员自己规定的按照标准在node中只有执行完res。end()方法后才会返回响应状态码
要不然前端一直是pending的状态
153.上面的图标也会发送一次请求,所以要过过滤掉 - supervisor自启动工具,用supervisor代替node命令 也可以使用原来的node来执行js文件 cnpm也是全局安装安装cnpm直接在百度cnpm
- 如果是全局安装的可以直接在命令行中执行
- node.js是common.js的模块化的一个实现, common.js就是一个标准
- node的模块包括核心模块和自定义模块
核心模块(内置模块 )例如: http模块 fs模块 URL模块是可以直接引用的 - commonjs暴露方法的两种形式1) exports.sum() const sum = require('路径)这种方法适合暴露多个
比下面的方法多一步不是直接引用的暴露的对象
2) module.exports=obj 这种方法适合暴露出去一个 引用的直接就是暴露的对象
159.声明函数的方式: const get = function () {
console.log(‘我是输出的数据’);
} 至少三种形式,但是是在不同的场合,如果前面有const 后面一定有等于号
一般使用module。exports = 【】导出如果是个对象的话,不用加括号,如果是很多个东西,可以放在
一个对象中,导出时对应的字段也是一样的 - 自定义模块就是我们项目中的node_modules中的文件模块,里面有index.js通过这个js文件暴露出来
一些模块的方法属性,我们引用来使用,下载的全局的模块没有放在这里 - 使用webstrom IDE编辑器的好去就是不用保存可以自动保存
- 通过修改main的入口改变导出的文件的名字
- commonjs一般规范包目录包含这些文件:package.json bin lib doc
npm 是世界上最大的开放原代码的生态系统 - 一般的包都有自己的对应的官网。里面有对应的使用文档, 有一些则是在github中给予介绍的在
github中有对应的的使用说明
165.es6 的写法有let cons块级 这两个有块级作用域 const定义常量
if(true) {
var a = 3
}
console.log(a); 可以打印出来a 如果是const 则是a is not defined
模板字符串 对象中属性的简写 和方法的简写
const obj = {
name,
run() {
console.log(`${this.name}在跑步`); 对象中的this.name this就是这个obj这个对象
}
}
箭头函数的this指的是上下文对象
-
async和await是和promise一同使用的 用来处理异步操作 ajax 这个是es7的语法 7表示2017
-
使用回调函数来处理异步操作,把异步操作的数据传输出来
-
其实promise就是通过回调函数的方式把结果回调出去,原理还是回调函数
-
async可以理解为申明一个异步function 让这个方法变成异步
而await用于等待一个异步方法完成
async定义的异步方法return的诗歌promise对象
使用async 和await处理异步变得很简单, await等待一步的结果返回后,然后在执行下米娜的语句
async是放在function之前的是用来声明的用的
await test()放回的就是那个异步结果, 可以用一个变量来接受
dir : 目录 dirname: 目录名 directory 目录
fs.stat 检测是文件还是目录
mkdir: 创建目录
writefile:创建并写入文件, 不会重复了则会替换其中的文件
appendfile: 追加文件 创建文件并追加文件,如果成名了则会追加在后面
readfile: 读取文件
readdir : 既可以读取文件夹又可以读取文件,然后放在一个数组中
rename: 重命名
rmdir: 删除目录
unlink: 删除文件
169.我们使用的对象的方法都是别人声明好的,需要传入什么参数都是规定好的,一般回调函数几十把
里面的结果输出
所有的这些回调函数都是必填得,其中的options是可选的参数:顺序不能变 -
现在使用链式表达的很多then,catch ,原来放在里面的回调函数是一起捕获成功
或者失败的 -
fs 里面的方法都是异步的
if(var i = 0 ;i<3; i++ )执行到最后i的值是3, 最后停止的位置是再i<3 -
采用递归地方法来处理异步操作,因为递归地操作只有执行完当时的操作后才会调用自身,确定就是
代码的可读性差 -
处理异步操作,await的外面第一个函数头加上async
-
如果是在对象里面的可以使用es6的简写main() { } 如果是在外面定义函数需要加上
function 这种定义方式有两种形式。一种是有等号的,await必须用在async定义的异步函数中。 -
自己用node。js搭建一个web服务器(网站服务器),世界上主流的web服务器有apache ngnix,lls
-
字符串拼接时两边必须大都是字符串,可以用空的字符串来代替。
-
如果对象的属性是一个变量,需要加上一个中括号来把属性放在里面,
-
封装方法时需要注意引用路径的问题,必须是相对于引用的地方
-
buffer对象调用tostring转换成json的字符串,其实实行上就是字符串,只不过可以使用json的方法
来操作字符串, 然后json.parse(转换成对象)最终目的就是把所有的数据转换成对象。 -
使用promise时必须使用resolve方法。
-
私有方法就是不需要暴露的方法。
-
es6 的导入导出,导入的时候必须是和原来的字段是一样的,而且加上一大括号个,export后面直接接导出的内容
所有的代码必须亲自实践之后才会发现问题
想要测试必须放在浏览器中,只有浏览器能够识别es6的导入导出,在终端中只能识别commonjs的语法 -
路由值得是根据不同请求的URL,处理不同的业务逻辑。
-
分为后端渲染和前后端分离,前后端分离,后端只用写接口就可以了,后端渲染返回的是一个完整的
html页面 -
什么是静态web页面:就是所有的内容都是写死的,动态页面就是所有的数据都是通过动态绑定的
-
pc端一般都是后端渲染,移动端是前后端分离,后端渲染有利于seo优化
现在移动端一般是前后端分离:单页面复应用:模块化 比如vue react 好处是请求速度快
seo优化意思是: 要给seo搜索引擎看 -
get 从指定的资源请求数据(一般用于获取数据)//主要用于增加数据
post: 向指定的资源提交要被处理的数据(一般用与提交数据)//主要用于显示数据 -
在浏览器中通过刷新或者是url回车的方法都是get请求,登录一般是post请求
-
使用express这个框架 在实例化的时候,new的关键字可以写也可以不写
-
测试post请求在浏览器中不好执行,可以下载一个postman来测试
put : //主要用于修改数据,在浏览器中也是没法访问,
delete:// 主要用于删除数据 -
什么事二级目录;什么是三级目录 多及目录
-
自己写端口号时最好差偶偶
193.fs。readfile读取的是字符串,需要进一步转换 -
就是拦截ajax请求到mock里面
-
axios的无论哪种方式发送请求,接受的形式都是在then中捕获的
-
启动本地服务的时候url可以的loaclhost可以不用写
-
同步方法读取数据可以直接放在变量之中,不用再写回调函数
-
必须是json的字符串才可以调用JSON.parse() 方法子转换成,如果是普通的字符串可以通过json5
转换成对象 -
json5就是json的一个扩展,增添了一些功能,可以直接以对象的形式来存储json字符串,json对象就是
json字符串, 以前的传输方式是xml的格式,比较规整,格式要求严格,app。send(里面必须是buffer或者是字符串
不管是哪种字符串)
200 get请求没有请求体,post有请求体,在原生的ajax中通过xml。send(放在这个里面)
而请求体参数不是url参数 请求体一般用与提交数据如这些admin password这些。 -
buffer可以直接转换成对象通过json5。parse()
-
json5与json之间可以相互转换的
-
使用vue框架导入的数据如果是json字符串的话会自动转换成对象
-
props: 中的值可以不用写default这个属性
-
解构赋值 const{ } = res.data
-
methods嗯嗯对象中必须是完整的函数格式,对象中不能直接引入函数,在生命周期函数中
可以直接引用函数。 -
一般的方法都是放在methods中,create中用来引用
-
js之前只能执行在浏览器上面,后面想到js开发服务器。然后就有了node是js有一个运行环境
不需要服务器了,node使用C++开发 -
全局安装的包在打包是不会一块打包进去,所以全局安装的都是一些工具,axios是本地的包
210 .所有自己封装的函数倒要写上return,要不然会报错 -
组件的开发模式,如果需要暴露出来的就可以使用插槽,如果不需要暴露的小组件隐藏在里面
-
如果是流式布局的话,里面每个元素的高度是和最大的元素的高度是一样的而且每个高度都是一样的
-
当设置绝对定位时 ,子元素就脱离了父元素的约束,所以一般要加上right和left来来约束子元素。
-
热更新不是很及时,可以自己去点击,子传父通过自定义事件this。emit(事件名, 参数)
-
switch方法的使用: switch(index) {
case 0:
this.currentIndex = ‘pop’
break; //结束当前循环
case:1
this.currentIndex = ‘news’; break;
} -
组件创建的时候,dom还没有挂在,浏览器只是执行了js文件,可以使用mounted?生命周期函数
-
父组件可以访问子组件的属性当时需要,通过$refs,在给组件绑定事件时,需要加上native
属性,才能绑定,不要不可以绑定,不需要再通过字传父来传输数据。 -
动态的父元素传输子元素,如果不加冒号的话,默认里面的元素都是字符串, 只有里面加上冒号才可以ni认为的传输的数据,
如果只是想传输一个简单的字符串的话可以不用加冒号。scroll的滚动需要加上probetype属性为true才可以
监听到滚动。 -
scroll的组件必须要设置高度才会起作用。
-
v-show里面可以使用绑定true或者是false,如果是其他的东西,需要在data中注册才会被识别,
不然会报错的。 -
使用scroll的时候在请求到数据之后需要在成新在重构一次数据的高度,调用scroll的refresh方法,
这样得到新的高度。数据是请求到了但是问题出在图片还没有在页面中显示,图片还没有加载完成,
所以需要监听图片的加载,原生的js监听 img.onload = function() ,但是在vue中已经封装好了一些方法 -
普通插槽:slot里面也可以设置默认值,当没有传时。模板就起到作用了
巨名插槽使用: 就是有名字的插槽有slot和name属性,一般使用的是巨 名插槽 -
argument: 参数;debounce;防抖函数 节流函数都是一样的,都是为了减轻服务器的压力,
减少请求的次数,不经在请求中可以用到在,多次没必要的执行过程中,可以使用。 -
如果定时器还在等待中还没有执行的话,如果被cleartimeout,name这个定时器就不会执行了
在规定的时间里才可以执行。变量声明注意点,如果是变量的话必须用let而不是const,不然会报错 -
函数执行后,里面的变量会在函数栈中销毁,如果不想销毁的话,可以在外面声明变量,在外面有引用
-
debounce就是设置定时器,如果没有在规定的时间里面没有执行的话,就会被销毁
-
改变函数是谁调用的可以使用apply()声明函数是谁调用的。
-
当数据全部到了,再去执行finishpullup
-
大于号的优先级打击等于号
-
通过路由跳转的页面都会销毁掉,不想销毁的话可以router-view外面加上keep-alive标签
-
封装的组件可以重复调用,每次冲锋衣调用一个组件所产生的数据都不是一样的,这里有个误区
不要把最终的源组件搞混了,这个就是单页面复应用,每次调用都生成一个新的组件 -
utf-8: 万国码 unicode编码console。log(\n加上unicode编码)
 表示空格;当时用来比较两个值时,如果值得类型不同时,则会自动进行转换,将其转换成相同的
类型数据。,然后在比较。大部分都会转换成数字 “1” 1 =》true
true == “1” 两者都转换成数字1了 undefind衍生字null 所以undefined == null 结果是true
NaN不和任何值相等包括他自己本身都是false
对于他的处理函数是isNaN(b)如果结果是true则b是nan -
可以使用&&相当于使用if
-
===表示全等,不同的是不会做类型转换,“123” ===123结果是false不会做类型转换,
235… 条件运算符也叫三目运算符;相当于if语句 ? :
赋值的等于号的优先级很低 三目运算符可以用来比较算个数的大小或者是两个数的大小。
空字符串会进行类型转换转换成布尔值为false
用逗号同事声明多个变量 var a,b,c -
运算符的优先级 或 || 第一个为true时则直接返回第一个值,&&如果第一个为true第二个也为true
则返回的结果是第二个值
与的优先级高
在js中有一个运算符优先级的表,在表中如果越靠上则优先级越高越先计算。优先级一样则从左往右一次算
赋值的优先级最低
与比或高比三目运算符高 -
在axios中的params的参数就是query的参数,而在vue中的路由参数具体问号接的query参数,
动态路由接的params参数
函数套函数不需要再传递参数,有的是需要的 -
router-view也是一个组件,如果直接被keep-alive里面,很多组件都会被缓存,当通过点击是会实现
跳转,不会销毁,而push只是提供一个方法,可以返回的方法,push和共匹配使用
keep-alive有exclude属性排除缓存的组件 exclude = “组件名” -
concat可以实现连个数组的拼接 , map数组加工厂map方法里面只需要加上一个回调函数,只有一个
参数, 对数组过滤通过filter函数可以抽象的想想成一个筛子, 里面也是只用传一个回调函数。
reduce就是对数组进行汇总的,find数组查抄某个元素,和mapfilter一样都是只用加一个回调函数,放回
满足条件的第一个元素。indexOf放回指定元素的索引值,如果没有测放回-1,他的功能和includes是一样的
indexOf也可以用在判断字符串 -
使用const如果没有再次赋值都是合法的
-
scope: 作用域一个变量作用的范围。
全局作用域: 页面打开时创建,在页面关闭时销毁。在全局作用域中都有一个全局对象window,他代表一个
浏览器窗口,他由浏览器创建我们可以直接使用。所全局变量都作为window的属性
var a = 3 window.a
如果找对象的属性如果找不到结果是undefind 如果直接找一个变量找不到就会直接报错。
创建的函数都会作为window都会作为他的方法保存func() window。func()两个是一样的。
使用var声明变量,会在所有代码执行之前会被声明,所有的变量都会被提前,
创建函数有两种方法,其一是函数声明,其二是函数表达式,表达式就是有等于号的
变量和函数是两回事 函数声明提前,变量声明提前,所以在函数声明前就可以调用函数
函数表达式的声明会被提前,但是没法被调用
全局作用域的变量都是全局变量
函数作用域
调用函数时,函数作用域创建,执行完毕后函数作用域销毁,
当在函数作用域中执行变量时采用就近原则 如果想跨级访问采用window访问全局的变量
alert()都是内置的一些方法。都是window调用的
- 使用工厂方法创建对象就是直接给new Object() 做了一个封装,然后通过传参来给空的对象赋值
- 构造函数: 构造函数就是普通函数,只是调用的区别,前面多了一个new Person()
构造函数是为了创建一个行的
function Person(name, age ,gender){
this.name = name
this.age = age
this,gender = gender
this.sayhello = function() {} //这个是在函数中是赋值,和对象的属性有区别。
}
var per = new Person() 我们称per为额person的一个实例
Function Vue({})) {
根据这个对象进行操作,传的参数是一个对象
}
new Vue() //创建了一个Vue的实例,本质就是一个构造函数 - instanceof 判断是不是一个实例 和typeof很像
如果使用person创建实例所有的结果都是obj - overflow隐藏的部分不会占用位置
- 在设置span时,他们是以最高的那个元素的基线为基准
- 判断一个对象是不是空的对象: Object.keys(对象).length === 0 ,判断对象属性的个数。
250 :null表示空, 先判断如果没有数据就不用显示, 用v-if来判断 - 在设置lineheight时 ,图片也是可以设置行高的,但是需要注意的是,他们的行高是以最高的元素的
基线为对其方式,如果一行中有的元素不一样高,尤其是里面有图片他们一图片的底线为对其标准
可以设置浮动,那么他们就各自为王
252… toFixed用于保留小数点后的个数
-
使用better-scroll不会出现滚动条 使用它的注意点是一个要设置固定高度,还有就是设置overflow
把漏出来的隐藏掉 -
v-if 的本意是只有在什么的条件下显示
-
字符串的长度是可以计算的方法很简单,。length 和数组的计算方法是一样的
-
传进来一个数据首先需要先看这个数据有么有值在来决定去显示不显示。v-if判断
-
border-collapse使用去除单元格的外边距,使外边距为0 ,使用表格时他有一些内置的属性
比如文字是上下居中 使用table里面的单元格文字默认是左对齐 -
rate: 评论,比率
-
或运算与与运算的区别,如果是或运算的要正确的那个,而与运算的要错误的那个,或运算
如果第一个是正确的的则不再执行,与运算第一个如果是错误的话,则不再执行。
与三目运算符还是有区别的,三目运算符如果没有这个元素就直接报错了 -
方法里面也是可以定义方法的Aa() { function ac() {
这样也是可以的;;;;其实对象的方法和函数是一样的,但是注意的是调用函数时就不能再调用的函数
里面在去声明函数了
}}
使用箭头函数的好处就是不用再去写function,而且箭头函数是一个匿名函数
函数调用说明函数是使用好的,不可以改变的
定义的函数,必须需要使用才能被调用 -
如果一个元素设置了float他本身还是占据位置的,但是其他元素如果没有设置float,
name其他元素就要给他让位置 -
mixin 的混入就是把内容的公共的部分给抽离出来。
-
生命周期函数胡简介: create在执行时组件还没有被挂在开始获取数据,mounted在执行时,可以
拿到dom但是不一定所有的数据都拿到额,因为里面有些数据比如图片还没有拿到,3.在数据请求完后
传入数据,此时组件开始渲染,大师还是需要一定的时间的,js线程是单线程,渲染线程就不一定是单线程
可能里面也是一些异步操作。updated函数,所有的数据都完成了,但是缺点是每次刷新都执行一次
过于频繁, 在数据传输过去后,渲染完成,他们会回调一个方法,this.$nextTick(() =》 {})
里面是一个回调函数,执行这个回调函数。
在找数据时可以先思考在那个模块中去找,这样方便定位 -
this$refs.通过这个是可以拿到子元素的数据的,同时也是可以去修改这里的数据
-
把字符串变成数值型可以直接*1 或者使用内置函数,parseInt() 或者是parseFloat()
-
hack做法:就是一些巧妙的做法。。
-
一些地方警告说明一定有问题,需要给解决掉,不然后面会出问题
-
最好使用全等来判断, 全等就不会进行类型转换了
-
在自定义事件的时候不用把参数也
写进去,直接声明函数时写为参数
只有在自定义事件不用传,本事调用事件还是需要传的 -
frontend:前端backend:后端;
vue.use() 其实就是安装插件, 使得vue的原型就有了一些全局的属性。每一个实例就有一个
就有一个这样的属性。。。 vue.propetype.$store = store 每一个实例就有这个属性,且属性值就是那个
生成的vuex实例。
state。mutations
additon subtraction 加减法 ,
vuex的核心概念 getter就计算属性action异步操作 module 模块 state就相当于data、
state:单一状态数single source of truth,:就是把所有的数据放在一个store里面这样就方便管理
和后期的维护,当vuex在注册挂在时源码内部就会创建原型的属性。
mutations: {
}
getters :{ } // 计算属性:当模板的数据需要一定的变化在使用就可以在计算属性中定义,
其实计算属性就是属性,在模板中使用计算属性时就不用再加上括号了
mutations的传递参数和自定义事件很像,payload,
自定义事件在书写时一定不要忘记写了语法糖,
mutations:转变 在这个里面修改的数据state是可以直接改变的
item in Array item是数组元素 而index of Array index是指针
mutions的设计原则处理的事情尽可能的单一一点。
- 子传父时传输的参数是第一个:aa = “123”aa才是传输的数据
- recursive: 递归
- 在其他组件中的任意位置是可以随意访问到Vuex的数据的
getters是相当于计算属性,引用方法时不用加括号
计算属性的方法里面一定要有return才可以,
在箭头函数中一是如果只有一条代码则只用这么写,且代码的返回值就是那个代码,不用写return
- 使用a的href也是可以相当于router-link的
275.组件的名字最好是大写, - 对象中的箭头函数不是匿名函数,也是需要名字的render: h =》 h(app)
等价于 render(h){
return h(app) //这里的h是一个回调函数
}
vue-cli 跑项目使用npm run dev npm start都可以 - typora:编辑器
《br》 多出来一个空行 - 如果是history模式前面就不会多出来一个/# ,用a标签是可以代替router-link标签的
如果是在全局注册的 - 如果组件的属性值是布尔值,且值为true则可以使用简写形式
- 知识回顾: 动态路由的两种形式,一种是params这种计较简单,直接在到后面接上params参数就额可以
获取的形式是:$route.params.id 二种是query的形式,push后面接上de是一个对象包括path和query
query也是一个对象,路由配置
不用加query,获取的形式和params的形式是一样的。
- 允许跨域问题是在服务器端设置的access-control-allow-origin
280 medium: 中间的 - button / submit / reset reset也是一个重置按钮
- button标签是行快元素
下一页
其实icon的本质还是class的类icon也就是相当于类,默认icon是放在前面的。
如果设置属性值是false必须需要填,需要动态绑定才能被识别
href=“http://www.baidu.com” target="_black" :出现一个新页面
24是因为是2364的公倍数
可以直接在里里面设置类,和我自己设置的类是一样的
push相当于浮动
列表,表格, 表单
v-model=“”是双向绑定。
在表单中,name和value两个组成了query参数
表单里面只有form和input input的type属性可以决定是什么类型,
text password number button submit reset radio checkbox
input的时间有input和chang事件change只有在回车才会触发,input键盘输入时触发
label 标签和是和表单控件搭配使用的,其实就是input, 他和input关联后,当用户点击这个标签后,
浏览器就会自动聚焦在这个表单控件上,但是前提是需要关联在一起才可以 ,所以input标签需要设置
id属性, 他和span标签是差不多的可以代替span使用 ,但是这在这种情况下
input的时间有onfocus onblur 在vue中使用直接语法糖去掉on
最主要的是一定要学会自己去看文档,而不是去看视频,
h1:after
{
content:url(logo.gif); //伪元素有::first-line :first-letter :before :after
}
父子的选择器有直接加空格,或者是p > i 这样也是父子选择器
283 .form是表单。里面包括很多个表单元素,表单元素有input textarea button 其中input又有很多类型,里面有很多属性,name id type value placeholder namvalue是搭配使用的 决定是radio的是nam属性-
escape: 对字符串进行编码
-
break用于跳出switch和循环语句, 但是值得注意的是,break只是结束最近的那个起作用。
continue 与他恰恰相反,contine是用来跳过当次循环
i++ 等同于 i = i + 1 所以for循环中只能使用let不能使用const
函数对象也是有方法的,之前执行函数是全局对象是window ,执行函数是obj
call() apply() 如果有实参执行的对象是第一个对象,第二个参数是函数的形参,如果有的话
这俩个也是有区别的。就是传实参的形式不同,
argument: 实参调用函数,浏览器会传递一个隐含的参数,上下文对象this 含有一个就是类数组对象
是类数组对象但是不是数组是对象。。。但是方法和数组是一样的,所有传递的实参都放在了arguments中保存
判断一个对象是数组函数数值型,有相中方法 1) 调用对应的isArray() 和isNaN()
2) 通过instanceof 来判断
什么是实参
每一个函数解析器都会向他添加一个属性prototype, 但是只有构造函数有意义
之前的this. b u s . bus. bus.on() this.$bus这个拿到的是全局的vue实例所以就可以实现全局的通信
创建数组对象的四种方法: 前三种: new Array()不加参数, 加入数组的item ,加入数组的长度
最后一种通过数组对象字面量 注意数组实例?不用加new关键字
创建数组对象的一个方法:Array(10).fill(‘1’) 意思这个实例数组的每个元素就是1 ,可以使用这用方法自己去造数据
牛客网和菜鸟教程刷题
- 写blog 的地方有csdn,博客园, 也可以自己搭建一个服务器去创建一个页面来写