原文地址: Modern Script Loading, 文章作者是Preact作者Jason Miller
还记得当初入门前端开发的时候写过的 Hello World 么?一开始我们先创建了一个 HTML 文件,在 <body> 标签里写上网页内容;后来需要学习页面交互逻辑时,在 HTML markup 里增加一个 <script src="script.js"> 标签引入外部 script.js 代码,script.js 负责页面交互逻辑。
为什么要在这个时候探索flv.js做直播呢?原因在于各大浏览器厂商已经默认禁用Flash,之前常见的Flash直播方案需要用户同意使用Flash后才可以正常使用直播功能,这样的用户体验很致命。 在介绍flv.js之前先介绍下常见的直播协议以及给出我对它们的延迟与性能所做的测试得出的数据。 如果你看的很吃力可以先了解下音视频技术的一些基础概念。 常见直播协议 RTMP: 底层基于TCP,在浏览器端依赖Flash。 HTTP-FLV: 基于HTTP流式IO传输FLV,依赖浏览器支持播放FLV。 WebSocke
在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化。本篇文章简单描述一下其中的优化准则。 1. 脚本加载优化 1.1 脚本位置对性能的影响 优化页面加载性能的原则之一是将script标签放在body底部,这跟浏览器的渲染原理有关: js脚本的下载和执行会阻塞浏览器的解析。在较早时期,浏览器不支持并行下载的时候,js脚本的下载执行按照在html文档中的位置依次进行,可以想象当页面有大量js脚本时页面的加载有多慢; js脚本的下载会阻塞其他资源的下载,比如图片、外链css等。虽然目前大多数
产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先) 成本的角度 (有无必要做某件事)
selenium官方加上第三方宣布支持的驱动有很多种;除了PC端的浏览器之外,还支持iphone、android的driver;大概记录一下selenium支持的各种driver的用途与说明。
页面加载 首先,浏览器发起直接对目标html的请求,然后分析其中用到的资源并下载,浏览器有自己的规则来判断什么样的资源可以被并行下载,什么样的不可以,浏览器对加载顺序有着特殊的喜好: JS的出现会延迟后续CSS的下载,因为JS会改变页面元素,浏览器会延迟整个页面的渲染直到JS被下载解释并执行,所以必须让CSS的链接在JS前面以达到尽可能的并行。 与浏览器支持的并发连接数有关 在HTTP 1.1协议中要求浏览器访问同一host的连接数不得大于2,但事实上当前绝大多数浏览器都违背了这一要求,具体参见:并发连
插件 parallel.js: 前后端通用的一个并行库 zepto: 用于现代浏览器的兼容 jQuery 的库 totoro: 稳定的跨浏览器测试工具 TheaterJS: 一个用于模拟人输入状态的 JS 库 stellar.js: 前端用于实现异步滚动效果的库,现已不再维护 skrollr: 另一款实现一步滚动的开源库,使用人数众多,可实现各种狂拽酷炫掉渣天的前端效果,看真相 Framework7: 前端框架,是开发人员可以基于 web 技术构建 IOS7 程序 regulex: 用于生成 正则表达式 的
技术在进步,如果半年不学习新技术,那么我就落后了。本教程将带你进入一个全新的技术世界,它叫做WebGL。
babel 是 JavaScript 的编译器,可以将最新 ES 语法的代码轻松转换成任意版本的 JavaScript 代码,其实现原理是先使用 Babylon 解释器将 JavaScript 语法解析成 AST,然后通过遍历处理这颗树实现代码转换。在 babel 中可以通过配置 browserslist 来针对不同的浏览器组合,生成不同的适配代码。
今天来介绍一个 StackBlitz 与 Next.js 和 Google 团队合作的新技术。
想必做前端开发的都应该听说过Bootstrap, 一款优秀的前端开发框架。前段时间博主做的一个项目便尝试着用了boostrap来搭建,确定非常快,而且响应式做的特别好,省去了许多麻烦。不过由于我用的是Bootstrap 3.0,结果发现在ie8下崩掉了,心塞啊!又翻出bootstrap官方API,细读之……这才明白由于bootstrap做响应式所用的栅格布局在ie8下不被支持,而且也不支持html5的新标签和css3的一些效果,如圆角、阴影、一些过渡效果等……翻了好多教程,总结出以下方法,与大家分享!
一、背景 Vue作者尤雨溪在今年4月提出了一个由Vue3搭载的前端开发工具Vite。Vite主要提供了前端开发服务器的功能以及生产环境打包的功能,而其主要突破则是在前端开发服务器这一方面,提供了一种基于ES Module的快速的本地开发服务器。 二、Vite简介 2.1 什么是Vite 在本文编辑时,Vite版本仍处于1.0.0-rc.9,尚未正式发布,并且Vite目前主要支持Vue3项目,尚不识别Vue2语法。下面是引用尤雨溪在微博上对Vite的介绍。 Vite,一个基于浏览器原生 ES imports
一切要从收到一封邮件开始 大早上,我收到一封邮件,StackBlitz说正在与Next.js和Google的团队合作开发一项新技术 几年前,StackBlitz意识到网络正朝着关键的拐点发展。WebA
一、JavaScript之平稳退化 这边使用一个当用户点击某个页面内某个链接弹出一个新窗口的案例: JavaScript使用window对象的open()方法来创建新的浏览器窗口; window.open(url,name,features); 这个方法有三个参数: url:新窗口里打开的网页的url地址。如果省略这个参数(这个参数为空),屏幕上将弹出一个空白的浏览器窗口。 name:新窗口的名字。 featrues:这个参数是以逗号分隔的一个字符串,他的内容是新窗口的各种属性,如新窗口的宽,高,以及新窗口
Hi,大家好,我是CoCo。市面上有很多不同的浏览器,每种浏览器都有数百万用户。因此,在开发一个网站或 Web 应用程序时,就需要测试它与不同浏览器的兼容性。最好、最方便的方法是使用跨浏览器检查工具。
谈到机器学习,我们脑海首先蹦出的编程语言是什么?一定是python。其实除了python,Javascript也是不错的选择。都说现在是大前端时代,从移动开发、服务器端,甚至桌面软件开发(比如大名鼎鼎的VS Code),都有Javascript的身影。
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
开发时我们会使用一些新的 api,但用户的浏览器各种版本都有,可能并不支持这些 api,但我们也不能因此就不用了,这时候就可以通过 polyfill 来解决。
如果你的网站上面有很多第三方JS代码,那么“下载速度的不可控”很有可能导致你的网站会被拖慢。因为JS在执行的时候会影响到页面的DOM和样式等情况。浏览器在解析渲染HTML的时候,如果解析到需要下载文件的script标签,那么会停止解析接下来的HTML,然后下载外链JS文件并执行。等JS执行完毕之后才会继续解析剩下的HTML。这就是所谓的『HTML解析被阻止』。浏览器解析渲染页面的抽象流程图如下:
从网站开发者的角度来看,第三方JS相比第一方JS有如下几个不同之处: 下载速度不可控 JS地址域名与网站域名不同 文件内容不可控 不一定有强缓存(Cache-Control/Expires) 如果你的网站上面有很多第三方JS代码,那么“下载速度的不可控”很有可能导致你的网站会被拖慢。因为JS在执行的时候会影响到页面的DOM和样式等情况。浏览器在解析渲染HTML的时候,如果解析到需要下载文件的script标签,那么会停止解析接下来的HTML,然后下载外链JS文件并执行。等JS执行完毕之后才会继续解析剩下
原文:https://mux.com/blog/streaming-video-on-the-internet-without-mpeg/
说明: 这是本系列的第一篇文章,我会尽快发后续的文章。 源起 1.加快葬送IE6浏览器的进程 世界上使用IE6浏览器最多的地方在中国 中国使用IE6浏览器最多的地方在企业中 让他们自己去装个chorme太难了 索性开发个浏览器(其实是浏览器的外壳)给他们 用"代码改变世界"是博客园园友的口号 2.一劳永逸的解决浏览器兼容问题 各种浏览器的CSS hack问题再也不用担心了 甚至公司里前端的职位也可以减少几个了 3.更方便的使用更强大的HT
微博作为一款体量巨大的应用,能够快速高效的在多个平台上实现复杂的业务功能,是它成功的重要因素之一。在不断前行的路上,微博有哪些成功经验可以供广大开发者借鉴与学习?
对于前端开发者来说,caniuse网站是一个非常有用的工具,它可以帮助我们查询JavaScript API在不同浏览器版本中的兼容性情况。以fetch为例,我们可以在网站上查到其兼容性如下图所示:
市面上有很多不同的浏览器,每种浏览器都有数百万用户。因此,在构建一个网站或 Web 应用程序时,就需要测试它与不同浏览器的兼容性。最好、最方便的方法是使用跨浏览器检查工具。
自从Brendan Eich用十天时间创造了JavaScript,人们对它的吐槽就从未间断过。众所周知JavaScript是一门动态语言。运行于JavaScript引擎中,我们熟悉的有Mozilla的SpiderMonkey,Safari的JavaScriptCore,Edge的Chakra还有大名鼎鼎的V8。V8引擎将JavaScript的运行效率提升到一个新的level。所以后来的Nodejs也采用V8作为引擎,实现了用js进行后端开发的愿景。
原文:https://philipwalton.com/articles/deploying-es2015-code-in-production-today/
浏览器有着大量不同的版本,不同种类的浏览器的内核也不尽相同,所以不同浏览器对代码的解析会存在差异,这就导致对页面渲染效果不统一的问题。
线程:线程是进程中具体办事的,想同时办多件事,就需要开辟多个线程(一个进程中包含多个线程)
说到 HTTP 的 103 状态码,你可能很早就听说过了,但是你不一定真的理解了它。
【新智元导读】北京时间3月31日举行的2018 TensorFlow 开发者峰会上,TensorFlow宣布重大更新:增加支持JavaScript,并推出开源库TensorFlow.js,用户可以完全在浏览器定义、训练和运行机器学习模型。谷歌大脑负责人Jeff Dean、TensorFlow 总监 Rajat Monga等人进行了Keynote演讲。 Jeff Dean主旨演讲:用超强大的计算力,替代ML专家 北京时间3月31日举行的2018 TensorFlow 开发者峰会上,Google Brain负责
一切要从收到一封邮件开始 📷 大早上,我收到一封邮件,StackBlitz说正在与Next.js和Google的团队合作开发一项新技术 几年前,StackBlitz意识到网络正朝着关键的拐点发展。WebAssembly和新功能API的出现使编写基于WebAssembly的操作系统似乎变得可能,该操作系统功能强大到可以完全在浏览器中运行Node.js。我们设想了一个比本地环境更快,更安全和一致的高级开发环境,以实现无缝的代码协作而无需设置本地环境 技术名为:WebContainers WebContainer
众所周知,早期 JavaScript 原生并不支持模块化,直到 2015 年,TC39 发布 ES6,其中有一个规范就是 ES modules(为了方便表述,后面统一简称 ESM)。但是在 ES6 规范提出前,就已经存在了一些模块化方案,比如 CommonJS(in Node.js)、AMD。ESM 与这些规范的共同点就是都支持导入(import)和导出(export)语法,只是其行为的关键词也一些差异。
最近在B乎看到了这么一个问题,能不能通俗地讲 Vite 到底是用来干嘛的,一开始觉得这个问题没什么意思,因为 Vite 这个话题有太多的人讲了。
我自己的经验 如果项目要求支持低版本的 IE 的话(比如 IE7,8),就用较传统的jQuery,Bootstrap,jQuery插件/组件以及类似 Knockout.js 能够提供数据绑定的 JS 库,再加上 require.js + gulp 或者 fis3 做模块化和自动化构建。 如果不需要支持低版本 IE 的话,我们主要使用 React: React – 编写页面组件 Redux – 数据流和状态管理,一般结合 redux-saga 使用 React-router v4 – 前端路由管理(Note:
译者|zzbozheng 原文|http://imweb.io/topic/5907038a2739bbed32f60dad 各浏览器开始支持ES模块,我们可以使用以下浏览器版来体验: Safari 10.1. Chrome Canary 60 – 在 chrome:flags 中开启实验模式. Firefox 54 – 在 about:config 中设置dom.moduleScripts.enabled. Edge 15 – 在 about:flags 中开启实验模式. 你只需要给script标签加
IPFS 伴侣(IPFS Companion)是一款是由IPFS官方应用社区(IPFS-Shipyard)孵化出来的应用项目。 Ta 是一个浏览器插件,可以帮助用户在本地更好的运行、管理自己的节点,并随时查看IPFS节点的资源信息,在之前的文章【IPFS】IPFS伴侣:一个对IPFS资源管理更加便捷的浏览器插件中有详细介绍过。
奇舞团是360集团最大的大前端团队,同样也是TC39和W3C会员,拥有Web前端、服务端、Android、iOS、设计、产品、运营等岗位人员,旗下的开源框架和技术品牌有SpriteJS、ThinkJS、MeshJS、Chimee、QiShare、声享、即视、奇字库、众成翻译、奇舞学院、奇舞周刊、泛前端分享等。
我查了很多资料,逛了很多论坛,最终在Github上找到了一个名为“NativeShure”的JS插件,据说对浏览器的兼容性不错,于是便开始折腾!
Browserify 是什么 Browserify 是一个浏览器端代码模块化的工具 为什么要使用 Browserify 浏览器端的代码模块化有2个明显的好处: 1)前端JS可以使用npm包 我们知道 npm 中有非常丰富的功能包,但没法在浏览器中直接用,因为他们是按照 nodejs 模块化标准写的,使用 require 和 module.exports 引用和构造模块,浏览器不支持此类语法,所以需要浏览器端模块化工具的支持,这样就相当于给浏览器端增加了 npm 库 2)模块化开发 现在前端J
WebRTC 技术由 Google 最先提出,目前主要在桌面版 Chrome 浏览器、桌面版 Edge 浏览器、桌面版 Firefox 浏览器、桌面版 Safari 浏览器以及移动版的 Safari 浏览器上有较为完整的支持,其他平台(例如 Android 平台的浏览器)支持情况均比较差。
JS 的加载分为两个部分:下载和执行。 浏览器在执行 HTML 的时候如果遇到<script>时会停止页面的渲染,去下载和执行 js 的文件直接遇见</scirpt>会继续渲染页面。故浏览器在执行 js 文件的时候浏览器表现为一片空白,为了解决这个问题 ECMAScript 定义了 defer 和 async 两个属性用于控制 JS 的下载和执行。
npm 上的大多数软件包主要是使用 Node.js 开发的。但是,由于采用了自动引用 polyfills 功能,它们中的大多数在浏览器中也可以正常使用。问题是 Webpack 通过自动引用 polyfills 为开发者提供便利,现在又突然取消了。好像他们从来没有提供过这个功能,但是开发人员现在还是希望 npm 上的包在绑定后能在浏览器中使用。
工具类 方便操作对象,数组等的工具库 underscore.js lo-dash 与underscore.js的api基本一致。与underscore比其优势是,效率高;可自定义构建 Sugar 在原生对象上增加一些工具方法 functional.js 提够了一些Curry的支持 bacon.js 函数式编程,cool streamjs 用流的方式来对数组,对象进行系列操作 异步流程控制 发布订阅 eventproxy 朴灵出品 Arbiter.js q Promise风格的 Asyn
当ES模块第一次在ECMAScript 2015中被引入,作为在JavaScript中标准化模块系统的一种方式时,它是通过在import语句中指定相对或绝对路径来实现的。
超过 90% 的浏览器能够运行现代 JavaScript,但传统 JavaScript 的流行仍然是当今 Web 性能问题的最大原因之一。
之前有很多人问学好前端需要学习哪些 js 库, 主流框架应该学 vue 还是 react ? 针对这些问题, 笔者来说说自己的看法和学习总结. 首先我觉得在学习任何知识之前必须要有一个明确的学习目标,
领取专属 10元无门槛券
手把手带您无忧上云