## 技術/思想的斗爭
什么是技術思想的斗爭?
當解決問題有多種方案,每一種都有各自的優缺點,那么此時怎么選擇做決定呢?這很痛苦,因為每一種選擇都意味著失去。
在下面這個列表列出了一些問題中出現了技術/思想斗爭:
- 網頁加載文件
曾經在[網站靜態文件之思考](http://www.hmoore.net/xiak/quanduan/226934)這個問題中我們有過探討,為了合理規劃網頁加載的資源,讓用戶只加載必要的,不必浪費流量,你能想象一下2g網絡下打開網頁龜速嗎,你能想象流量用超了之后,每超出1kb之后如果沒有補辦流量加油包的話,會扣多少錢嗎?所以,只加載所需,并且只在需要的時候,按需加載(懶加載)有多么的重要。
通過這樣規劃設計出來的網頁,不會浪費用戶流量,進首頁就不會加載商品頁所用到的樣式,這樣用戶第一次訪問網頁就會很快,并且沒有浪費不必要的流量,同樣用戶再進商品詳情頁也不會很慢。等到第二次再訪問已經訪問過的頁面就會很快了,因為有了緩存。
但是很多人又說這樣不行啊,公用的提出來,每個不同的頁面還有各自的文件,那么用戶第一次進來至少需要加載兩個文件,這增加了http請求數,并且由于瀏覽器同步加載文件數量有限啊,等等理由,總之就是這樣不行了。現在需要把這兩個文件打包啊,打包成一個文件啊,這樣只加載一個文件,就減少了http請求數了,但是問題又出現了,當我們把好幾個頁面都打包到一起時發現,這個文件如此大,甚至1MB了,呵呵,這能接受嗎?在我的印象中,網頁中用到的靜態文件一般都很小,即使是最大的圖片文件一般也都在500kb左右,一個js就1MB,這還能忍嗎?又有人要開始說了,現在什么年代了,都是3G,4G,WiFi了好不好,這點大小怕是那么,傳統思維要改變了,js文件1MB還好了,又不大,你真沒見過世面,這樣的好處還有用戶次下次在訪問其他頁面比如商品頁就不需要在加載文件了,只是第一次慢一點,此后的訪問都會很快,這不好嗎?我想說,呵呵,誰說我要繼續訪問其他頁面了啊,我就訪問一次而已,2G 網絡,看你一個新聞,你把商品頁的樣式給我干什么,浪費我流量,不要臉!
已經沒法溝通了,簡直!
一切都應該是為了用戶,為了體驗。
要快就得減少文件大小,減少加載文件的數量(減少http請求數)。
可是文件數量減少了,http請求數減少了,你丫卻把文件給整大了。你讓我怎么說你。
要快,就要減少文件體積,就要減少http請求數。
但是減少http請求數之后文件又大了,**這不是相互矛盾嗎,世上哪有最鋒利的矛和最堅固的盾啊。** — 有,但它們不能同時存在。
似乎二者不能并存,如何消除隔閡,取到一個同時兼顧二者優點的方案呢? 這就是我們的兩難,我們的斗爭。
### 擴展
參考:
- [網站靜態文件之思考](http://www.hmoore.net/xiak/quanduan/226934)
- [程序員小測試:保守派 vs 自由派](http://www.ruanyifeng.com/blog/2016/09/conservative_vs_liberal_programmer.html)
>[info] require.js要求,每個模塊是一個單獨的js文件。這樣的話,如果加載多個模塊,就會發出多次HTTP請求,會影響網頁的加載速度。因此,require.js提供了一個優化工具,當模塊部署完畢以后,可以用這個工具將多個模塊合并在一個文件中,減少HTTP請求數。
引自:[Javascript模塊化編程(三):require.js的用法 - 阮一峰的網絡日志](http://www.ruanyifeng.com/blog/2012/11/require_js.html)
update:2017-3-8 11:34:04
- 開始
- 微信小程序
- 獲取用戶信息
- 記錄
- HTML
- HTML5
- 文檔根節點
- 你真的了解script標簽嗎?
- 文檔結構
- 已經落后的技術
- form表單
- html實體
- CSS
- css優先級 & 設計模式
- 如何編寫高效的 CSS 選擇符
- 筆記
- 小計
- flex布局
- 細節體驗
- Flex
- Grid
- tailwindcss
- JavaScript
- javascript物語
- js函數定義
- js中的數組對象
- js的json解析
- js中數組的操作
- js事件冒泡
- js中的判斷
- js語句聲明會提前
- cookie操作
- 關于javascript你要知道的
- 關于innerHTML的試驗
- js引擎與GUI引擎是互斥的
- 如何安全的修改對象
- 當渲染引擎遇上強迫癥
- 不要使用連相等
- 修改數組-對象
- 算法-函數
- 事件探析
- 事件循環
- js事件循環中的上下文和作用域的經典問題
- Promise
- 最佳實踐
- 頁面遮罩加載效果
- 網站靜態文件之思考
- 圖片加載問題
- 路由及轉場解決方案
- web app
- 寫一個頁面路由轉場的管理工具
- 談編程
- 技術/思想的斗爭
- 前端技術選型分析
- 我想放點html模板代碼
- 開發自適應網頁
- 后臺前端項目的開發
- 網站PC版和移動版的模板方案
- 前后端分離
- 淘寶前后端分離
- 前后端分離的思考與實踐(一)
- 前后端分離的思考與實踐(二)
- 前后端分離的思考與實踐(三)
- 前后端分離的思考與實踐(四)
- 前后端分離的思考與實踐(五)
- 前后端分離的思考與實踐(六)
- 動畫
- 開發小技巧
- Axios
- 屏幕適配
- 理論基礎
- 思考
- flexible.js原理
- 實驗
- rem的坑,為什么要設置成百分比,為什么又是62.5%
- 為什么以一個標準適配的,其它寬度也能同等適配
- 自適應、響應式、彈性布局、屏幕適配
- 適配:都用百分比?
- 番外篇
- 給你看看0.5px長什么樣?
- 用事實證明viewport scale縮放不會改變rem元素的大小
- 為什么PC端頁面縮放不會影響rem元素
- 究竟以哪個為設備獨立像素
- PC到移動端初試
- 深入理解px
- 響應式之柵格系統
- 深入理解px(二)
- 一篇搞定移動端適配
- flex版柵格布局
- 其他
- 瀏覽器加載初探
- 警惕你的開發工具
- JS模塊化
- webpack
- 打包原理
- 異步加載
- gulp
- 命名規范
- 接口開發
- sea.js學習
- require.js學習
- react學習
- react筆記
- vue學習
- vue3
- 工具、技巧
- 臨時筆記
- 怎么維護好開源項目
- 待辦
- 對前端MVV*C框架的思考
- jquery問題
- 臨時
- 好文
- 節流防抖