碎知识

forEach、for in、for、for of循环的区别

for循环---编程式
forEach循环---声明式(不关心如何实现)、不支持return
for in循环---key会变成字符串,包括私有属性也能打印出来
for of循环---(value of arr)支持return、不能遍历对象

JS,Jquery获取各种屏幕的宽度和高度

Javascript:

网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth

JQuery:

(document).ready(function(){ alert((window).height()); //浏览器当前窗口可视区域高度
alert((document).height()); //浏览器当前窗口文档的高度 alert((document.body).height());//浏览器当前窗口文档body的高度
alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin

alert((window).width()); //浏览器当前窗口可视区域宽度 alert((document).width());//浏览器当前窗口文档对象宽度
alert((document.body).width());//浏览器当前窗口文档body的宽度 alert((document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin

})

es6编译成es5

1、安装babel核心包
npm install babel-core --save-dev;
2、安装babel的解析器
npm install babel-loader --save-dev
3、解析es6的工具
npm install babel-preset-es2015 --save-dev
创建一个.babelrc 文件
{"presets":["es2015","stage-0"]}

解析es7语法的
npm install babel-preset-stage-0 --save-dev

解析样式
1) - css-loader将css解析成模块,将解析的内容插入到style标签内(style-loader)
npm install css-loader style-loader --save-dev
2) ## less,sass,stylus(预处理语言)
- less-loader less
- sass-loader
- stylus-loader
npm install less less-loader --save-dev

es6模块

es6的模块导入

import * as d from './a.js'

es6的模块导出

export let a = 100;
export let b = 200;

安装webpack(common.js)

1、初始化:npm. init -y
2、安装:npm.install webpack@3.8.1 --save-dev
3、起服务:yarn add webpack webpack-dev-server
4、babel-core 和babel-loader:中心包(什么都不会)
5、编译es6: babel-preset-es2015
6、编译es7:babel-preset-stage-0
7、解析react:babel-preset-react(需要安装react:yarn add react react-dom)
8、编译less:less-loader(记得安装less)
9、编译css:css-loader
10、编译style:style-loader
11、图片:file-loader和url-loader
12、html-webpack-plugin --dev

let HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    enter:'./src/index.js',//入口
    output:{
        filename:'build.js',//打包后的文件名字
        path:require('path').resoolve('./dist')//给你个相对路径,还我个绝对路径
    },
    module:{
        rules:[
            {test:/\.js$/,use:'babel-loader',exclude:/node_modules/},//exclude排除
            {test:/\.css$/,use:['style-loader','css-loader']},
            {test:/\.less/,use:['style-loader','css-loader','less-loader']},
            {test:/\.less/,use:['style-loader','css-loader','less-loader']},
            {test:/\.(png|jpg|gif)/,use:['url-loader']}
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./index.html'
        })
    ]
};

有个index.html的模板,src的文件夹,里面有个index.js
1、package.json 修改script中的脚本

 "scripts": {
    "dev":"webpack-dev-server",
    "start":"npm run dev",
    "build":"webpack -p"
  },

2、配置webpack.config.js
3、npm run build 或者(名字)dev

webpack

webpack-config.js

let path = require('path');//导入path模块,解析路径
let HtmlWebpackPlugins = require("html-webpack-plugin");
//path.resolve('./dist')
module.exports={
   // entry:'./src/main.js', 配置webpack入口的文件
    entry:{main:'./src/main.js',
           main1:'./src/main1.js'},//多入口文件
    output:{//打包之后斍的出口
        //filename:'build.js',生成文件的名字,随便写
        filename:'[name].js',//name会去entry中属性名就是文件的名字
        path:path.resolve('./dist') //path.resolve 解析出一个绝对路径;当运行webpack时候,自动创建一个dist文件夹,将生成js放在这个文件夹下;
    },
       module:{//用什么解析器
        rules:[
            {test:/\.js$/,use:'babel-loader',exclude:/node_modules/},// node_modules中js不需要进行es6到es5编译;排除node_modules
            {test:/\.css$/,use:['style-loader','css-loader']},
            {test:/\.less/,use:['style-loader','css-loader','less-loader']},
            {test:/\.vue$/i,use:["vue-loader"]},
            {test:/\.(png|jpg|gif)$/,use:'url-loader'}//file
        ]
    },
     plugins:[
        new HtmlWebpackPlugins({
            // html 的路径;
            template:"./index.html"
        })
    ]
};
image.png

管道符( | filters中的过滤方法(filters参数 1本项 2传))
reduce参数 prev next index item、
change事件与click事件的区别、
input min type v-model 后 checked没用

四种类数组转数组的方法
1、方法一、 声明一个空数组,通过遍历伪数组把它们重新添加到新的数组中

 var aLi = document.querySelectorAll('li');
    var arr = [];
    for (var i = 0; i < aLi.length; i++) {
     arr[arr.length] = aLi[i]
    }

2、使用数组的slice()方法 它返回的是数组,使用call或者apply指向伪数组
var arr = Array.prototype.slice.call(aLi);
3、方法三 、使用原型继承
aLi.proto = Array.prototype;
4、ES6中数组的新方法 from()

 function test(){
     var arg = Array.from(arguments);
     arg.push(5);
     console.log(arg);//1,2,3,4,5
  }
 test(1,2,3,4);