- 博客(32)
- 收藏
- 关注
原创 Node操作mysql
使用 delete 语句会真正删除数据,保险起见,使用标记删除的形式,模拟删除的动作。即在表中设置状态字段,标记当前的数据是否被删除。前后端分离推荐使用 JWT(JSON Web Token)认证机制,是目前最流行的跨域认证解决方案。服务端渲染推荐使用 Session 认证机制,不跨域的方式。
2024-04-01 14:18:44
730
原创 Webpack知识梳理
1. 常用的 loaderstyle-loader:将CSS添加到DOM的内联样式标签style里css-loader:允许将CSS文件通过require的方式引入,并返回CSS代码less-loader:处理lesssass-loader:处理sassfile-loader:分发文件到output目录并返回相对路径url-loader 和 file-loader 类似,但是当文件小...
2020-08-07 11:08:15
166
原创 前端面试查缺补漏
1. AJAX相关知识点AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。ajax文件上传(提交):1.serialize() 方法:序列化表单值,创建 URL 编码文本字符串。2.封装FormData 对象,直接用$.ajax提交。FormData 对象可以把form中所有表单元素的name与value组成一个queryString,提交到后台,在使用Ajax提交时,使用FormData对象可以减少拼接queryString的工作量。var form
2020-08-07 11:06:30
243
原创 前端知识梳理与总结(四)--面试常见问题之JS算法
1.写一个简单的函数,要求返回一个布尔值,指明字符串是否为回文结构。function isPal(str) { str = str.replace(/\w/g, '').toLowerCase(); return (str == str.split('').reverse().join(''));}2.数组扁平化(将嵌套的数组展开)循环递归function fla...
2020-08-07 11:05:42
205
原创 Vue查缺补漏
1.SPA页面SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。keep-alivekeep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 。...
2020-08-07 11:04:47
152
原创 js部分知识
1. js刷新当前页面reload() 方法:location.reload();reload()方法用于刷新当前文档。reload() 方法类似于你浏览器上的刷新页面按钮。replace() 方法:window.location.replace("http://www.runoob.com")replace() 方法可用一个新文档取代当前文档。页面自动刷新:代码加入<...
2020-08-07 11:03:58
99
原创 Nodejs学习总结(六)Path路径模块(必懂)
最近初步把Nodejs学习了一下,也做了一个小型的多人评论博客系统,这个项目关注于nodejs及express,mongoose的一个整合,对于页面的交互及后台的搭建是非常重要且涵盖面较广,想要查看源码的之前去我github上下载查看即可。1. Path路径模块2. nodejs中的其他成员...
2020-07-12 10:25:44
196
原创 Nodejs学习总结(五)mongoDB的使用
mongoDB是非关系型数据库,操作方便,动态的生成各种数据。概念:上图中的qq,taobao可以理解为不同的数据库,qq里面的users,products可以理解为关系型数据库中的各种表,这里叫集合。user里面的数据可以理解为是各种表记录,在这里为多个文档,每一条记录可以称为文档。下面的代码详细说明了用nodejs来操作数据库的方式。const mongoose = require('mongoose');const Schema = mongoose.Schema;mongoose.
2020-07-08 14:24:45
157
原创 简单易懂:package.json和package-lock.json的区别
npm 5以前是没有这个package-lock.json文件的,npm 5以后才加入了这个文件。当你安装包的时候,npm都会生成或者更新package-lock.json这个文件。
2020-07-07 20:46:51
255
原创 Nodejs学习总结(二)模块化
在node中没有全局作用域,只有模块作用域。外部访问不到内部,内部也访问不到外部。 既然node是模块作用域,那如何让模块与模块之间通信?加载require:require加载规则:导出exports:原理解析:node的性质:commonJS中与es6模块化的区别:Node中模块导入导出是:require/exportsES6的模块导入导出是:import/export...
2020-07-07 11:37:28
157
原创 Nodejs学习总结(四)node路由设计+封装读取数据文件模块(异步编程)
node路由设计为了简化入口文件app.js以及使代码的模块化程度更高,需要将入口文件中的路由部分抽离出来成一个单独的文件,router.js.首先在router.js文件中导入expressconst express = require('express')使用express的router功能let router = express.Router()把路由都挂载到路由容器中router.get('/students/new', (req, res) => {})
2020-07-07 09:21:55
253
原创 Nodejs学习总结(一)简单的http服务器
最近我开始着手学习nodejs,边看视频边操作这种模式,顺手就记录一下。nodejs特性:事件驱动非阻塞IO模型(异步)轻量和高效node作用:解析js读写文件http读文件:注意:**响应内容只能是二进制或者字符串: JSON.stringify()**举个例子:const http = require('http');var server = http.createServer();server.on('request', function(requ
2020-07-06 14:49:59
172
原创 浏览器的工作原理及进程和线程的配合
浏览器是多进程的,每打开一个 tab 页,就相当于创建了一个独立的浏览器进程。注:浏览器应该也有自己的优化机制,有时候打开多个 tab 页,在 Chrome 任务管理器中会看到有些进程被合并了,所以每个 tab页对应一个进程并不一定是绝对的。浏览器的进程(主要部分):Browser 进程:浏览器的主进程,只有一个。负责浏览器界面的显示与交互;各个页面的管理,创建和销毁其他进程;网络的资源管理、下载等。Renderer 进程:也称为浏览器渲染进程或浏览器内核,内部是多线程的。主要负责
2020-06-22 10:23:22
279
原创 浅析实现大文件上传和断点续传
大文件上传:前端部分:核心是利用 Blob.prototype.slice 方法,和数组的 slice 方法相似,调用的 slice 方法可以返回原文件的某个切片。根据预先设置好的切片最大数量将文件切分为一个个切片,然后借助 http 的可并发性,同时上传多个切片。这样从原本传一个大文件,变成了同时传多个小的文件切片,可以大大减少上传时间。另外由于是并发,传输到服务端的顺序可能会发生变化,所以我们还需要给每个切片记录顺序。服务端部分:服务端接收到所有切片后合并切片。问题1:何时合并切片,
2020-06-21 16:12:23
555
原创 前端知识梳理与总结(六)--面试常见问题之VUE
MVVM原理在 MVVM 中,最核心的也就是数据双向绑定,Vue 中的数据劫持。Vue 内部使用了 Object.defineProperty() 来实现双向绑定,通过这个函数可以监听到 set 和 get 的事件。2.vue双向数据绑定的原理VUE实现双向数据绑定的原理就是利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属...
2020-06-20 09:15:23
304
原创 浅述RPC框架
远程调用往往用在网络上,客户端和服务端是通过网络连接的。所有的数据都需要通过网络传输,因此就需要有一个网络传输层。网络传输层需要把CallID和序列化后的参数字节流传给服务端,然后再把序列化后的调用结果传回客户端。处理方法:call ID映射:在RPC中,所有的函数都必须有自己的一个ID。这个ID在所有进程中都是唯一确定的。客户端在做远程过程调用时,必须附上这个ID。然后我们还需要在客户端和服务端分别维护一个 {函数 <–> Call ID} 的对应表。序列化和反序列化:客户端怎么.
2020-06-17 18:48:23
142
原创 2021届前端实习面经总结--网易一/二面+阿里一二面+滴滴一二面
今天下午参加了网易互联网的一面,面试官小哥哥人很不错,面试体验也还可以,面试题目难度较简单,都是前端的一些基本问题,但是我还是有两三个问题没有回答到,下面就来记一下这次网易一面,总结一点经验。有些问题可能记不清了,我估计问了得有20道左右。讲一下CSS盒模型(回答时尽量拓展一下)CSS垂直水平居中方法CSS浮动清除方法CSS动画(没回答到)伪类与伪元素JS闭包ES5中Promise...
2020-05-25 08:17:55
1787
1
原创 js经典排序算法--面试高频
排序算法复杂度:冒泡排序function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { //比较的趟数,每次将最大值放到数组最后 for (var j = 0; j < len - i - 1; j++) { //将相邻的两个元素,两两比较 if (arr[j]>arr[j+1]) { //元素交换值
2020-05-22 09:10:24
144
原创 前端知识梳理与总结(五)--CSS篇
2. 盒子水平垂直居中方法方法一:display:flex;justify-content:center;align-items:center;方法二:(定位)子绝父相之后,子级的盒子的top和left都设置为50%,然后再移动自己本身的-50%position:absolute;top:50%;left:50%;transform:translate(-50%,-50...
2020-05-06 08:00:28
160
原创 浅析https加密机制
1.对称加密的缺陷对称加密算法的加密和解密都是用同一个密钥。首先当通信双方各自持有同一个秘钥且没有人知道也没有被破解,则通信双方的安全通信是可以保证的。但是在服务器端向客户端发送密钥的时候,中途可能被别人劫持,导致泄密。如果浏览器内部预存了网站A的密钥,且可以确保除了浏览器和网站A,不会有任何外人知道该密钥,那理论上用对称加密是可以的。那么若浏览器只要预存了世界上所有https网址的密钥...
2020-04-27 12:03:51
203
原创 前端知识梳理与总结(三)--面试常见问题
1.箭头和普通函数的区别2.ES5的继承和ES6 class的继承的区别3.js的垃圾回收机制4.AMD和CommonJS的区别5.ES6中迭代器的使用6.首屏加载白屏的解决办法尽量不要首屏加载JS文件(由于<script>标签是阻塞解析的,将脚本放在网页尾部会加速代码渲染。)7.虚拟DOM的原理8.generator,promise,async/await底层...
2020-04-23 15:37:37
169
原创 前端知识梳理与总结(二)--面试常见问题
概念JavaScript 的 模块打包工具 (module bundler)。通过分析模块之间的依赖,最终将所有模块打包成一份或者多份代码包 (bundler),供 HTML 直接引用。实质上,Webpack 仅仅提供了 打包功能 和一套 文件处理机制,然后通过生态中的各种 Loader 和 Plugin 对代码进行预编译和打包。Webpack 是基于 Node,因此 Webpack 其实是...
2020-04-14 22:38:30
193
原创 前端知识梳理与总结(一)--面试常见问题
1.对语义化的理解用正确的标签做正确的事代码更容易阅读和维护搜索引擎的爬虫依赖于标记来确定上下文和各个关键字,鲤鱼SEOhtml语义化可以使页面的内容结构化,便于浏览器搜索引擎解析2.浏览器内核的理解渲染引擎:取得网页的内容,整理信息,计算网页的显示方式。内核不同的浏览器对网页的语法解释不同,所以渲染出来的效果也不同。JS引擎:执行和解析JS代码,实现网页的动...
2020-04-03 22:14:33
256
原创 电商后台管理项目(基于VUE技术栈的SPA项目)
写此篇文章是为了今后能对项目整体有个把握。记录自己做项目的心路历程。同时更加巩固所学的技术。
2020-03-25 08:53:16
1229
2
原创 项目上线相关配置(本地)
1.通过node创建web服务器。创建node项目并安装express。新创建一个文件夹,将项目生成的dist目录拷贝过去,然后初始化项目并安装express。再新建一个入口文件app.js,将以下代码粘贴进去即可。const express = require('express');const app = express();//静态资源托管app.use(express.stat...
2020-03-24 10:12:38
183
原创 项目优化--添加进度条--移除项目中的console语句
项目优化策略给项目顶部加进度条1.对于vue-cli项目直接在可视化面板查找nprogress运行依赖,对于其他项目使用:npm install --save nprogress命令安装。2.导入nprogress包对应的JS和CSSimport NProgress from 'nprogress'import 'nprogress/nprogress.css'3.配置请求拦截器和响...
2020-03-23 22:18:02
141
原创 vue后台管理项目数据报表功能的实现
首先在vue可视化管理面板中安装echarts运行依赖。导入echarts。在使用echarts的组件中导入。import echarts from 'echarts'为echarts准备一个具备大小的Dom。<div id="main" style="width: 600px;height:400px;"></div>将页面上准备好的div区域初始...
2020-03-23 12:18:16
3128
原创 Vue后台管理项目之富文本编辑器(添加商品内容)的实现
在进行某页面添加商品内容等信息时,需要用到富文本编辑器,下面简述一下实现步骤。在vue项目中安装vue-quill-editor依赖(我用的vue-cli直接在可视化面板进行安装,很方便)在main.js文件中导入富文本编辑器以及对应的样式,注册为可用的组件。//导入富文本编辑器import VueQuillEditor from 'vue-quill-editor'import '...
2020-03-22 16:24:38
1082
原创 vue后台管理项目中element-ui中的upload组件
1.upload组件请求头在做后台管理项目的时候,只要用户正确登录后,浏览器获取到token,才能继续操作后续的页面。后续页面需要获取到登录时所提供的的token。此时需要在main.js文件中配置一下header请求头中的Authorization字段。axios.interceptors.request.use(config => { console.log(config);...
2020-03-22 10:25:10
409
原创 Vue后台管理项目踩坑
最近跟着黑马前端视频在做vue后台管理项目。下面这张图是利用element-ui渲染出来的级联选择器,但是它高度溢出了。由于element-ui新的版本有一些bug,所以我们需要在全局样式中自定义高度。如下:.el-cascader-menu { height: 300px;}完美解决。...
2020-03-21 21:38:08
711
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人