VueCli4,做了6年前端开发

18 阅读4分钟

css

1,盒模型 2,如何实现一个最大的正方形 3,一行水平居中,多行居左 4,水平垂直居中 5,两栏布局,左边固定,右边自适应,左右不重叠 6,如何实现左右等高布局 7,画三角形 8,link @import导入css 9,BFC理解

js

1,判断 js 类型的方式 2,ES5 和 ES6 分别几种方式声明变量 3,闭包的概念?优缺点? 4,浅拷贝和深拷贝 5,数组去重的方法 6,DOM 事件有哪些阶段?谈谈对事件代理的理解 7,js 执行机制、事件循环 8,介绍下 promise.all 9,async 和 await, 10,ES6 的 class 和构造函数的区别 11,transform、translate、transition 分别是什么属性?CSS 中常用的实现动画方式, 12,介绍一下rAF(requestAnimationFrame) 13,javascript 的垃圾回收机制讲一下, 14,对前端性能优化有什么了解?一般都通过那几个方面去优化的?

开源分享:docs.qq.com/doc/DSmRnRG…

链接1: pan.baidu.com/s/1iqyQAwYZ… 提取码: upxq 
链接2: pan.baidu.com/s/1IHOgPrKC… 提取码: 76yv

下载后放到src下面的文件夹下:

这里写图片描述

第三步、

在main.js引入这两个文件(路径取决你们的路径)

第四步、

正确设置路径

打开Export2Excel.js文件,设置里面的路径,正确引入Blob.js

 现在回到你要用导出功能的组件里,在data里放入tableData变量,这个是存放你表格里的数据,类型为数组,里面存放对象,表格的每一行为一个对象,存入tableData。

举个列子:

如果你的每一行是这样子

这里写图片描述

那么data里的tableData就是这样子(切记,你的表格有多少行内容,tableData里就存多少个对象,对象属性不用变,改变值即可)

 这里写图片描述

第五步、

接下来在methods里写入两个方法,如下:
哪个按钮是导出功能,就调用export2Excel()方法:

export2Excel() {
 require.ensure([], () => {
   const { export_json_to_excel } = require('../../vendor/Export2Excel');
   const tHeader = ['序号', '帐号', '院校'];
   // 上面设置Excel的表格第一行的标题
   const filterVal = ['index', 'phone_Num', 'school_Name'];
   // 上面的index、phone_Num、school_Name是tableData里对象的属性
   const list = this.tableData;  //把data里的tableData存到list
   const data = this.formatJson(filterVal, list);
   export_json_to_excel(tHeader, data, '列表excel');
  })
  },
  formatJson(filterVal, jsonData) {
     return jsonData.map(v => filterVal.map(j => v[j]))
   }

注意上面的方法也有个路径问题,要自己修改:

第六步、完整代码如下:

<template>
    <div>
        <el-row :gutter="24" style="margin-bottom:20px;">
            <el-col :span="24" class="text-right">
                <!--给按钮绑定事件-->
                <el-button type="primary" @click="exportExcel">点击导出</el-button>
            </el-col>
        </el-row>
        <!-- 表格导出1 -->
        <!--给表格添加一个id,导出文件事件需要使用-->
        <el-row :gutter="24" style="margin-bottom:20px;">
            <el-table :data="historyData" border style="width: 100%" id="out-table">
                <el-table-column type="index" label="序号" width="60"></el-table-column>
                <el-table-column prop="date" label="日期" width="150"></el-table-column>
                <el-table-column prop="name" label="姓名" width="150"></el-table-column>
                <el-table-column prop="province" label="省份" width="150"></el-table-column>
                <el-table-column prop="city" label="市区" width="150"></el-table-column>
                <el-table-column prop="address" label="地址"></el-table-column>
                <el-table-column prop="zip" label="邮编" width="150"></el-table-column>
                <el-table-column label="操作" width="200">
                <template slot-scope="scope">
                    <el-button type="primary" @click="handleClick(scope.row)" size="small">查看</el-button>
                    <el-button type="primary" size="small">编辑</el-button>
                </template>
                </el-table-column>
            </el-table>
        </el-row>
    </div>
</template>

<script>
    // 引入导出Excel表格依赖
    import FileSaver from "file-saver";
    import XLSX from "xlsx";
    export default {
    data() {
        return {
            // 导出一、
            historyData: [
            {
                date: '2016-05-02',
                name: '王小虎',
                province: '上海',
                city: '普陀区',
                address: '上海市普陀区金沙江路 1518 弄',
                zip: 200333
            }, {
                date: '2016-05-04',
                name: '王小虎',
                province: '上海',
                city: '普陀区',
                address: '上海市普陀区金沙江路 1517 弄',
                zip: 200333
            }, {
                date: '2016-05-01',
                name: '王小虎',
                province: '上海',
                city: '普陀区',
                address: '上海市普陀区金沙江路 1519 弄',
                zip: 200333
            }, {
                date: '2016-05-03',
                name: '王小虎',
                province: '上海',
                city: '普陀区',
                address: '上海市普陀区金沙江路 1516 弄',
                zip: 200333
            }],
            excelData:[],
        };
    },
    mounted() {
    },
    methods: {
        //定义导出Excel表格事件
        exportExcel() {
            /* 从表生成工作簿对象 */
            // var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"));
            // /* 获取二进制字符串作为输出 */
            // var wbout = XLSX.write(wb, {
            //     bookType: "xlsx",
            //     bookSST: true,
            //     type: "array"
            // });
            // try {
            //     FileSaver.saveAs(
            //         //Blob 对象表示一个不可变、原始数据的类文件对象。
            //         //Blob 表示的不一定是JavaScript原生格式的数据。
            //         //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
            //         //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
            //         new Blob([wbout], { type: "application/octet-stream" }),
            //         //设置导出文件名称
            //         "导出表格.xlsx"
            //     );
            //     console.log("wbout:", wbout);
            // } catch (e) {
            //     if (typeof console !== "undefined") 
            //     console.log(e, wbout);
            // }
            // return wbout;
            this.$confirm('确定下载列表文件?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                this.excelData = this.historyData //你要导出的数据list。
                this.export2Excel();
            }).catch(() => {});
        },
        export2Excel() {
            var that = this;
            require.ensure([], () => {
                const { export_json_to_excel } = require('../../../excel/Export2Excel'); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
                const tHeader = ['date','name','province','city','address','zip']; // 导出的表头名信息
                const filterVal = ['date','name','province','city','address','zip']; // 导出的表头字段名,需要导出表格字段名
                const list = that.excelData;
                const data = that.formatJson(filterVal, list);
                export_json_to_excel(tHeader, data, '下载数据excel');// 导出的表格名称,根据需要自己命名
            })
        },
        formatJson(filterVal, jsonData) {
          return jsonData.map(v => filterVal.map(j => v[j]))
        },
        //查看
        handleClick(row) {
            console.log(row);
        },
    }
};
</script>


**这里分享一份由字节前端面试官整理的「2021大厂前端面试手册」,内容囊括HtmlCSSJavascriptVueHTTP、浏览器面试题、数据结构与算法。全部整理在下方文档中,共计111道**

### HTML

*   HTML5有哪些新特性?

*   Doctype作⽤? 严格模式与混杂模式如何区分?它们有何意义?

*   如何实现浏览器内多个标签页之间的通信?

*   ⾏内元素有哪些?块级元素有哪些? 空(void)元素有那些?⾏内元 素和块级元素有什么区别?

*   简述⼀下src与href的区别?

*   cookies,sessionStorage,localStorage 的区别?

*   HTML5 的离线储存的使用和原理?

*   怎样处理 移动端 1px 被 渲染成 2px 问题?

*   iframe 的优缺点?

*   CanvasSVG 图形的区别是什么?


![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3287366c792240009ca6a8a8a1dc07b4~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771315970&x-signature=%2FnZqtTHKBmLxoJTUlPIP%2B9oOaLQ%3D)



### JavaScript

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://docs.qq.com/doc/DSmRnRGxvUkxTREhO)**

*   问:0.1 + 0.2 === 0.3 嘛?为什么?

*   JS 数据类型

*   写代码:实现函数能够深度克隆基本类型

*   事件流

*   事件是如何实现的?

*   new 一个函数发生了什么

*   什么是作用域?

*   JS 隐式转换,显示转换

*   了解 this 嘛,bind,call,apply 具体指什么

*   手写 bind、apply、call

*   setTimeout(fn, 0)多久才执行,Event Loop

*   手写题:Promise 原理

*   说一下原型链和原型链的继承吧

*   数组能够调用的函数有那些?

*   PWA使用过吗?serviceWorker的使用原理是啥?

*   ES6 之前使用 prototype 实现继承

*   箭头函数和普通函数有啥区别?箭头函数能当构造函数吗?

*   事件循环机制 (Event Loop)


![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/8c564b1ce5554866af4b46968f882235~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771315970&x-signature=Cd%2BO%2F28wCrJQgpBb3rMx%2F91Oy5U%3D)