未加星标

Why Javascript As A Dependency Is Fucking Fine

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

A couple days ago my Twitter feed lit on fire with a debate around Progressive Enhancement and, specifically, whether websites should work without JS or not.

Today, I’d like to share with you a collection thoughts & ideas on the subject that have been around my mind.

TL;DR: javascript as a dependency is fucking fine, and sometimes dropping support for non-JS users is a worthy trade-off.

What is Progressive Enhancement?

“Progressive enhancement means that everyone can access the basic content and functionality of a page in any browser, and those without certain browser features may receive a reduced but still functional experience” ― Lighthouse

A progressively enhanced website starts with a baseline of content and functionality, and then increases the richness and complexity of the user experience based on browser capabilities.

This approach is still relevant and useful today. I’m not here to convince you otherwise.

However, many developers seem to take this to the extreme of saying “any website should work without JS” (including complex web applications like Facebook). While many others seem to think we should drop Progressive Enhancement altogether and ignore those cases where Javascript fails and users are welcomed with nothing but a blank screen.

Turns out it’s not as simple as a binary choice. Remember who you’re buildingfor

I’m quoting myself here: “Pragmatism (not to be confused with plain bad code) should trump idealism every time. After all, we’re not building for ourselves, but for users & businesses.”

Unless you’re working on a personal project, every decision you make as a developer should be done with nothing but two things in mind: the users you’re building for & the business you’re building for. If making the site work without JS is not relevant for the target user base, then save that business time & resources by just not fucking doing it .

“I’m a strong believer in progressive enhancement, but also that each phase of the enhancement needs a user.” Jake Archibald

Accessibility

Just like Progressive Enhancement, a11y is often seen as an ethical decision as much as a technical one. And while building functional UI components with CSS only is fun, as an accessibility advocate, you may want to think about it twice: it is often impossible to build accessible UI components without Javascript .

Apart from labels and a few other simple code snippets, most ARIA-enhanced components need Javascript to properly reach Assistive Technologies (like Screen Readers). For example: HTML & CSS are not enough to provide proper keyboard functionality or communicate contracted/expanded states.

Separation ofconcerns

There is no point in replacing solid Javascript with CSS hacks. Specially considering there are cross-browser issues with CSS as well.

Using CSS instead of JS for handling logic & states is just as bad as using HTML’s <center> tag instead of CSS to center text. It’s not what the language was meant to do in the first place.

Separation of concerns is still a very valid principle today, and it perfectly fits this scenario.

Performance

Most content-based websites can still benefit from the “start with HTML, then progressively add CSS and Javascript” approach. After all, you should not need JS to make your small blog’s or marketing website’s content available to a browser.

However, web applications are a whole different story.

Models like offline-first and the app-shell architecture now give us the opportunity to build robust applications with realiably good performance. This is specially important for users with slow, unreliable and spotty internet connections (mostly in developing countries).

The only downside is that these models are often hard to “progressively enhance”, making it almost impossible to make core functionality available without Javascript. Yes, that would be ideal. No, it’s not always possible.

You are now faced with a choice: Either drop support for non-js users, or deliver a frustrating, sub-par experience for users with lie-wifi and slow network connections.

According to a study conducted by Yahoo! in 2010, 0.25% (Brazil) to 2% (USA) of people on the web have JavaScript disabled.

Akamai’s rankings for Q3 2015 show 16 countries with an average internet connection speed of less than 5mbps. That includes China, with an average of 3.7mbps, representing about 22% of the total internet population .

So while you should always consider your app’s target market first, it’s worth mentioning that if you ever decide to drop support for non-JS users for the sake of building a more performant and robust web application for those users with poor network connections, maybe the math is on your side.

Final Thoughts It’s not a binary choice. There’s no simple answer to this matter. Stay pragmatic. Remember every enhancement needs a user. If there is no user, there is no point. Don’t make Javascript more of a dependency than it needs to be, but don’t avoid it either. Javascript can be awesome for accessibility & performance. Further Reading “Is It Accessible?” by Scott Ohara Progressive Enhancement isn’t dead but it smells funny by Nolan Lawson We Need Javascript To Fix The Web by Christian Heilmann You Might Need Javascript by Hugo Giraudel

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

主题: JavaCSSHTMLRIAJavaScriptFacebookTwitter
分页:12
转载请注明
本文标题:Why Javascript As A Dependency Is Fucking Fine
本站链接:http://www.codesec.net/view/484272.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(30)