文章出處

寫在前面

花個一周多看了下最新的前端技術,感覺受益匪淺,前端還是大有搞頭的,跟后端越來越像了。

主要學習內容:npm、webpack、es 6、react、ant design、flux、reflux;這里稍微小結下。

NPM(node package manager)

npm是node的包管理工具,類似于maven;將開發者從繁瑣的包管理工作(版本、依賴等)中解放出來,更加專注于功能的開發。

安裝方法

新版的nodejs已經集成了npm,所以去下個nodejs安裝即可完成npm的安裝。

主要命令:安裝、卸載、更新、查看、搜索等

npm install; npm uninstall; npm update; npm ls; npm search;

我們重點關注下安裝命令,分兩種,本地安裝和全局安裝。

本地安裝:npm install webpack package

會被下載到當前所在目錄的node_modules文件夾下,只能在當前目錄下使用。

全局安裝:npm install –g webpack package

會被下載到到特定的系統目錄下,安裝的package能夠在所有目錄下使用。

另外,還可以通過package.json配置文件進行安裝,類似于pom.xml;我們可以將項目依賴的包在package.json這個文件里聲明,然后輸入npm install命令完成包的安裝,一般項目中,我們都會使用這種方式。

Webpack

模塊加載器兼打包工具,能把各種資源,例如JS(含JSX)、coffee、樣式(含less/sass)、圖片等都作為模塊來使用和處理。

安裝(一般作為全局安裝):

npm install webpack –g

webpack配置:

通過配置文件配置:webpack.config.js

主要配置頁面入口文件、入口文件輸出配置、加載器配置、插件配置等。

運行webpack

輸入webpack --display-error-details命令即可,其中--display-error-details用于打印詳細的錯誤信息,方便調試。

其它參數,有興趣的可以參考官網等資料。

ES 6(ECMAScript 6), 又稱ECMAScript 2015

ES6是一個標準規范,JavaScript是ES6的一個實現。

我們目前的前端框架會盡量使用ES6語法,因為這是趨勢,可讀性強,也符合后端開發思維,并且ES6規范已經出來了,離普及只是時間問題。

瀏覽器支持情況

目前瀏覽器對ES6語法的支持較差,但是可以使用一些轉碼器,如Babel轉碼器,能將ES6語法轉為ES5語法,從而在各大瀏覽器上正常運行。

另外,webpack自帶babel-loader加載器,也可以加載ES6語法的js文件。

語法舉例

具體細節的語法很多,就不說了,簡單舉幾個例子:

Class語法

以前我們JS是通過function來構造類的,跟java等語言差異較大, ES6引入了class概念,如下示例。

Import, export, extends語法

React

用于構建用戶界面的Javascript庫 ,其實就是一個js庫。

機制

簡單說下, react主要涉及虛擬dom和React.Component組件,每個React組件都有一個state狀態,state變化后會重新調用組件的 render 方法渲染整個組件的 UI,這里不是直接操作dom,而是通過diff算法對虛擬dom進行一次計算,得到需要更新的dom,然后把需要更新的那部分dom寫入到真正地dom里。另外組件是可以復用的;

個人認為,react開發主要指的是組件開發,頁面上所有的內容都可以封裝成組件,每個組件都有state狀態,組件隨著state的變化而變化。

安裝react

npm install react react-dom --save

另外還要安裝加載器:

babel-loader //進行轉碼
css-loader //對css文件進行打包
style-loader //將樣式添加進 DOM 中
npm install babel-loader css-loader style-loader –save

安裝轉碼規則:

npm install babel-preset-es2015 babel-preset-react --save

具體可見demo中package.json添加的依賴。

使用示例

一個有狀態的組件示例,關注下react組件的生命周期方法

Ant Design

其實就是一系列基于react實現的前端組件,包括按鈕、圖標、表單、輸入框、評分等組件。

類似的還有React-Bootstrap,后者的風格是Twitter 的Bootstrap風格。

ant design有點模仿React-Bootstrap的感覺。

安裝

npm install antd

風格樣式示例

官網有很詳細的關于每個組件的介紹,還附帶源碼:

http://ant.design/docs/react/introduce

使用示例

具體見demo源碼,其實跟平常的react組件的使用一樣;

flux和reflux

背景

React在設計之初只關注在View本身上,其余部分如數據的獲取事件處理等,全然不在考慮之內。

flux思想

flux是一種思想,用來解決react未解決的數據獲取和事件處理。

View: 視圖層

Action(動作):視圖層發出的消息(比如mouseClick)

Dispatcher(派發器):用來接收Actions、執行回調函數

Store(數據層):用來存放應用的狀態,一旦發生變動,就提醒Views要更新頁面

Flux 的最大特點,就是數據的"單向流動"。如下圖:

flux的實現Reflux

flux思想的一種實現,其余的實現還有redux,比reflux復雜些,暫時沒去了解,現在網上很多項目是使redux的,這個后續我們可以慢慢引進。

這里,我們主要關注reflux

簡而言之,Reflux里有兩個組件:Store和Action。Store負責和數據相關的內容:從服務器上獲取數據,并更新與其綁定的React組件(view controller);Action是一個事件的集合。

流程圖如下:

  1. 用戶的動作在組件上觸發一個Action
  2. Reflux會調用對應的Store上的callback(自動觸發)
  3. 這個callback在執行結束之后,會顯式的觸發(trigger)一個數據
  4. 對應的組件(可能是多個)的state會被更新
  5. React組件檢測到state的變化后,會自動重繪自身

 

Demo例子,包含源碼

spring + spring mvc + mybatis + react + reflux + webpack Web工程例子

參考內容:

http://es6.ruanyifeng.com/#docs/style

http://www.tuicool.com/articles/VB7nYn

http://reactjs.cn/react/index.html

http://ant.design/docs/react/introduce

http://www.open-open.com/news/view/e652c6

http://www.ruanyifeng.com/blog/2016/01/flux.html


文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()