前端开发

前端性能优化01

ぃ、小莉子 提交于 2020-01-16 20:52:51
title: 前端性能优化01 date: 2020-01-15 09:02:52 tags: 前端性能优化 categories: 前端性能优化 目标 理解减少http请求数量和减少请求资源大小两个优化要点 掌握压缩与合并的原理 掌握通过在线网站和fis3两种实现压缩与合并的方法 浏览器的一个请求从发送到返回都经历了什么? HTML压缩 一个简单的计算: google的流量,占到整个互联网的40%,如果google每1MB请求减少一个字节,每年可以节省500TB流量 如何进行html压缩 使用在线网站进行压缩 nodejs提供了html-minifier工具 后端模板引擎渲染压缩 CSS压缩 处理原则 无效代码删除 CSS语义合并 如何进行CSS压缩 使用在线网站进行压缩 使用html-minifier对html中的css进行压缩 使用clean-css对css进行压缩 JS压缩与混乱 处理原则 无效字符的删除 剔除注释 代码语义的缩减和优化 代码保护 如何进行JS压缩和混乱 使用在线网站进行压缩 使用html-minifier对html中的js进行压缩 使用uglifyjs2对js进行压缩 文件合并 优点 文件与文件之间有插入的上行请求,增加了N-1个网络延迟 受丢包问题影响更严重 keep-alive 经过代理服务器时可能会被断开 缺点 首屏渲染问题 缓存失效问题 解决办法

浅谈前后端分离与实践 之 nodejs 中间层服务(二)

走远了吗. 提交于 2020-01-16 20:52:07
一、背景 书接上文, 浅谈前后端分离与实践(一) 我们用mock服务器搭建起来了自己的前端数据模拟服务,前后端开发过程中只需定义好接口规范,便可以相互进行各自的开发任务。联调的时候,按照之前定义的开发规范进行数据联调便可以了。前后端的职能更加清晰: 后端 前端 提供数据 接收数据,返回数据 处理业务逻辑 处理渲染逻辑 Server-side MVC架构 Client-side MV* 架构 代码跑在服务器上 代码跑在浏览器上 这里分离干净了,分工也很明确了,看似一切都那么美好,but...我们也很容易发现问题的所在: Client-side Model 是 Server-side Model 的加工 Client-side View 跟 Server-side是 不同层次的东西 Client-side的Controller 跟 Sever-side的Controller 各搞各的 Client-side的Route 但是 Server-side 可能没有 也就是说服务端和客户端各层职责重叠,大家各搞各的,很难统一具体要做的事情。并且可能会伴随着一些性能上的问题。最具体的表现就是我们常用的SPA应用: 渲染,取值都在客户端进行,有性能的问题 需要等待资源到齐才能进行,会有短暂白屏与闪动 在移动设备低速网路的体验奇差无比 渲染都在客户端,模版无法重用,SEO实现 麻烦 紧接着

微信公众号开发基本流程

人盡茶涼 提交于 2020-01-16 18:31:23
背景: 过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。 微信公众平台官网: https://mp.weixin.qq.com 一、注册公众号 首先注册时可以看到公众号有三种类型,个人用户大多数选择 订阅号 ,而企业用户一般选择 服务号 和 企业号 。 我们平常大多数关注的都是 订阅号 ,他们统一都放置在微信应用的订阅号消息列表中,没有微信支付等高级功能,只是用于发布文章等基础功能。 而服务号和企业号都在会话列表,和我们的微信好友是同级别的位置,具备微信支付等高级功能,一般是某个企业品牌的对外操作窗口,如海底捞火锅、顺丰速运等。 我们前期开发测试只需要 注册个人订阅号 即可,真正开发使用的是开发者工具里的测试号,具体下面会说。 真正生产的话,使用的都是经过微信认证的订阅号、服务号、企业号。 二、了解公众号管理页面 我们在微信公众平台扫码登录后可以发现管理页面左侧菜单栏有丰富的功能: 大概可以分为这几大模块: 首页、功能、小程序、管理、推广、统计、设置、开发 作为开发人员,首先应该关注的是设置、开发模块;而作为产品运营人员,关注的是功能、管理、推广模块;作为数据分析人员,关注的是统计模块。 首先我们不妨各个功能模块都点击看一看,大概了解下我们能做些什么。可以确认的是,这个微信公众平台当然不只是给开发人员使用的

为了反击爬虫,前端工程师的脑洞可以有多大?

人走茶凉 提交于 2020-01-16 04:49:04
1. 前言 对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它。 而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,教育网站的题目等。因为这些内容,往往是一个产品的生命线,必须做到有效地保护。这就是 爬虫与反爬虫 这一话题的由来。 2. 常见反爬虫策略 但是世界上没有一个网站,能做到完美地反爬虫。 如果页面希望能在用户面前正常展示,同时又不给爬虫机会,就必须要做到识别真人与机器人。因此工程师们做了各种尝试,这些策略大多采用于 后端 ,也是目前比较常规单有效的手段,比如: User-Agent + Referer检测 账号及Cookie验证 验证码 IP限制频次 而爬虫是可以无限逼近于真人的,比如: chrome headless或phantomjs来模拟浏览器环境 tesseract 识别验证码 代理IP淘宝就能买到 所以我们说,100%的反爬虫策略?不存在的。 更多的是体力活,是个难易程度的问题。 不过作为前端工程师,我们可以增加一下游戏难度,设计出一些 很(sang)有(xin)意(bing)思(kuang) 的反爬虫策略。 3. 前端与反爬虫 3.1 FONT-FACE拼凑式 例子: 猫眼电影 猫眼电影里,对于票房数据,展示的并不是纯粹的数字。 页面使用了font-face定义了字符集,并通过unicode去映射展示

Vue.js 和 MVVM 小细节

℡╲_俬逩灬. 提交于 2020-01-16 03:46:33
Vue.js 和 MVVM 小细节 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的 数据双向绑定 。 Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷。 为什么会出现 MVVM 呢? 我接触MVVM 是在2015年,可以说2015年是MVVM 最火热的一年,而在这之前,我所知道的就是MVC, MVC 大约是在5年前,也就是2011年的时候接触的,那时候刚学编程语言,学的Java,而Java 中经典的 SSH 框架就用来构建一个标准的MVC 框架。说实话,MVC 用了这么多年,但始终没有很深刻的理解,只停留在用的层面, 一直到接触 Vue.js 之后,研究了MVVM 架构思想,然后再回头看 MVC ,才有一种豁然开朗的感觉~ MVC 即 Model-View-Controller 的缩写,就是 模型-视图-控制器 , 也就是说一个标准的Web 应用程式是由这三部分组成的

web前端入门到实战:CSS实现雨滴动画效果

五迷三道 提交于 2020-01-16 00:43:43
玻璃窗 今天我们要实现的是雨滴效果,不过实现雨滴前,我们先把毛玻璃的效果弄出来,没有玻璃窗,雨都进屋了,还有啥好敲打的。 <div class='window'></div> .window { position: absolute; width: 100vw; height: 100vh; background: url("https://cn.bing.com//th?id=OHR.ParrotsIndia_ZH-CN8386276023_UHD.jpg"); background-size: cover; background-position: 100%; filter: blur(10px); } 其实就是给一张图片,做了个模糊化的效果,看起来像毛玻璃的效果 一滴雨 雨滴的效果就很巧妙了,让我们看下一滴雨完整的效果图 这滴雨其实分为两个部分,第一部分是底部的阴影部分,其实是个边框来的,代码如下: 专门建立的学习Q-q-u-n ⑦⑧④-⑦⑧③-零①② 分享学习方法和需要注意的小细节,互相交流学习,不停更新最新的教程和学习技巧(从零基础开始到WEB前端项目实战教程,学习工具,全栈开发学习路线以及规划) .border { position: absolute; margin-left: 92px; margin-top: 51px; border-radius: 100%;

web前端入门到实战:CSS不定宽高的垂直水平居中,9 种方式总汇

流过昼夜 提交于 2020-01-15 23:45:10
垂直居中,在 CSS 中是一个老生常谈的问题,面试的时候也会时常被提及。所以,今天我们就来聊聊 9 种不同的居中方法。 有常见的 flex、transform、absolute 等等。也有 CSS3 的网格布局。还有伪元素的方法,是的,你没有看错,::after 和 ::before 也可以实现居中。 1、flex 大家的第一反应,可能就是 flex 了。因为它的写法够简单直观,兼容性也没什么问题。是手机端居中方式的首选。 <div class="wrapper flex-center"> <p>horizontal and vertical</p> </div> .wrapper { width: 300px; height: 300px; border: 1px solid #ccc; } .flex-center { display: flex; justify-content: center; align-items: center; } 专门建立的学习Q-q-u-n ⑦⑧④-⑦⑧③-零①② 分享学习方法和需要注意的小细节,互相交流学习,不停更新最新的教程和学习技巧(从零基础开始到WEB前端项目实战教程,学习工具,全栈开发学习路线以及规划) 利用到了 2 个关键属性:justify-content 和 align-items,都设置为 center,即可实现居中。

混合移动App干货:一篇就可以彻底搞懂!

别来无恙 提交于 2020-01-15 23:31:43
引言 本文会详细的讲解什么是混合App开发、混合App开发概念、原理、区别、为什么要学习混合App、混合App开发的几种方式以及具体的环境配置和踩坑指南等干货十足。 1-什么是混合移动App开发 苹果上的软件是如何开发出来的:使用的是 OC、或者使用Swift这门语言 安卓平台上的软件又是如何开发出来的:使用安卓相关的语言开发的,Java,安卓的控件进行开发 苹果和安卓平台上共有的软件是如何开发出来的:腾讯招两套开发人员【开发组】,手机京东 前端移动 App(Application)开发技术,去开发手机端的应用程序; 前端的混合移动App开发技术,并没有使用 苹果 或 安卓 官方推荐的 开发平台和开发方式,而是抛弃了 官方提供的方式,使用 前端的独有的技术进行移动App开发体验; 什么是移动App开发:通俗的理解,就是把开发Web网站的技 (HTML+CSS+JS),通过某种方式,移植到移动App开发上进行使用,这种利用Web开发技术进行移动端开发体验的方式,叫做混合移动App开发! 关于移动App开发,需要知道的几个概念: 原生开发:它的英文单词是(NativeApp),指的就是使用 IOS、Android 官方提供的工具、开发平台、配套语言进行 手机App开发的方式; 混合开发:(HybirdApp)就是使用前端已有的技术,HTML + CSS + JS

整理前端应该会的技能

拥有回忆 提交于 2020-01-15 15:19:04
随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才。很多同学,包括以前做UI的、Java的、或者对于IT完全零基础的同学都想学习前端。下图是网上流传甚广的一张前端学习思维导图,很多初学者表示看到这些密密麻麻的知识点就已经晕了。确实,前端是一门涵盖面很广的学科。但是想学前端的你也不用慌张,内容虽多但有迹可循,只要循序渐进就不怕学不好前端! 那么前端开发到底需要学什么?应该怎么学?接下来小编教你如何从零基础学习前端。 一、前端开发入门 在入门阶段,你首先要学会最基本的技能:根据UI的设计稿,实现HTML的静态页面制作。这就要求你得掌握HTML、CSS页面布局排版、样式美化等技能。 在这个阶段你需要学习: 1、HTML+CSS基础 掌握HTML的标签使用、排版技巧、CSS的布局定位、样式美化、浏览器兼容性。 2、JavaScript基础 掌握JS的基本语法、条件、语句、循环等,学会常用算法,增强逻辑性。 3、常用的前端工具 比如Webstrom、Sublime、Dreamweaver等。掌握其快捷键设置等技巧,可快速提高开发调试效率。 这个阶段的学习难度相对不高,学完这些之后,我们已经能完成静态页面的制作。当然,这只是入门,如果你想用这些技能找工作的话还是比较困难的。 二、前端开发初级 在接下来的这一个阶段,我们的目标是达到前端开发行业的基本要求

Emmet插件详解

南笙酒味 提交于 2020-01-15 07:57:59
http://www.ithao123.cn/content-10512551.html (webstorm的css编写插件)Emmet:HTML/CSS代码快速编写神器 [摘要:Emmet的前身是默默无闻的Zen coding,若是您处置Web前端开辟的话,对该插件肯定没有会目生。它应用仿CSS挑选器的语法去天生代码,大大进步了HTML/CSS代码编写的速率,比方上面的演] Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生。它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: html:5 或!:用于HTML5文档类型 html:xt:用于XHTML过渡文档类型 html:4s:用于HTML4严格文档类型 2. 轻松添加类、id、文本和属性 连续输入元素名称和ID,Emmet会自动为你补全,比如输入p#foo: Html代码 < p class= "bar" id= "foo" > </ p > 下面来看看如何定义HTML元素的内容和属性。你可以通过输入h1{foo}和a[href=#],就可以自动生成如下代码: Html代码 < h1 >foo </ h1 > < a href= "#" > </ a > 4. 分组 你可以通过嵌套和括号来快速生成一些代码块,比如输入(.foo>h1