spa

单页面应用(SPA)

三世轮回 提交于 2020-01-02 02:58:06
此篇我们来瞅一瞅SPA,啥是SPA啊,实际上一点也不神秘,就是单页应用,可能有的同学又会问了,啥是单页面应用,别着急,我们慢慢来看 首先我们先来了解一下单页应用出现背景 背景: 在早期的 Web 应用中,前端的作用很弱,业务逻辑和数据处理都在后端,后端给前端返回一个 HTML 页面,前端只负责展示。在这种模式下,单个 HTML 页面被当做一个功能原件,表单提交,超链接跳转都可以用来重新请求新的 HTML 页面,从而达到给用户展示新的页面的目的。在这种方式中,你可以感觉到 页面总是在不停的刷新 ,一个点击可能都需要等待很久,这是因为,当页面变化时,所有资源都需要重新请求。这些问题导致了用户体验不佳,也浪费了资源。单页应用便很好的解决了这些问题 概念: 什么是单页应用呢?单页应用的全称是 single-page application,简称 SPA,它是一种网站应用的模型,它可以动态重写当前的页面来与用户交互,而不需要重新加载整个页面。单页应用的流畅性让 Web 应用更像桌面端或 Native 应用了。相对于传统的 Web 应用,单页应用做到了前后端分离,后端只负责处理数据提供接口,页面逻辑和页面渲染都交给了前端。前端发展到现在,单页应用的使用已经很广泛,目前时兴的 React、Vue、Angular 等前端框架均采用了 SPA 原则。单页应用意味着前端掌握了主动权

SPA(单页面web应用程序)

你。 提交于 2020-01-02 02:57:30
单页web应用(single page web application,SPA),就是只有一张web页面的应用,是加载单个HTML页面并在用户与应用程序交互时动态更新该页面的web应用程序。 浏览器一开始会加载必需的HTML、CSS和Javascript,所有的操作都在这张页面上完成,都有javascript来控制。因此,对单页面应用来说模块化的开发和设计显得相当重要。 一、特点:   速度:更好的用户体验,让用户在web app感受native app的速度和流畅。   MVC:经典MVC开发模式,前后端各负其责。   ajax:重前端,业务逻辑全部在本地操作,数据都需要通过AJAX同步、提交。   路由:在URL中采用#号来作为当前视图的地址,改变#号后的参数,页面并不会重载。 二、HTML容器管理   1、HTML管理原理   SPA项目的HTML结构与传统的HTML结构有非常不同的差异:   ① 传统的HTML是将所有的HTML写在.html文件里。然后通过DOM方法在JS中进行操作。   ② SPA项目中,为了保证每个UI模块的独立性,HTML结构被以模块的形式打碎分别放置在各个UI模块中。HTML以字符串的形式存放在子模块configMap.main_html中。当子模块接收到父模块传递过来的容器后通过$container.html(configMap.main

你需要了解的前端骨架屏注入实践

ε祈祈猫儿з 提交于 2019-12-27 09:17:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 相比于早些年前后端代码紧密耦合、后端工程师还得写前端代码的时代,如今已发展到前后端分离,这种开发方式大大提升了前后端项目的可维护性与开发效率,让前后端工程师关注于自己的主业。然而在带来便利的同时,也带来了一些弊端,比如首屏渲染时间(FCP)因为首屏需要请求更多内容,比原来多了更多HTTP的往返时间(RTT),这造成了白屏,如果白屏时间过长,用户体验会大打折扣,如果用户网速差,则FCP会更长。 由此引申出一系列的优化方法,骨架屏也因此被提出,本文就以 Vue 项目中的骨架屏为例,探讨一下骨架屏的优缺点和注入方式。 感兴趣的同学可以加一下微信群,一起讨论吧~ 1、FCP 优化 在 Google 提出的以用户为中心的四个页面性能衡量指标中,FP/FCP可能是开发者们最熟悉的了: 为了优化首屏渲染时间这个指标,减少白屏时间,前端仔们想了很多办法: 加速或减少HTTP请求损耗 :使用CDN加载公用库,使用强缓存和协商缓存,使用域名收敛,小图片使用Base64代替,使用Get请求代替Post请求,设置 Access-Control-Max-Age 减少预检请求,页面内跳转其他域名或请求其他域名的资源时使用浏览器prefetch预解析等; 延迟加载 :非重要的库、非首屏图片延迟加载,SPA的组件懒加载等; 减少请求内容的体积

这6条建议,帮你选择正确的BI分析平台!

旧巷老猫 提交于 2019-12-26 11:16:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如今的商业智能BI不同于传统,已经逐渐向自助型的、以业务为主导的模式过渡。而站在IT角度,IT也应该采用一种能够让业务部门在所有层面参与整个计划的协作方式,但这也许需要更高层领导的支持和鼓动。 本文将重点介绍BI分析平台的评估和选择,包含以下5个方面8条建议。 1 、 划分涉及人群 整个商业智能分析过程中会涉及到3类人群,每个阶段都会有一个明确的主要角色: IT/商业智能专员 ——执行所有初始设置任务,包括软件安装、用户预配、访问权限、管控监督以及某些开发任务(内容和数据源)。 业务分析者——执行大多数内容创建任务,包括数据准备、自由格式探索、内容提升和数据验证。 信息使用者——主要访问经过整理的内容和可信的数据源并与之交互,以领导管理层居多。 划分人群的目的是帮助梳理不同人的需求,在项目计划的时候能有所考虑。 2 、BI 分析平台的易用性 传统BI的专业性较高,使用难度较大,在过去的几年常常搁置BI,如今选择BI平台需考虑易用性和上手是否简单,总体来看需要考察: 整个BI分析的工作流能否在自有平台中无缝执行? 平台是否提供各类数据源的连接(比如关系型数据库、多维分析数据库、云数据库) 随着时间的推移,平台是否能够通过扩展来容纳不断增加的数据量以及更多的用户? BI平台管理员是否能轻松安装、配置和管理该平台?

线程协作工具之Semaphore、CountDownLatch、CyclicBarrier

点点圈 提交于 2019-12-20 15:26:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 各种线程协作工具 常见线程协作工具: 读写锁ReadWriteLock 信号量Semaphore 倒计时门栓CountDownLatch 循环栅栏CyclicBarrier 线程本地变量ThreadLocal 主要讲信号量Semaphore,倒计时门栓CountDownLatch, 循环栅栏CyclicBarrier 然后根据两个LeetCode题目来应用一下。 第一题: 三个不同的线程将会共用一个 Foo 实例。 线程 A 将会调用 one() 方法 线程 B 将会调用 two() 方法 线程 C 将会调用 three() 方法 请设计修改程序,以确保 two() 方法在 one() 方法之后被执行,three() 方法在 two() 方法之后被执行。 原生解法 应用场景及用法 基于notify/wait,所有的线程间通信类似通知的机制本质上都是notifyAll,多能用这个来实现。 class Foo { private static AtomicInteger flag = new AtomicInteger(0); private static Object Lock1 = new Object(); public Foo() { } public void first(Runnable

【HAVENT原创】微信路由到内页分享和微信二次分享的一些事儿

我只是一个虾纸丫 提交于 2019-12-17 15:39:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近项目中使用 Vue 做 SPA 页面,采用 hash 模式做页面跳转,在微信分享的时候遇到的下面两个问题: 1. 从首页访问到内页,在内页点微信分享,获取不到标题和链接,分享出去的是首页 2. 微信分享出去的页面,点击进入后再次分享,同样获取不到标题和链接 经过测试后发现: 1. 从首页到内页后分享,iOS / Android 微信 sdk 会触发 config 信息验证失败 2. 微信分享后的地址,会自动在 # 之前添加 ?from=singlemessage&isappinstalled=0 的参数,同样会导致 config 验证失败 解决方案: 一、解决首页路由到内页分享的问题: import Vue from 'vue' import VueRouter from 'vue-router' import Index from '../pages/index.vue' import IndexVideo from '../pages/indexVideo.vue' Vue.use(VueRouter) const routes = [ { path: '/', component: resolve => require(['../pages/index'],resolve), meta: {

【Vue.js】SPA

十年热恋 提交于 2019-12-04 09:40:00
SPA 2019-11-13 23:20:48 by冲冲 1、概念 (1)MPA(multi-page application) 特点:每一次页面跳转的时候,后台服务器都会返回一个新的 html 文档,这种类型的网站就是多页网站,也叫多页应用。 (2)SPA(single-page application) ① 原理:第一次进入页面时就会加载相应的HTML、JavaScript 和 CSS,需要切换内容时,通过JavaScript感知url变化,更换当前页面内容,但是并没有新的 html 文件请求。此时路由不再是后端做,而是前端做。 ② 页面跳转:js渲染 ③ 优点: A. 页面切换快。前端局部渲染。 B. 减轻服务器压力。服务器前期发送静态资源(html、css、js)到浏览器,往后通过RESTful API提供接口数据,并使用Ajax异步获取,实现前后端分离。 C. 不用修改后端程序代码(API接口)就可以同时用于web界面、手机、平板等多种客户端。 ④ 缺点: A. 首屏时间慢。首屏时不仅需要请求一次 html ,同时还要发送一次 js 请求,两次请求回来了,首屏才会展示出来。相对于多页面应用只需要发送一次html,SPA首屏时间慢。 B. SEO差。因为搜索引擎只认识 html 里的内容,不认识 js 渲染生成的内容,搜索引擎不识别,也就不会给一个好排名

原生JavaScript进行前后端同构

烈酒焚心 提交于 2019-12-03 13:38:06
什么是前后端同构 明确三个概念:「后端渲染」指传统的 ASP、Java 或 PHP 的渲染机制;「前端渲染」指使用 JS 来渲染页面大部分内容,代表是现在流行的 SPA 单页面应用;「同构渲染」指前后端共用 JS,首次渲染时使用 Node.js 来直出 HTML。一般来说同构渲染是介于前后端中的共有部分。 感觉前端的确是折腾,之前还在流行前后端分离,现在怎么又要做前后端同构了? 原因是现在流行的SPA前端单页面应用比较沉重,首次访问需要加载文件较多,第一次加载过慢,用户需要等待前端进行渲染页面。而且不利于SEO及缓存,并且有一定的开发门槛。 前后端同构通过复用模板和JS文件,让一份代码可以同时跑在服务器和浏览器,首次渲染使用nodejs渲染页面,之后使用SPA路由跳转。可以有效减少用户首次访问的等待时间,并且对SEO比较友好,也便于缓存。 项目简介 本前后端同构项目主要分为两个部分,一个是基于koa2的渲染服务器,另一个是基于原生JS和zepto的前端SPA。 项目的特点是不使用vue和react等框架,门槛低,开发速度快,便于上手,比较轻巧,核心的router部分只有一百行左右的代码。适用于页面交互较少,变化不频繁的场景下,可以有效的提升性能和加载速度。 前端部分 前端部分的核心是路由部分,具体实现可以基于history API或是hash,网上有很多实现,这次主要讲下架构

ThinkSNS + 后端2019年1月更新播报

送分小仙女□ 提交于 2019-12-03 12:28:25
社交软件系 统 ThinkSNS + 界面一览图 研发发布版本号:2.1.5 和 2.2.2 更新发布时间:2019年1月29日 社交系统 ThinkSNS+后端本次主要更新内容:搜索地区体验优化、优化收藏页面排版、修正读取兑换比例问题、过滤 XSS、修复关注话题问题等 社交系统 ThinkSNS + 后端2.2. 2 更新内容详情如下: Bug Fixes 动态: 修复动态话题未关注状态下发布动态后无法关注该话题 SPA: 动态中的链接高亮显示 SPA: 过滤 XSS SPA: 修复无法创建圈子的问题 定位: 搜索地区体验优化 核心: 修复积分原生支付读取兑换比例错误 后台: 修复「用户」-「第三方」配置菜单消失 CDN: 修复阿里云获取原图 GIF 并没有返回原图问题 PC: 修复 xss 问题 SPA: 创建投稿时无法返回上一步的问题 SPA: 过滤 XSS SPA: 如果文章未发布则其他用户不可通过改变url的方式访问 SPA: 收藏页面排版的问题 SPA: 修复 moblink 样式覆盖的问题 SPA: 修复当action sheet呼出并且路由变化时依然存在的问题 SPA: 修复二次登录时无法获取 openid 的问题 SPA: 修复微信新用户注册时还需要再次登录的问题 SPA: 修复在 ios 下话题关注按钮不正常的问题 SPA: 修复在 ios