前端笔记1

           1.子组件向父组件共享数据:在子组件中使用$emit('自定义名字',传递的数据) 在父组件中@自定义名字="一个方法" 在methods中定义这个方法

           2.兄弟组件间数据共享的方案:eventbus

数据发送方:bus.$emit

数据接收方:bus.$on

            3.什么是ref引用:ref用来辅助开发者在不依赖jquery的情况下。获取dom元素或者组件的引

每个vue的组件实例上,都包含一个$refs对象,里面存储着对应的dom元素或组件的引用。默认情况下,组件的$refs指向一个空对象。

             4.组件的$nexttick(cb)方法,会把cb回调推迟到下一个dom更新周期之后执行,通俗的理解是:等组件的dom更新完成之后。再执行cb回调函数,从而能保证cb回调函数可以操作到最新的dom元元素

             5.回调地狱:多层回调函数的相互嵌套,就形成了回调地狱。

缺点:代码耦合性太强。牵一发而动全身,难以维护。

大量冗余的代码相互嵌套,代码的可读性变差。

               6.async await

不需要再.then的方式拿到最终结果

注意事项:1:如果在function中使用了await,则function必须被async修饰

2:在async方法中,第一个await之前的代码同步执行,await之后的代码会异步执行

              7.shell常用指令:

dir列出当前目录下所有文件

cd 目录名:进入指定的目录

. 表示当前目录

..表示上一级目录

md hello :新建hello文件夹

rd hello:删除hello文件夹

               8.进程和线程:

进程:负责为程序的运行提供必备的环境 。进程就相当于工厂中的车间

线程:计算机中最小的计算单位,线程负责执行 进程中的程序。线程就相当于工厂中的工人

              9. node.js:是一个能够在服务器端运行javascript的开放源代码,跨平台javascript运行环境

 模块化:在node中一个js文件就是一个模块

在node中,通过require()函数引入外部模块。require()可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块。这里路径,如果使用相对路径,必须以.或..开头

require(“”)

            10.使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块

            11.在node中,每一个js文件中的js代码都是独立运行在函数中,而不是全局作用域,所以一个模块中的变量和函数其它模块中无法访问

我们可以通过exports向外部暴露变量和方法,只需要将需要暴露给外部的变量或方法设置为exports的属性即可。

           12.在node中有一个全局对象global,他的作用和网页中window类似。在全局创建的变量都会作为global的属性保存。在全局创建的函数都会作为global的方法保存。

arguments.callee这个属性保存在是当前正在执行的函数对象

            13.实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个实参

exports:该对象用来将变量或函数暴露到外部

require:函数,用来引入外部的模块

module,代表的是当前模块本身,exports就是module的属性,既可以使用exports导出,也可以使用module.exports导出

_filename:当前模块一个完整路径

_dirname:当前模块所在文件夹的路径

exports 与module.exports区别:

exports:

exports(module.exports).name=“xxx”

exports(module.exports).age=18

exports(module.exports).sayname=function(){}

module.exports:

module.exports(exports不行)={

name:"xxx"

sayname:function(){}

exports只能通过.来向外暴露内部变量  module.exports即可以.也可以{}

                14移动端

fontsize计算:document.documentElement.style.fontSize=document.documentElement.clientwidth/设计稿宽度* 随便一个数(基准fontsize)                   width:设计稿宽度/随便一个数rem

省略号显示:

当单行文本溢出显示省略号需要同时设置以下声明:

1:容器宽度:width

2:强制文本在一行内显示:white-space:nowrap

3:溢出内容为隐藏:overflow:hidden

4:溢出文本显示省略号:text-overflow:ellipsis

             15.display:flex  影响:1.子元素默认横向排列  2.行内元素变成了块级元素     3.只有一个元素的时候,margin:auto自动居中 

             16设备像素比=物理像素/css像素

一张设计稿在移动端布局的时候可以使用1:百分比2:弹性盒布局3:rem布局

<meta name="viewport" content="width=device-width, initial-scale=1.0 (user-scalable=no 这个是允许或者不允许用户放大)">

::webkit-scrollbar{display:none} 滚动条隐藏

              17.弹性盒子

flex-shrink:1挤压   flex-shrink:0

父盒子::::(里面的子元素一起变化)

主轴在侧面:flex-direction:column

justify-content:flex-star/flex-end/center/space-between/space-around 调整主轴上的子项

align-items:flex-star/flex-end/center 调整侧轴上的子项

flex-wrap:wrap 折行

align-content:flex-start 控制折行后行间距/flex-star/flex-end/center/space-between/space-around

子盒子::::

align-self:flex-start/flex-end/center/baseline(与start没区别)/stretch(拉伸:当主轴是横向时高度占满否则宽度沾满)

设置子盒子顺序的时候用order 默认order:0  数值越大盒子越靠后

设置flex:1的子盒子会占满剩余空间

主轴在纵轴的时候不设置宽度 中间部分用flex;1就会三栏布局

column-count:5(显示的列数)  column-gap:10px(调整列间距)column-rule:2px solid red(分割线) column-fill:auto(  列高度统一   auto把父盒子占满)column-width:500px(调整列宽)column-span:all(横跨所有列) break-inside:avoid(禁止盒子内部折行)

em:相对单位,相对于父元素的字体大小 

rem:相对单位,相对于根元素(html)字体大小

                18.ajax

 创建ajax对象 var xhr=new xmlhttprequest()

配置本次请求信息  xhr.open(请求方式,请求地址,是否异步)

注册请求完成事件  xhr.οnlοad=function(){}

把请求发送出去xhr.send()

              19.请求方式get与post:

get:偏向获取的语义化,参数是查询字符串,大小有限制2kb左右,参数位置在地址后面(xxx?后)

post:偏向提交的语义化,参数格式多样,但是需要特殊说明(),理论上没有限制,参数位置在请求体内(send()内)

                  20.混入minix

1.当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行合并,比如。数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先

2.同名钩子函数将合并为一个数组,因此都将被调用,另外,混入对象的钩子将在组件自身钩子之前调用。

                  21.对于数组的响应

Vue 不能检测以下数组的变动:

  1. 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
  2. 当你修改数组的长度时,例如:vm.items.length = newLength

举个例子:

var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的

为了解决第一类问题,以下两种方式都可以实现和 vm.items[indexOfItem] = newValue 相同的效果,同时也将在响应式系统内触发状态更新:

// Vue.set
Vue.set(vm.items, indexOfItem, newValue)
// Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)

为了解决第二类问题,你可以使用 splice

vm.items.splice(newLength)

                        22.webpack 

 template:代表模板用哪个里面的

filename:名字叫什么

inject:<script>标签写在哪里

想要把上一次打包的清除掉的时候  在output内设置clean:true

node.js

包实际上是一个压缩文件。解压以后还原为目录。符合规范的目录应该包含如下文件:package.json(描述文件)bin(可执行二进制文件)lib(js代码)doc(文档)test(单元测试)

commonjs的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具。commonjs的包规范由包结构(用于组织包中的各种文件)和包描述文件(描述包的相关信息,以供外部读取分析)两部分组成 

npm的命令:

npm -v 查看npm的版本

npm version 查看所有模块的版本

npm search 包名 搜索包

npm install/i 包名 安装包

npm remove/r 包名 删除包

npm install 包名 --save 安装包并添加到依赖中

npm install 下载当前项目所依赖的包

npm install 包名 -g 全局安装包(全局安装的包一般都是一些工具)

通过npm下载的包都放到node_modules文件夹中,我们通过npm下载的包,直接通过包名引入即可

npm在使用模块名字来引入模块时,他会首先在当前目录的node_modules中寻找是否含有该模块,如果有则直接使用,如果没有则会去上一级目录的node-modules中寻找如果有则直接使用,如果没有则再去上一级目录寻找,直到找到为止,直到找到磁盘的根目录,如果依然没有。则报错

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值