- 博客(21)
- 收藏
- 关注
原创 koa2源码与原理解析
在做vue-ssr过程中我用到了node来拼接渲染首屏,其中用到了koa2框架,下面对koa2的原理进行剖析,也对nodejs的程序执行过程有个更深的认识。koa2源码的主要模块分为:application(主文件)context(上下文)request(请求)response(响应)首先我们通过源码大概能了解到,koa2的核心原理其实是递归。koa2执行过程如下:1、把使用...
2019-05-29 08:41:09
225
原创 react16.8的新特性及旧特性盘点
react16.8的新特性及旧特性盘点首先简单谈谈react和vue的区别:如果你写过vue,会发现组件的视图指令已编译为修改视图的函数存放在绑定的state里的属性里,所以能够做到靶向修改,而react会以组件为根,重新渲染整个组件子树。所以应避免这些不必要的render。0、setState和shouldComponentUpdatesetState特性:1、setState是异步操...
2019-05-23 10:06:57
4208
原创 postcss和cssnext理解与使用
什么是postcsspostcss 一种对css编译的工具,类似babel对js的处理,常见的功能如:使用下一代css语法自动补全浏览器前缀自动把px代为转换成 remcss 代码压缩等等注意:postcss 只是一个工具,本身不会对css一顿操作,它通过插件实现功能,autoprefixer 就是其一。与 less sass 的区别less sass 是预...
2019-04-21 08:54:23
1125
原创 前端工程化的起源与理解
6.1 简要阐述一下前端工程化背景:前端工程化是前后端分离的必然产物,它通过软件工程思想从模块化、组件化、规范化、自动化四个方面出发,解决了以下几种问题:如何进行高效的多人协作?如何保证项目的可维护性?如何提高项目的开发质量?6.1.1 模块化:js模块化在ES6之前,JavaScript一直没有模块系统,这对开发大型复杂的前端工程造成了巨大的障碍。对此社区制定了一些模块加载方...
2019-04-16 14:44:16
401
原创 vuex各模块与步骤详解以及使用
vuex的运行流程下面是官网提供的vuex的运行流程vuex的特点:针对非异步操作:components中可以不用store.dispatch,直接触发action,再执行commit触发mutation去改变state针对异步操作:components上store.dispatch一个action,得到数据后再执行commit触发mutation去改变statevuex的不同vue...
2019-04-11 17:20:43
1397
原创 js单线程与事件循环
背景:JavaScript的主要用途是与用户交互,以及操作DOM。这决定了它只能是单线程,否则会带来很多复杂的同步问题。为了解决单线程导致的线程等待资源,cpu空闲,而其他任务一直等待的问题。将所有的任务分为两种,一种是同步任务,一种是异步任务。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行下一个任务。异步任务指的是,不进入主线程,而进入“任务队列”的任务,主线程查...
2019-04-02 17:04:08
266
原创 项目中的网络安全策略取舍与总结
一、前言web服务中,用户输入用户名密码登入之后,后续访问网站的其他功能就不用再输入用户名和密码了。因此,身份验证引起的网络安全在所有企业级项目中都是个必须去探讨的话题,并一定针对不同的安全隐患设置相应的防范策略。下面分享几个我从项目中总结提炼出来的一些网络安全经验。首先我们先来巩固一下两种常用的身份验证机制:二、两种身份验证机制1. cookie-session机制传统的身份校验机制...
2019-03-11 23:19:04
743
原创 前端性能优化之我见
前端性能优化之我见 前端的性能优化在工作中是占据着很重要的位置,并且其涉及知识面很广的,也是每个初级或中级前端迈向高级的必经之路。 全面的了解性能优化对拓宽我们的知识面有非常大的帮助,可以说也是现在前端必会的一门学问。写下此篇文章以分享积累的前端优化经验,也有助自己理清思路。一 前言 说到性能优化就不得不提到雅虎军规,了解雅虎军规也是一个前提。至少能够使我们知道从哪里入手去做性能...
2019-03-06 11:36:06
320
原创 前端模块化在项目中的应用
一、前端模块化发展首先,模块化开发的4点好处:避免变量污染,命名冲突提高代码复用率提高维护性依赖关系的管理模块化时代之前的js模块模块需要具备两个必要条件:必须有外部的封闭函数,该函数必须至少被调用一次。(每次调用都会创建一个新的模块实例)封闭函数必须返回至少一个内部函数,这样内部函数才能在私有作用域中形成闭包,并且可以访问或者修改私有状态。举例:var foo ...
2019-02-28 11:25:35
287
原创 前端容错机制——debug方式总结
一、减少静态资源请求数二、工程化工具打包压缩按需引入tree shakingcode spliting三、首屏服务端渲染四、异步加载组件,分割单页应用代码五、dns预解析六、服务端开启gzip进一步压缩后续补充,详细说明...
2019-02-20 23:48:00
1055
原创 关于session&cookies和JWT的选择
session与cookies的区别: 额外信息由谁来维护。 利用cookies来实现会话管理时,用户的相关信息或者其他我们想要保持在每个请求中的信息,都是放在cookies中,而cookies是由客户端来保存,每当客户端发出新请求时,就会稍带上cookies,服务端会根据其中的信息进行操作。当利用session来进行会话管理时,客户端实际上只存了一个由服务端发送的session_id,而由这...
2019-01-28 16:11:05
640
原创 用async和await改造项目对异步调用接口的处理
1、不存在继发关系的异步操作,同时触发例1: let [foo, bar] = Promise.all([getFoo(), getBar()]);例2: let fooPromise = getFoo(); let barPromise = getBar(); let foo = await fooPromise(); let Bar = await barPromise();...
2019-01-21 17:21:05
1963
原创 面向切面编程的学习与案例分析
vue项目生产环境js大小优化 最近项目在对vue做打包优化,直接用vue-cli2.0脚手架做工程化。在优化生产环境js和css大小时。用uglifyjs插件对js进行了压缩,但打包之后的文件大小一直比较大。找了下原因发现vue-cli2.0的webpack生产打包配置文件默认没有开启gzip。修改默认配置并安装compression-webpack-plugin即可进一步压缩打包出的js...
2019-01-18 10:35:26
153
转载 大前端与BFF层——NodeJS在项目中的位置
1、用户向入口脚本 web/index.php 发起请求。2、入口脚本加载应用配置并创建一个应用 实例去处理请求。3、应用通过请求组件解析请求的 路由。4、应用创建一个控制器实例去处理请求。5、控制器创建一个动作实例并针对操作执行过滤器。6、如果任何一个过滤器返回失败,则动作取消。7、如果所有过滤器都通过,动作将被执行。8、动作会加载一个数据模型,或许是来自数据库。9、动作会渲染一...
2019-01-13 22:14:58
1600
原创 编写一个应用于mpa场景下的webpack插件
登录信息传递方式以及请求后台接口方式改变解释:token还是JWT的形式,把token放入headers去请求改为token存入cookies,让后台自行判断是否过期。前端登录成功之后获取到token,把token解析后放入localstorage。步骤:1、输入用户名和密码登录2、登录成功获取到token,包含用户名、角色id、过期时间等3、把token中的信息解析后放入localst...
2019-01-10 15:20:37
255
转载 cookie用户登录的过程详解
不管是游戏,还是网站,最基本的功能,就是用户注册登录。或许,我们做过多次用户的登陆注册的功能,但我们是否想过,为什么要实现用户的登录。用户怎样做才算登录成功。对用户而言,登录后,就有了他的一片“天地”,例如,登录CSDN后,就可以管理自己的博客,否则,你没有权利管理。关于是否登录成功的问题,在用户看来,如果用户名和密码输入成功,就算登入成功,否则,登录不成功。但这一切,在程序中是怎样实现的呢...
2019-01-07 16:50:54
7337
原创 linux基础与javascript语言巩固
第1课 linux基础入门对文件或文件夹的操作dir:显示当前文件夹的目录ls:获取当前文件夹的目录ls -a:显示当前文件夹下的隐藏文件cd:进入文件夹注:cd ~ :回到用户主目录cd / :回到根目录mkdir:创建文件夹pwd:显示当前文件夹的完整目录路径cp:复制文件,包含两个参数,第一个为文件名,第二个为目标目录名复制文件夹:cp -R aaa ddd说明:...
2019-01-01 22:34:40
245
原创 js语言精华——聊聊js语言难点与核心
数据类型1.1 说明:javascript是弱类型语言,并不十分严谨,会有一些意想不到的情况,但并不是没有类型,javascript可以识别下面7种不同类型的值。1.2 解释:弱类型意思是指在声明变量时不需要去声明类型。编译时不能发现。例如c语言中的,int a = 11.3 种类:1.3.1 基本数据类型:特点:放在栈内存中StringNumber(包括浮点、负数)Boolea...
2018-12-29 09:30:28
374
原创 前端代码规范整理
第一篇博客@自定义标题欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计...
2018-12-26 16:15:38
304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人