React.js 別鬧-(2)

一卷雕、簡介

首先要定位节猿,react 是一個前端視圖構(gòu)件庫。雖然涉及底層重寫,但仍舊保持在庫的層面滨嘱。用英文描述就是 library峰鄙,而 Angular 是 Framework 他們自己也稱 Platform。

高下立判太雨!

那么作為一個視圖構(gòu)件吟榴,他的形態(tài)和行為由數(shù)據(jù)控制,隨數(shù)據(jù)變化囊扳。省去了我們找到并通知其修改的過程吩翻。實際上,這可不是 React 的專利锥咸,大家都在解決這個問題狭瞎,他追隨大家的思潮而已。他脫穎而出搏予,主要依賴“逆工程化”思路熊锭。

就是 jsx !

沒有 MVC 之前的前端開發(fā)雪侥,最佳實踐告知我們盡量把數(shù)據(jù)視圖分離開碗殷,解耦合。便于工程化管理和迭代速缨,在組件化開發(fā)中锌妻,逆氣而行,將 JavaScript HTML 及 CSS 全部封裝在一個文件中旬牲,并將此文件看做構(gòu)成項目的最小單元仿粹。

還是寫個例子比較容易說明問題

點贊

效果圖如下

圖來自 React.js 小書

相信你有前端基礎,這個功能非常簡單引谜。于是開始動手

.input-group>.btn-group>(button.btn.btn-default + button.btn.btn-default)

為了實現(xiàn)點擊效果牍陌,你需要添加一個事件監(jiān)聽來 toggle 狀態(tài)

$('button').on('click',()=>$(this).toggleClass('like'))

實際實現(xiàn)需要調(diào)試修改主要思路就是上邊這樣了。那么员咽,問題來了毒涧。如果你的另外一個項目中同樣有這樣一個點贊功能,那該如何復用呢贝室?(復制粘貼契讲?fckaw)

其實還是有優(yōu)化的方向和思路的,比如滑频,我把依賴去掉捡偏,把 JavaScript 內(nèi)聯(lián)到 HTML 里面,這樣峡迷,下次使用只需要復制這一整段就行了银伟,看上去像是“暢言”的實現(xiàn)方式你虹。實際上,還是很蠢彤避。

  • 內(nèi)聯(lián)代碼可維護性為0
  • 內(nèi)聯(lián)阻塞傅物,使得你的代碼執(zhí)行效率極差
  • 內(nèi)聯(lián)代碼丑哭了
  • 內(nèi)聯(lián)無法利用瀏覽器緩存策略

于是有了框架,把最佳實踐整合起來解決這個問題琉预。React 就是其中大刀闊斧改革者董饰。

高級復用

JavaScript 放入 HTML 不合適,那HTML 放入 JavaScript 然后用 innerHTML 吐出來如何呢圆米?

class LikeButton {
  render(){
    return `
      <button id="like">
           <span class="like-text">like</span>
      </button>
    `
  }
}

const like1 = new LikeButton()
const like2 = new LikeButton()
wrapper.innerHTML = like1.render()
wrapper.innerHTML = like2.render()

這種古老的聲明式 class 方式雖然也解決了復用的問題卒暂,但蠢得讓人看著難受。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娄帖,一起剝皮案震驚了整個濱河市也祠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌块茁,老刑警劉巖齿坷,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異数焊,居然都是意外死亡,警方通過查閱死者的電腦和手機崎场,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門佩耳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谭跨,你說我怎么就攤上這事干厚。” “怎么了螃宙?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵蛮瞄,是天一觀的道長。 經(jīng)常有香客問我谆扎,道長挂捅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任堂湖,我火速辦了婚禮闲先,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘无蜂。我一直安慰自己伺糠,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布斥季。 她就那樣靜靜地躺著训桶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舵揭,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天慰照,我揣著相機與錄音,去河邊找鬼琉朽。 笑死毒租,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的箱叁。 我是一名探鬼主播墅垮,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耕漱!你這毒婦竟也來了算色?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤螟够,失蹤者是張志新(化名)和其女友劉穎灾梦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妓笙,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡若河,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了寞宫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萧福。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辈赋,靈堂內(nèi)的尸體忽然破棺而出鲫忍,到底是詐尸還是另有隱情,我是刑警寧澤钥屈,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布悟民,位于F島的核電站,受9級特大地震影響篷就,放射性物質(zhì)發(fā)生泄漏射亏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一腻脏、第九天 我趴在偏房一處隱蔽的房頂上張望鸦泳。 院中可真熱鬧,春花似錦永品、人聲如沸做鹰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钾麸。三九已至更振,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饭尝,已是汗流浹背肯腕。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钥平,地道東北人实撒。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像涉瘾,于是被迫代替她去往敵國和親知态。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,104評論 25 707
  • React Native 是最近非沉⑴眩火的一個話題负敏,介紹如何利用 React Native 進行開發(fā)的文章和書籍多如...
    零度_不結(jié)冰閱讀 676評論 0 1
  • 昨天,我在手機上收到一條短信: 可不秘蛇,今天我就剛剛收到一個可疑份子的來信其做。不過,不是來自通信赁还,而是來自簡書里的簡信...
    美心琪子閱讀 352評論 4 2
  • 隨心所欲 一間房妖泄,一張床躺著已經(jīng)結(jié)婚的2個人。有時背對著背秽浇,有時他看著她的背浮庐,我卻已經(jīng)...
    e8f8f5de90aa閱讀 258評論 0 0
  • 我對于幸福自由度是這樣定義的,你的幸福越容易實現(xiàn)柬焕,你的自由度越高!比如對于我來說梭域,我的幸福是斑举,將來有一個輕松點的工...
    Angel0603閱讀 437評論 0 0