国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端要給力 — 平凡之路

WelliJhon / 3393人閱讀

摘要:平凡之路前端發展了十幾年,現在幾乎到達頂峰的速度了,近兩年推出的框架層出不窮,早已不是一統江湖了。模板和數據分離也好,狀態和表現分離也好,我越來越體會到分是為了合這條平凡之路,還會頻繁的發展和融合下去。

一直想總結下自己摸打滾爬的前端經歷,3年,從一個極討厭前端的人,變成一個吃前端飯碗的人。沒有人帶過我,跌跌撞撞的緩慢前進,但我很喜歡分享,喜歡一起進步,這會是我以后一直樂意做的事情。

綜述 娃娃學步

w3cschool上的 html / css / javascript / 以及jquery教程,萬事開頭的第一步

Say hello to the world!

小跑上路

jquery 輕松玩耍DOM和event

jquery-ui 增強的UI組件

Bootstrap 從此傻瓜式排版就能搞定

Bootstrap 主題模板 and 管理系統模板 快速搭建項目,簡單,好看

遇上平衡木

在小跑上路的過程中,做出來的東西看起來很專業,注意是“看起來”。如果不理解真正的前端技能,那只能是看起來專業,內部結構還是亂糟糟的,或者是遇到bug不知道怎么調,東一句西一句,拆了東墻補西墻。這過程就像走在平衡木上,稍不留神就會摔下去。

首先要了解css的布局原理

盒模型

定位模型

有了布局的基本理論后,嘗試去理解Boostrap里的柵格系統 row col span2 背后的style

js最重要的三點: 閉包、原型、作用域

JS中的閉包及使用場合

使用閉包解決循環引用問題

閉包、原型、作用域 面試整理

關于js的原型和作用域,我沒專門寫過文章,建議去博客園搜下。如果想要完整的理解js語言機制,可以去看《Javascript模式》這本書,或者看我整理的讀書筆記

《JavaScript模式》讀書筆記系列

華麗跳躍謝幕

只有把平衡木上的技能磨熟練后,我們才能真正的游刃有余,保證不從平衡木上摔下來的前提下,再有余力去設計如何華麗的跳躍和謝幕。

組件封裝

還沒了解js對類(或模塊)的封裝前,我們的代碼可能是這樣的

var getData = function(){
    // ......
};

function editFunc(){
    // ......
};

$(".refresh-btn").on("click", function(){
    var data = getData();
    var $target = $($(this).attr("data-target"));
    $target.empty();

    for(var i=0; i");
        $child.append("" + data[i]["name"] + "");
        // ......
        $child.append("編輯");
        $target.append($child);
    }

    $target.find(".edit-link").on("click", editFunc);
});

一個點擊就獲取數據,然后刷新表格的功能。如果一個頁面中有多個類似的異步刷新的表格,且每個表格的字段又各不相同,那么最偷懶的做法就是拷貝大段代碼,然后再調整的字段。這樣的代碼簡直了,太難維護了!

var table1 = new AjaxTable({
    el: "#dataTable",
    dataUrl: "/path/to/action/"
});

table1.refresh();

如果代碼變成這樣,那就爽多了,獲取數據和刷新表格的過程都封在了AjaxTable中,各個使用之處只需要傳個參數調用下refresh()即可,減少了大量重復(相似的)代碼。這就是對UI組件/功能組件的封裝。

以前為了準備面試時的“手撕代碼”,寫過一個簡單的輪播組件,不用jquery(面試經常不允許使用任何庫)

原生js的Slider組件

還寫過下面一些文章

自己寫的jquery分頁插件

為Highcharts做包裝 (有點類似上面示例中的AjaxTable

一步步做組件-學校選擇器(系列) (系列長文,如何把一段生硬實現的代碼一步一步封裝和擴展成為一個可配置的UI組件)

模塊化開發

如果要在頁面上引入外部的js庫,最初學習的時候是這樣引入的





由于瀏覽器中js的執行(非加載)過程是在單線程中的,而各js文件又會存在依賴關系,比如 jquery-ui 依賴 jquery,bootstrap 也依賴 jquery,所以

我們可以把這一段作為一個base的父頁面,命名為base.html,每個“具體業務”的頁面都繼承自它。

%{ extends "base.html" }%

%{ block styles }%

%{ endblock }%

%{ block content }%
具體業務...
%{ endblock }% %{ block scripts }%

上面相當于一個業務頁面,它由sectionAsectionB兩個頁面組件組成,sectionA.tplsectionB.tpl是html模板。在應用層(即業務)頁面中初始化兩個js模塊AB,并且把自身的App變量傳遞給模塊(new Module(App)),可以實現子模塊與應用層頁面的通信,甚至是模塊之間的通信。

這樣把頁面拆成粒度更細的結構,好處是頁面模塊可以復用,也便于管理,改動頁面中的一小塊時只需在所處的模塊中,縮小改動的影響范圍。

還看過一種思想是,把css文件也當做資源由requireJS動態加載,這樣上面示例中的include xxx.css都不需要了,頁面模塊的css資源作為該模塊的依賴,寫在js模塊的define的依賴中。

define(["jquery", "sectionA.css"], function($){
    // 業務模塊...
});

這樣把css和js都抽象成“資源”,相當于

組件 = 模板 + 資源

一個頁面整體的模板,相當于多個頁面組件的拼裝而成。更進一步,如果能讓頁面組件做到異步渲染的話(即可以由js去解析模板語法和變量,而不是交給web框架),才能真正做到頁面渲染的本質:

呈現給用戶的頁面 = 頁面模板 (包括組件的模板) + 數據

“渲染”就是將帶數據變量的頁面模板輸出成標準的html,同步渲染是指在服務端解析模板并輸出完整html到瀏覽器中,而異步渲染指直接在瀏覽器中通過javascript 根據傳入的數據將模板輸出成標準html。

同一模板如果既能在服務端同步渲染,又能在瀏覽器端異步渲染的話,我們就不需要關心“數據”是后端框架直接輸出到頁面的,還是ajax動態取來的。對模板來說,數據就是個“接口”,而 模板 + 數據 = 渲染。這樣我們作為前端,才能把更多精力放在模板和交互上,不用管數據的傳遞方式。

平凡之路

前端發展了十幾年,現在幾乎到達頂峰的速度了,近兩年推出的框架層出不窮,jquery早已不是一統江湖了。每個人的精力都有限,不可能一個個都學過來,但是必須承認,前端是一個完整的體系(我之前整理的知識體系),有它獨特和魅力之處。不僅是框架,還有更多的工程化問題,框架都是為了解決某類相通的問題而生。模板和數據分離也好,“狀態”和“表現”分離也好,我越來越體會到

“分”是為了“合”

這條平凡之路,還會“頻繁”的發展和融合下去。

本文最早發表在我的個人博客上,轉載請保留出處 http://jsorz.cn/blog/2015/12/twisted-way-to-awesome-fe.html

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78614.html

相關文章

  • 4.平凡之路-封裝幫助類和加載屬性文件

    摘要:文件知識點修飾類不能被基礎修飾方法不能被重寫修改變量常量不允許進行實例化靜態代碼塊只是加載一次加載核心配置文件失敗圖解說明加載屬性文件新建的根目錄下修改核心配置文件加載屬性文件配置數據庫的環境事務管理器保證數據的完整性 MyBatisUtils.java 文件 /** * 知識點: * final 修飾類 : 不能被基礎 * 修飾方法 : 不能被重寫 * 修改變量 : 常量 ...

    snifes 評論0 收藏0
  • 3.平凡之路-傳統模式添加操作

    摘要:回顧上節課我們完成了的環境搭建核心配置文件映射文件的執行過程如何執行定制的語句我們測試的是死的數據那么下面我們使用容器傳遞動態的數據添加操作傳遞數據專題通過傳遞數據映射文件代碼傳遞參數數據的類型或者提供額內置類型映射中的獲取對應的值 回顧: 上節課我們完成了MyBatis的環境搭建核心配置文件映射文件API的執行過程如何執行定制的SQL語句 我們測試的是死的數據,那么下面我們使用容器傳...

    cucumber 評論0 收藏0
  • 5.平凡之路-查詢結果集簡單處理

    摘要:說在前面的話命名空間暫時約定持久化類實體的類名的全路徑一簡單查詢結果集處理查詢結果集處理為類型字段作為中的值映射文件命名空間唯一的不能重復結果集處理后變成類型當你傳遞的是一個簡單的數據類型的形參的時候那么你的值 說在前面的話 : 命名空間暫時約定-持久化類(實體Bean)的類名的全路徑 com.shxt.model.Skill 一 簡單查詢結果集處理 1.查詢結果集處理為Map類型 ...

    lowett 評論0 收藏0
  • 6.平凡之路-單條件模糊查詢

    摘要:并且如果使用那么必須要指明值使用簡單的數據類型不好使使用接口代理模式的注解也可以 屬于MyBatis的核心之一,這里面的坑比較多,大家多多看看吧 一 模糊查詢的三種方式介紹 我會使用resultMap處理結果集數據 1.死數據的模糊查詢 映射文件 SELECT * FROM...

    tuantuan 評論0 收藏0

發表評論

0條評論

WelliJhon

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<