前端學習週記(2)——讀書筆記1

突然覺得好難哇,然後就是一個人苦苦用這win系統,然後一回頭看到大家都是linux,感覺被孤立了(再加上一些無奈的原因,又不能重裝系統。順便在開頭表揚一下,剛剛發現這個新的編輯器每隔半分鐘左右似乎開始自動保存了,(*^▽^*)……算了,我還是記着隨時保存吧。順便再提出一個很好的解決強迫症們換行問題的方法,就是先隨手打個字,然後把光標移到字的前面,再按回車就好了)

-------------------------------------
又及:這篇也絕對不坑,順便立個flag,暑假回去一定會把圖論與線性代數那裏寫完了
-------------------------------------

言歸正傳,差點又寫成日記。。。

這周的主要任務是——看書
React.js 小書
首先,解決一個最基本的問題,什麼是react?

React 起源於 Facebook 的內部項目,因爲該公司對市場上所有 JavaScript MVC 框架,都不滿意,就決定自己寫一套,用來架設Instagram 的網站。做出來以後,發現這套東西很好用,就在2013年5月開源了。
外文名
React
公    司
 Facebook
作    用
架設Instagram 的網站
特    點
聲明式設計、高效、靈活
由於 React的設計思想極其獨特,屬於革命性創新,性能出衆,代碼邏輯卻非常簡單。所以,越來越多的人開始關注和使用,認爲它可能是將來 Web 開發的主流工具。
這個項目本身也越滾越大,從最早的UI引擎變成了一整套前後端通吃的 Web App 解決方案。衍生的 React Native 項目,目標更是宏偉,希望用寫 Web App 的方式去寫 Native App。如果能夠實現,整個互聯網行業都會被顛覆,因爲同一組人只需要寫一次 UI ,就能同時運行在服務器、瀏覽器和手機。
React主要用於構建UI。你可以在React裏傳遞多種類型的參數,如聲明代碼,幫助你渲染出UI、也可以是靜態的HTML DOM元素、也可以傳遞動態變量、甚至是可交互的應用組件。
以上↑是百度百科看不懂的解釋
就簡單當歷史看罷
下面是知乎關於ReactJS 真的好嗎?的吐槽
當然,以上內容僅僅爲博君一笑,其實都不是重點。
簡單而言,所謂react就是傳說中一種叫做庫的東西。

下面進入正題

0.預備知識

HTML
CSS
JavaScript


1.你們最喜歡的Hello World

The easiest way to get started with React is to use this Hello World example code on CodePen. You don’t need to install anything; you can just open it in another tab and follow along as we go through examples. If you’d rather use a local development environment, check out the Installation section.

The smallest React example looks like this:

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);
人工翻譯一下:最簡易的的接觸React的方法就是在CodePen上運行這個Hello World的栗子。你無須裝任何東西,可以直接打開然後按這個例子來做。如果你個人更偏愛本地的開發環境,就去安裝吧。
最小的react的栗子如下:
#見代碼↑

以上來自官網(就是上面的那個官網鏈接)
------------------------------引用自githubWeb應用組件化的權衡

目前有哪些流行的組件化框架?

我們現在開發Web應用,一般也不會從0開始,通常是選取一個核心框架(庫),然後在此基礎上確定一些規則,逐步構建外圍體系,現在比較火的有React,Angular,Vue,Polymer等。

“MV*”:Angular,Vue等
“反應式”:React,Reactive等
標準增強:Polymer

幾個流派各自特點是什麼?

MV*: 分層,綁定
React: 組件化,單向數據流

React中一般的組件相當於MVVM流派中的什麼?

以上提到的幾個東西,在組件化這塊,可能爭議最大的是Angular,因爲Angular 1.x的官方指引中,並未在組件化這個方向上作一些指導,也沒有提倡,甚至連建議都沒有,而React和Polymer是天然組件化的,Vue提供的文檔裏以很大篇幅詳細說明了組件化的機制和實踐方式。

但是,這並不是說,Angular 1.x就是與組件化衝突的,它仍然可以通過directive等相關機制,實現自己特色的組件化方案。

Directive可以實現自定義標籤和自定義屬性,這兩者可以理所當然地歸類到組件中,但是,在Angular中,模板本身也可以視爲一種組件,一種輕量級的組件,它不一定就是靜態的,仍然可以有一些簡單的操作和行爲。

Directive和模板相當於MVVM中的View層,它們的運行,一般是離不開ViewModel的支撐的,在Angular中,這就是controller。所以,如果以Angular框架來說,directive和模板、controller,共同形成了視圖層組件體系。推廣到其他MVVM框架來說,也就是View和ViewModel,而React整體就處於視圖層,所以這兩者算是一個對等關係。

這些流派有共同的未來嗎,會是什麼?

無論是哪種框架,在開發Web應用的時候都要面臨一個問題:業務數據層如何設計?

這一層東西,其實目前各路框架都未提出有力的解決方案,大家的重點都還是在做上層UI。

但是從長遠來看,業務數據層會是一個基本沒有框架差異的東西,同一個方案,大家都可以用,比如說之前有人把flux之類的東西放到React之外的框架用,也一樣可以。

而上層UI,其實現過程現在也很明確地是要往Web Components靠攏,實現邏輯都是使用ES新標準,數據綁定機制都是getter setter或者observe,加載方式都在考慮HTTP2之類,一旦某個領域出現了理念突破,很快就會被其他框架吸收融合。

所以總的來說,各框架是趨同的。

-------------------------------https://github.com/xufei/blog/issues/22
好了,預習電路去了,專業課不能掛,阿門
-----------------------------------------------------更新於2018/5/14 21:25

上完馬原課,又是好晚了,就簡單更新一點吧



一個簡單的點贊功能

我們會從一個簡單的點贊功能講起。 假設現在我們需要實現一個點贊、取消點讚的功能。

React.js 組件化圖片

如果你對前端稍微有一點了解,你就順手拈來:

HTML:

  <body>
    <div class='wrapper'>
      <button class='like-btn'>
        <span class='like-text'>點贊</span>
        <span>
效果就是簡單的按鈕,其醜無比,就不放圖片了

爲了模擬現實當中的實際情況,所以這裏特意把這個 button 裏面的 HTML 結構搞得稍微複雜一些。有了這個 HTML 結構,現在就給它加入一些 JavaScript 的行爲:

JavaScript:

  const button = document.querySelector('.like-btn')
  const buttonText = button.querySelector('.like-text')
  let isLiked = false
  button.addEventListener('click', () => {
    isLiked = !isLiked
    if (isLiked) {
      buttonText.innerHTML = '取消'
    } else {
      buttonText.innerHTML = '點贊'
    }
  }, false)

功能和實現都很簡單,按鈕已經可以提供點贊和取消點讚的功能。這時候你的同事跑過來了,說他很喜歡你的按鈕,他也想用你寫的這個點贊功能。這時候問題就來了,你就會發現這種實現方式很致命:你的同事要把整個 button 和裏面的結構複製過去,還有整段 JavaScript 代碼也要複製過去。這樣的實現方式沒有任何可複用性。

其實,還是挺容易看懂什麼意思的,就是加了一些花哨的操作,這樣就不會只是簡簡單單的一個按鈕了
-----------------------------------------------------更新於2018/5/15 21:55






好 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章