中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redux+Flux+webpack+Babel如何整合開發

發布時間:2022-01-14 09:36:08 來源:億速云 閱讀:133 作者:小新 欄目:大數據

這篇文章主要為大家展示了“Redux+Flux+webpack+Babel如何整合開發”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Redux+Flux+webpack+Babel如何整合開發”這篇文章吧。

一、現代前端開發

A.ES6——新一代的JavaScript標準

1.const、let關鍵字:let塊級作用域,const常量(如果是引用類型,那么可以修改它的屬性)

2.函數:

  • 箭頭函數:一種更簡單的函數聲明方式,可以看作是一種語法糖,永遠是匿名的,如let add = (a,b)=>a+b

  • 在對象方法的嵌套函數中,this的作用域指向global對象,而箭頭函數沒有這個問題

  • 函數增加默認參數功能

  • Rest參數:function test(…args){},表示沒有指定變量名稱的參數數組(arguments是所有參數的集合),是一個真正的數組(arguments不是一個真正的數組)

3.展開操作符:Rest參數就是展開操作符,允許一個表達式在某處展開

4.模板字符串:`My name is ${name}`,使用`符號

5.解構賦值:

  • 類似于php中的list(a,b)=[]

  • let foo = [1,2,3];   let [a,b,c] = foo;

  • let baz = {a:1,b:2};   let {a,b} = baz;

6.類:提供了class語法糖,只是原來原型鏈方式的一種語法糖

7.模塊

  • 使用import和export關鍵字完成模塊的導入和導出

B.使用Babel

1.Babel可以提前使用語言新特性,是一種多用途的js編譯器,把最新版本的js編譯成當下可以執行的版本

2.核心概念是通過一系列的plugin來管理編譯規則,通過不同的plugin,不僅可以編譯ES6代碼,還可以編譯React JSX語法或者是CoffeeScript等

C.前端組件化方案

1.模塊是語言層面的,在前端領域我們說的module一般都是指JS module,往往表現為一個單獨的JS文件;前端組件則更多是業務層面的概念,可以看成是一個可獨立使用的功能實現,往往表現為一個UI部件(并不絕對)

2.JS模塊化方案:

  • 全局變量+命名空間(namespace):一般通過簡單的自執行函數實現局部作用域,避免污染全局作用域(jQuery)

  • AMD&CommonJS:AMD僅需要在全局環境下定義require與define,通過文件路徑或文件名定位模塊,模塊實現中聲明依賴,加載與執行均由加載器操作,提供了打包工具自動分析依賴并合并;CommonJS不適合瀏覽器環境,相比AMD更簡潔,可以方便的實現前后端代碼共用

  • ES6模塊

3.前端組件化方案:

  • 基于命名空間的多入口文件組件:基于全局變量+命名空間的模塊化方案,不同資源分別手動引入,類似于jQuery的插件

  • 基于模塊的多入口文件組件:使用AMD規范,把自己暴露為一個模塊

  • 單JS入口組件:browserify、webpack等打包工具,允許將一般資源視為JS平等的模塊以致的方式加載進來

  • Web Component:尚未確定,支持不夠

D.輔助工具

1.包管理器:npm

  • 查看全局的包安裝位置:npm prefix -g

  • package.json:dependencies,在生產環境中需要依賴的包(—save);devDependencies,僅在開發測試環節中需要依賴的包(—save-dev);

2.任務流工具(Task Runner):Grunt和Gulp

  • Grunt,使用插件機制和Gruntfile.js實現了多任務配置、組合和運行(npm install grunt-cli -g)

  • Glup,吸取了Grunt的優點,通過流的概念來簡化多個任務之間的配置和輸出,讓任務更加簡潔和易于上手(npm install glup-cli -g)

3.模塊打包工具:Bundler、webpack

  • Bundler的主要任務是突破瀏覽器的鴻溝,將各種格式的JS代碼甚至是靜態文件,進行分析、壓縮、合并、打包,最后生成瀏覽器支持的代碼

二、webpack

A.webpack的特點與優勢

1.RequireJS的特點:

  • 對CommonJS規范(Node.js模塊所采用的規范)的模塊代碼進行的轉換與包裝

  • 對很多Node.js的標準package進行了瀏覽器端的適配,只要是遵循CommonJS規范的JavaScript模塊,即使是純前端代碼,也可以使用它進行打包

2.webpack的特色

  • 代碼拆分(code splitting)方案:可以將應用代碼拆分為多個塊(chunk),每個塊包含一個或多個模塊,塊可以按需被異步加載

  • 智能的靜態分析:支持包含變量的簡單require表達式

  • 模塊熱替換(Hot Module Replacement):使得在修改完某一模塊后無須刷新頁面,即可動態將受影響的模塊替換為新的模塊,在后續的執行中使用新的模塊邏輯,通過—hot啟動webpack-dev-server即可

B.基于webpack進行開發

1.webpack主要做了兩部分工作:

  • 分析得到所有必需模塊并合并

  • 提供了讓這些模塊有序、正常執行的環境

2.loader是作用于應用中資源文件的轉換行為。它們 是函數(運行在Node.js環境中),接收資源文件的源代碼作為參數,并返回新的代碼

3.使用style-loader、css-loader會讓樣式代碼延后與js同時加載,用戶體驗不好,可以借助extract-text-webpack-plugin插件,在打包時將樣式內容抽取并輸出到額外的css文件中

4.plugin的存在可以看成是為了實現那些loader實現不了或不適合在loader中實現的功能,如自動生成項目的HTML頁面(HtmlWebpackPlugin)、向構建過程中注入環境變量(EnvironmentPlugin)、向塊(chunk)的結果文件中添加注釋信息(BannerPlugin)等

5.webpack -w,實時構建,熱替換:webpack-dev-server

三、初識React

1.三大特點:

  • 組件:React的一切都是基于組件的,唯一要關心的就是構建組件。組件有著良好的封裝性,讓代碼的利用、測試和分離都變得更加簡單

  • JSX:一種直接把HTML嵌套在JS中的寫法,被稱為JSX。它可以定義類似HTML一樣簡潔的樹狀結構,結合了js和HTML的優點,可以像平常一樣使用HTML,也可以在里面嵌套js語法,在瀏覽器中不能直接使用這種格式,需要添加JSX編譯器

  • Virtual DOM:在React中,開發者不太需要操作真正的DOM節點,每個React組件都是用Virtual DOM渲染的,它是一種對于HTML DOM節點的抽象描述

A.使用React與傳統前端開發的比較

1.React會使用diff,計算出變化的部分,再將變化的部分作用到真實的DOM上,實現最終頁面的更新

2.React的事件綁定表現為,值為回調函數的組件屬性(props)。好處是,綁定事件的過程自然地變成了界面渲染(render)的一部分,無須特別處理

B.JSX

1.JSX類似一種語法糖,把標簽類型的寫法轉換成React提供的一個用來創建ReactElement的方法

2.HTML類型的標簽第一個字母用小寫來表示,React組件標簽第一個字母用大寫來表示

3.當遇到傳入的屬性是{}表達式時,里面的代碼會被當作JS代碼處理;在JSX中,遇到標簽就解釋成組件或者HTML標簽,遇到{}就解釋為JS代碼來執行

4.子組件位置的注釋需要使用{/* … */}

5.使用擴散操作符(...)可以進行屬性擴散,需要注意參數順序

6.使用Babel編譯JSX

C.React+webpack開發環境

*webpack2,沒有preLoaders了,使用rules,另外eslint的airbnb報錯

D.組件

1.組件是React的基石,所有的React應用程序都是基于組件的

2.state是組件內部的屬性,組件本身是一個狀態機,它可以在constructor中通過this.state直接定義它的值,然后根據這引起值來渲染不同的UI

3.組件生命周期

  • 組件首次加載:裝載前調用(getDefaultProps、getInitialState)、render前(componentWillMount)、render是組件的必要方法,返回一個ReactElement對象,裝載完成之后(componentDidMount)

  • 組件props更新:componentWillReceiveProps(next)接收到新的props的時候觸發,shouldComponentUpdate在重新render之前調用,componentWillUpdate在render之前被調用,componentDidUpdate重新渲染完成之后立即調用

  • 組件卸載:componentWillUnmount在組件被卸載和銷毀之前調用

4.state設計原則:盡量讓大多數的組件都是無狀態的,應該盡量把狀態分離在一些特定的組件中,來降低組件的復雜程度;state中應該包含組件的事件回調函數可能引發UI更新的這類數據;不應該包含在state中的數據:可以由state計算得出的數據;組件;props中的數據

5.節點上設置一個ref屬性,然后通過this.refs.name獲得對應的DOM結構

E.Virtual DOM

1.Virtual DOM是獨立React所存在的,只不過React在渲染的時候采用了這個技術來提高效率

2.ReactElement是一種輕量級的、無狀態的、不可改變的、DOM元素的虛擬表述,其實就是用一個JS對象來表述DOM元素而已,將ReactElement插入真正的DOM中,可以調用ReactDOM的render方法

四、實踐React

1.state的設計原則:盡量簡化數據,遵循DRY(Don’t Repeat Yourself)的原則

2.通用測試工具:Mocha、Chai

五、Flux架構及其實現

1.Flux是Facebook官方提出的一套前端應用架構模式,核心概念就是單向數據流

2.傳統MVC是雙向數據流,單向數據流是Action->Dispatcher->Store->View

3.Flux優缺點:會增加代碼量,引入了大量的概念和文件,帶來了清晰的數據流,合理地把數據和組件的state分離,保持了清晰的邏輯,數據流動更加明了,提供可預測的狀態,避免了多向數據流動帶來的混亂和維護困難

4.Redux三大定律:單一數據源、state是只讀的、使用純函數執行修改

六、使用Redux

1.Redux著眼于對狀態整體的維護,而不會產生出具體變去的部分,React是一個由狀態整體出來界面整體的view層實現,非常適合Redux實現

2.當我們說如何使用Redux時,說的其實是如何獲取并使用store的內容(狀態數據),以及創建并觸發action的過程

3.Redux的特點是單一數據源,即整個應用的狀態信息都保存在一個store中,因而需要由store將數據從React組件樹的根節點傳入

七、React+Redux進階

1.反而模式(anti-pattern或antipattern)指的是在實踐中明顯出現但又低效或是有待優化的設計械,是用來解決問題的帶有共同性的不良方法

2.優化原則:避免過早優化、著眼瓶頸;在優化React時,絕大部分的優化空間在于避免不必要的render—即Virtual DOM節點的生成

以上是“Redux+Flux+webpack+Babel如何整合開發”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和龙市| 清流县| 河东区| 灌云县| 天全县| 姚安县| 上蔡县| 镇坪县| 黄石市| 集贤县| 黔西县| 青神县| 姚安县| 诸城市| 丰城市| 台中市| 成都市| 浦江县| 天峻县| 大庆市| 凤山市| 蛟河市| 大方县| 沁源县| 濉溪县| 凤台县| 武城县| 沈丘县| 嵊泗县| 扎鲁特旗| 抚顺市| 舞钢市| 衡山县| 新昌县| 云霄县| 保德县| 南溪县| 遂平县| 庄河市| 五家渠市| 杂多县|