一
最近要做一個新官網,需求評審完之后,考慮到官網都是純靜態頁面,功能簡單,操起vue-cli3幾秒內創建好了項目腳手架,開發前,我打開了首頁模板文件,看到下面這行字,有了一些思考……
<noscript>
<strong>We're sorry but **** doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
(ps:四個*是項目名,略去了)
二
JS最初是用來給界面添加交互的,近幾年,前端火的原因則主要是因為JS,新技術絕大部分都是基於JS,隨着MVVM框架的興起,前端越來越依賴JS,就像現代工業依賴電力一樣,JS甚至一定程度上替代了HTML,使得前端開發者在開發大型項目上更方便快捷了,目前看起來一切都很好,嗯,事實上真的很好嗎?
我想說什么呢,回到本文開始的那行代碼,它的作用顯而易見,禁用了JS的用戶去訪問這個網站,就會看到這行提示:當前項目離了JS就跑不起來,請開啟JS后繼續訪問。當網絡很慢的情況下,JS還沒加載出來(或者干脆用戶禁用了JS)那段時間,網站變得一片空白,完全無法訪問,這正常嗎?顯然這是不可接受的,從程序的可訪問性、容錯性來評分,這個網站的得分肯定是不及格的!
來看幾家比較知名的企業官方網站,在禁用掉JS后表現如何?
小米官網 測試日期2018-11-26
測試結果:基本功能無法使用,導航顯示但無法點擊
魅族官網 測試日期2018-11-26
測試結果:基本功能無法使用,導航不顯示
錘子官網 測試日期2018-11-26
測試結果:基本功能無法使用,頁面一片空白
測試結果很不理想,會有人說,用戶能禁用JS就能啟用JS,和開發者沒關系,不必為此做特殊處理。這種想法顯然站不住腳。
上面幾個隊友做的不太好,有沒有做得比較不錯的?
Apple官網 測試日期2018-11-26
測試結果:90%的功能正常使用,導航顯示且可以點擊切換
Apple:不是我多優秀,全靠同行襯托!
果然沒有對比就沒有傷害。同類型的網站,功能大體相同,Apple.com在干掉了JS的情況下仍然可以正常訪問90%的內容,可訪問性優。
其他包括tencent.com、360.com等網站這方面也做的不錯,就不放圖了。
三
會有人問,誰會去禁用JS?
禁用JS的場景包括但不限於以下幾個場景
- 對安全性要求比較高的系統,比如服務器
- 個人原因禁用了JS(比如為了不看各種彈出廣告)
- 瀏覽器廠商因網絡原因禁用JS(Android端Chrome未來在2G網速下將禁用JS)
對我們開發者來說,用戶的行為是不可控的,當然你可以選擇簡簡單單給個提示讓用戶開啟JS再訪問,對程序員來說,開啟JS腳本很容易,但對千千萬萬計算機小白用戶來說,並不是那么簡單,如果你的網站對他們不是那么重要,他們會選擇關閉頁面
不管主動禁用還是被動禁用,禁用的原因各種各樣,總結起來無非三點:安全原因、廣告騷擾、網絡限制。
既然JS被禁用的場景客觀存在,在項目開發前,根據項目實際情況考慮以下原則:
- 根據實際情況選擇合適的技術方案
- 能用CSS實現的,優先使用CSS
四
現在MVVM大行其道,但不是什么項目都適合用MVVM框架,JS熱火朝天,也不能什么交互都上JS,JS在很多情況下不是必須的,假如要做一個官網,就不建議用單頁應用,用JS做路由,JS掛了,頁面就白屏,另外SEO也是個問題,錘子的官網就是單頁應用。
一般圖片輪播都用JS實現,不考慮低版本瀏覽器的話,CSS3一樣可以做輪播圖,導航下拉效果,完全可以用鼠標hover父級元素display子元素的方式實現(以上三家國產手機廠商都是用的JS),元素定位,大部分情況也不需要用到JS。
今時今日,JS早已經不是用來增加動態效果那么簡單的腳本語言,它已經成了前端發展最重要的一環,切勿迷失在新技術的紅海里,選擇合適的技術做合適的功能,做之前多做一些思考,這就是我想說的。