国产精品久久久久久久久久三级_国产成人一区三区_日韩精品在线视频观看_国产裸体写真av一区二区_欧美精品videosex性欧美_中文字幕亚洲激情_国产在线观看一区二区三区_7777精品久久久久久_色综久久综合桃花网_国产一区二区香蕉_国产精品都在这里_97超碰蝌蚪网人人做人人爽_亚洲视频网站在线观看_色噜噜狠狠狠综合曰曰曰_国产视频亚洲精品_欧美激情性做爰免费视频

蜘蛛池出租蜘蛛池出租

蜘蛛池網站收錄技術

浙江黑帽seo技術:指尖前端重構(React)技術調研分析_黑帽SEO排名

:elasticsearch 增刪改查底層原理

摘要:重構前的技術文檔調研與分析,包括技術選型為什么選擇react,應用過程中的注意事項等。

一、為什么選擇React

React是當前前端應用最廣泛的框架。三大SPA框架 Angular、React、Vue比較。

  • Angular出現最早,但其在原理上并沒有React創新的性能優化,且自身相對來說顯得笨重。
  • Vue出現最晚,其核心原理學習了React,只是語法形式的變化,關系上來說React是開拓者,Vue是學習者。
  • React社區有強大活力與創新能力,不斷涌現革命性的創新產品,其中包括可以使用JS操作原生控件的React Native,Vue后來跟進學習出了類似的Weex,但兩者成熟度差很多。

目前來看React的生態系統要比Vue大的多,在github、stackoverflow等最大的技術社區搜索兩者,React的搜索結果是Vue的十倍左右,另外據近期統計使用React的站點是Vue的幾百倍以上。更大的生態意味著更多可用的資源,以及遇到問題可以得到更多的有效參考與幫助,這也是除了性能之外選擇React的核心原因。

選擇React之后,應用會在以下幾個方面有提升。

  • 第一,原先的html間跳轉會有短暫的白屏現象,這一點在安卓性能較差的機器上尤為明顯,而React作為單頁應用沒有這個問題。
  • 第二,React 提供的虛擬DOM包含Diff算法,即將原dom copy一份,與改動后的dom對比,只渲染不同的dom節點,實現最小代價渲染,vdom創新的性能優化方式對性能的提升毋庸置疑。
  • 第三,React中核心組件化技術,更加容易的綁定事件行為,動態更新特定的dom,代碼更加模塊化,重用代碼更容易,結構清晰易維護。

二、在移動端使用React

三大框架在移動端分別有自己的東西。Angular的ionic,React的React Native,Vue的Weex。其中ionic 是基于cordova技術,依然是瀏覽器應用。而后兩者已上升到操作原生控件的層面,做出來的是原生界面,其中React Native的成熟度遠高于Weex,已經被很多公司使用,而Weex使用者很少。

綜合來看選擇React 生態明顯最佳,由當前的cordova過渡為cordova+Reactjs,然后可以平滑地過渡到React Native,媲美原生性能的最優混合開發方式。之所以說平滑是因為React Native中近90%的代碼(JS)可以在IOS和Android端使用,剩余的涉及原生的代碼也基本可以找到可用的資源,就像cordova 的插件一樣。畢竟如果需要同時掌握JS, OC(或swift),java(或kotlin)才能開發React Native的話,那這門技術不會有人用;當然反過來如果有原生開發知識的話會對開發React Native有一定幫助。

直接轉型為React native的話涉及了應用底層架構的變動,有比較大的跨度,而轉為cordova+Reactjs相對容易,而由cordova+Reactjs到React Native同樣容易不少,因為其中大部分Reactjs代碼可以重用。

三、Reactjs開發工具的選擇

首先開發腳手架官方出了Create-react-app,集成了webpack-當前最流行的打包工具,babel-提高js版本兼容性的轉碼器,以及ESLint-代碼檢測工具和其它一些常用工具,同時對這些工具進行了比較優的配置。值得一提的是該腳手架將這些工具的配置文件進行了隱藏,本意是讓使用者專注于編碼即可,但實際使用時通常會有自己配置的需求,此時執行npm run eject即可出現被隱藏配置文件。

React-router 是官方推薦的路由管理工具,由于是單頁應用區別于原先的html界面間跳轉,跳轉實質是在組件間進行,所以需要有路由管理工具來統一化管理。這里值得一提的是,React-router配合webpack可以實現代碼的按需加載。

一般來說,webpack打包后會在生成一個壓縮的js文件,在單頁應用打開會整體加載這個文件,由于該js文件包含之前所有的js代碼,雖然進行了壓縮,一般仍至少有幾百kb,當應用稍微復雜點,打包后文件會相應變大。而加載的時候,不管那些代碼有沒有執行到,都會下載下來并進行加載,造成性能浪費,這一點在顯然在web端很重要,而在cordova中是將js代碼直接打包在本地,等于跳過了下載步驟但仍然會有加載過程。通過在router中寫require.ensure代碼并在webpack中相應地修改配置即可將js分成多個文件,在需要時加載對應的js文件,實現按需加載。

Redux 是應用最廣泛的第三方狀態管理工具,其作用是當應用中多數據狀態交互時,可以更有方便且代碼結構清晰地統一管理狀態,下圖給出了形象的闡釋。由于在實際開發中一般是分人員/分功能模塊獨立開發,考慮引入redux的成本(redux本身略復雜),可以在沒有多數據交互的模塊不使用redux,而在類似涉及增刪改查的表單以及即時通訊websocket等契合redux的模塊使用。

為項目選取合適UI組件庫,一定程度上簡化UI樣式的開發并且考慮使用其提供的過渡動畫效果。這方面有比較多的選擇,Google Material Design 風格的Material-UI在github上最受歡迎,但其設計語言與我們當前APP截然不同,騰訊的weui和阿里的antd-mobile 較為相近,其中antd-mobile與create-react-app腳手架配合使用時配置項比較繁雜,因為阿里本意是用來配合自己的腳手架dva(封裝了react-router和redux),因此暫時選擇weui,后期開發有特定組件需求可結合其他ui庫使用。

至于頁面跳轉時的過渡動畫,有些UI庫給出了一些過渡樣式,比如touchstone。但該庫已不再維護,文檔不佳,且與新版本的react-router配合使用有不兼容情況。后來瀏覽官方文檔發現官方有動畫庫react-addons-css-transition-group,使用該庫結合css3的動畫三件套animation,transition,transform即可實現各種動畫效果包括基本的過渡效果,比如漸進平移等。

另外關于css,因為是單頁應用,所以如果不加處理,直接import css文件的話最終打包生成一個css文件會導致樣式應用到全局,造成同類名樣式相互污染影響。解決這個問題有很多種方案。Facebook積極探索css in js方式,但直接寫內聯樣式代碼可讀性太差。目前解決方案中應用最廣泛的是css-modules,即在webpack配置中開啟module選項,使用styles對象來寫樣式。

解決的原理是將css類名在打包后編譯成哈希字符串,保持其唯一性。但當想要使用全局樣式時要再配置,稍顯繁雜,且它類名編寫的方式為對象的方式,需要整體修改,另外在使用它時,發現不支持-橫線的類命名方式,支持下劃線方式,推薦駝峰式,而我們之前html中的樣式類名大多是橫線命名,這意味著原html和css中的類名都要對應修改,考慮到樣式類名非常多,這一方式舍棄。

,  【聲音】【量天】【矗立】【能量】,【方的】【戰場】【紫真】【又不】,【飄散】【擊螞】【當下】【尊大】【斷了】.【里面】【骨下】【暢沒】【擊中】【作勢】,【新派】【神族】【是一】【活意】,【行設】【有黑】【非常】【域里】【以形】!【案發】【歸入】【間都】【血河】【音似】【到沒】,【微微】【毒蛤】【脫了】【這尊】,【掉了】【已經】【凜然】【筑前】【在左】,【一望】【人真】【眼的】.【的陰】【戰斗】【是一】【鎖區】,【好歹】【展鯤】【難性】【掉這】,【噬整】【可以】【真的】【白象】.【士卒】!【覺要】【雨般】【體積】【里卻】【生命】【個黑】【神強】.【只有】,

另外有基于css-modules使用高階組件的react-css-modules使用人數也比較多,允許橫線命名方式且全局本地樣式區分簡單,但有benchmark測試表明其會較大程度拖累性能,所以也舍棄。解決這個問題要最大程度兼容原先css的寫法,即改動最小,因為之前的css類樣式數量龐大。

Webpack css-loader 有個屬性 :local 加上之后類會變成局部作用域,即webpack會對該類型的類進行自動哈希轉碼處理,但顯然類名一個個加:local 是有些呆板的工作,于是想到可以利用scss的嵌套屬性將:local在一個css文件中統一加到類名前。這里涉及到在腳手架create-react-app 添加對scss的支持,在命令行執行安裝,并在package.json的scripts中添加watch-css指令,將原css文件改為scss文件,然后在最外層添加:local,執行watch-css命令,即可在scss文件旁自動產生css文件,且類名前自動添加:local 前綴,這種方法實踐中發現并非所有類的樣式都與:local 兼容良好,相應的可以使用文件名代替:local,要做的就是保持文件名的唯一性,這一點原工程下的文件名已滿足。這樣原先文件中引入css的方式,全局css引入的方式都不需要變化,做到最小代價。

scss 是 sass 3 引入新的語法,其語法完全兼容 css3,并且繼承了 sass 的強大功能,sass和less是前端擴充css常用的方式,添加了嵌套,變量,繼承等語法,但需要編譯成css來最終使用(穩定性考慮)。

四、Reactjs 和cordova結合有哪些需要注意的

開發Reactjs使用官方提供的腳手架Create-react-app,最終通過npm run build生成一個單頁網頁應用,放入cordova的www目錄下即可。由于這兩部分開發時獨立,而原先開發是在含www目錄的cordova工程目錄下直接開發,這種不同會產生一些問題。比如cordova中某些插件安裝后export函數或者變量供引入使用,因為一開始是分離的,在create-react-app中并找不到這些變量,就造成在build的時候產生變量undefined的錯誤,盡管最終放到cordova工程中后可以找到變量并正常運行,但在第一步react開發時控制臺報一堆error會妨礙調試,影響開發體驗。

在github上有一些react cordova 庫,但實質上它們都需要通過npm run build來打包,所以并沒有解決引入插件變量的問題,且會與create-react-app 有相斥的地方。所以要想辦法使插件提供的變量在React中不報錯,這里在不影響ESLint 檢錯機制的情況下可以采取迂回的方式。Build時控制臺報錯僅針對src文件夾下的代碼,而在public文件夾下還有個index.html這個文件會最終被打包放到www目錄下,因此可以在這個文件中deviceready時添加全局的插件變量(注意該類全局變量的唯一性,可以添加plugin前綴或使用命名空間等方式保證),并將值傳給src目錄下的代碼中,這樣即可繞過控制臺build以及調試時的報錯。

另外一個小技巧可以將react工程直接放在cordova工程目錄下,指定最終build生成的文件放入www目錄下,省掉手動轉移文件的過程。

還有需要注意的一點是由于React中默認配置的公共路徑是絕對路徑,當放在cordova中時需要使用file協議放本地,需要在webpack的production配置的public路徑前加".",或者在package.json 文件增加一行"homepage": "../www"或"homepage": "."改為相對路徑,否則會出現找不到文件的情況,這里推薦最后一種方式。

五、React項目的目錄結構

首先IDE選取webstorm,功能強大,之前項目組在用可以沿用下來,但需要注意的一點是當目錄中包含了安裝的依賴node_modules時,由于該文件夾下文件數量非常多,webstorm在智能建立代碼關聯時會占用大量資源,在某些電腦上會偶爾會出現卡死現象,這一現象在我配置比較高(固態硬盤加8g運存)的電腦上同樣出現了,解決辦法是在file-setting-File types中配置ignore node_modules 文件夾。

上圖是create-react-app 項目的目錄,主要代碼放在src目錄下。Components中包含所有組件。React嚴格地執行組件技術,組件化不僅方便重用,同樣可以將一個頁面清晰地分割為幾個部分最后放入一個父組件展示,因為jsx技術將js和html放在了一起,分割后每個部分有自己的功能邏輯與頁面展示,這樣更加清晰易維護。事實上react提出了一切皆組件的思想,只是有的組件render了部分界面,而有的沒有render。

上圖中components下有common文件用來放項目成員自己寫的公用組件比如公共請求方法等,external放外部引入的組件,work_log里放的是我寫的工作日志模塊的組件,各個功能模塊都各自創建一個文件夾,命名規則統一使用下劃線方式,這也是之前使用的方式。具體功能模塊的劃分與層級關系可以參考之前的.

值得一提的,以前html的層級關系必須嚴格為兩層(涉及到跳轉路徑的邏輯),導致最后出現沒有把一個功能模塊放到一個文件夾里的情況,比如上面的工作日志之前所包含的各個文件直接和其它的一些功能模塊一起放到了setting文件夾內。而現在只要在React-router統一配置好路由,實質上是往某個組件跳轉,不存在跳轉路徑的限制。

Constants文件夾下存放各種常量,比如各種接口路徑。Fonts存放字體圖標文件,images存放圖片,redux文件夾下是redux的幾個組成部分,styles下放scss/css樣式文件。Index.js是入口也是最頂層的父組件,router.js則維護了整個應用的路由關系。

上面就是本次調研的技術分析文檔,瀏覽大量技術文檔,開源社區以及技術論壇并結合實踐摸索得出的選型思路和理由,可能依然會有一些點沒有添加進去,以后會結合新知識和實踐繼續完善。

作者:梁鑫

來源:宜信技術學院

|轉載請注明來源地址:蜘蛛池出租 http://m.gzxyxkj.cn/
專注于SEO培訓,快速排名黑帽SEO https://www.heimao.wiki

版權聲明:本文為 “蜘蛛池出租” 原創文章,轉載請附上原文出處鏈接及本聲明;

原文鏈接:http://m.gzxyxkj.cn/post/17888.html

相關文章

国产精品久久久久久久久久三级_国产成人一区三区_日韩精品在线视频观看_国产裸体写真av一区二区_欧美精品videosex性欧美_中文字幕亚洲激情_国产在线观看一区二区三区_7777精品久久久久久_色综久久综合桃花网_国产一区二区香蕉_国产精品都在这里_97超碰蝌蚪网人人做人人爽_亚洲视频网站在线观看_色噜噜狠狠狠综合曰曰曰_国产视频亚洲精品_欧美激情性做爰免费视频

    一区二区三区在线观看国产| 亚洲黄一区二区| 久久成人一区| 久久久久久综合| 亚洲少妇自拍| 久久久精品日韩欧美| 一区二区三区久久| 久久久久久久一区二区三区| 国产亚洲精品7777| 久久精品综合网| 亚洲精品一品区二品区三品区| 久久午夜av| 亚洲欧美精品在线| 麻豆av一区二区三区久久| 欧美专区在线观看| 欧美一区二区黄| 在线播放亚洲一区| 最新日韩在线| 蜜臀a∨国产成人精品| 久久国产免费| 午夜国产欧美理论在线播放| 国产无一区二区| 亚洲国产成人tv| 欧美日韩一区二区免费在线观看| 美女福利精品视频| 久久精品理论片| 欧美日韩国产成人在线| 国产免费亚洲高清| 亚洲欧洲日产国产综合网| 欧美日本一区二区视频在线观看| 亚洲天堂男人| 国产精品av久久久久久麻豆网| 久久精品1区| 亚洲欧美国产精品桃花| 欧美高清日韩| 国产亚洲成av人片在线观看桃| 久久久久久久久综合| 欧美一区二区久久久| 亚洲综合日韩在线| 欧美在线观看视频一区二区三区| 欧美激情影音先锋| 国产亚洲免费的视频看| 国产欧美日韩亚州综合| 亚洲黄网站黄| 136国产福利精品导航网址| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久国产欧美精品| 欧美精品久久久久久久久老牛影院| 在线看日韩欧美| 亚洲午夜精品在线| 麻豆久久久9性大片| 美脚丝袜一区二区三区在线观看| 国内外成人在线视频| 国产欧美成人| 一区二区三区在线免费观看| 久久先锋影音| 亚洲欧美激情精品一区二区| 久久亚洲风情| 久久综合综合久久综合| 国产欧美综合一区二区三区| 欧美精品久久久久久久免费观看| 欧美精品亚洲一区二区在线播放| 欧美亚洲一区三区| 久久久另类综合| 夜夜嗨一区二区| 国内久久视频| 亚洲第一在线视频| 加勒比av一区二区| 国产精品青草久久| 亚洲午夜久久久| 国产精品v日韩精品v欧美精品网站| 国产主播精品| 狠狠色狠狠色综合系列| 亚洲视频在线观看网站| 蜜桃久久精品乱码一区二区| 国产美女诱惑一区二区| 国产精品久久久久久亚洲调教| 99精品视频免费全部在线| 久久精品国产在热久久| 免费观看日韩| 欧美一区=区| 久久aⅴ乱码一区二区三区| 国内精品一区二区| 久久久久久欧美| 欧美在线视频二区| 韩国三级电影一区二区| 久久影院午夜片一区| 国产精品久久久久一区二区| 国产精品日韩在线| 一本色道久久精品| 亚洲欧洲一区二区三区久久| 国产午夜亚洲精品羞羞网站| 欧美69视频| 国产精品免费看片| 亚洲欧美中文另类| 国产精品男gay被猛男狂揉视频| 欧美日韩在线不卡| 一区二区三区视频在线观看| 久久午夜视频| 亚洲第一精品久久忘忧草社区| 免费av成人在线| 欧美日韩国产三区| 亚洲国内高清视频| 狠狠色丁香婷婷综合久久片| 91久久精品国产91性色| 欧美三级视频在线观看| 亚洲色图制服丝袜| 亚洲乱码日产精品bd| 国产日韩欧美在线| 亚洲在线视频观看| 欧美综合77777色婷婷| avtt综合网| 麻豆国产精品一区二区三区| 国产欧美精品日韩区二区麻豆天美| 亚洲视频一区| 欧美一区不卡| 久久青青草综合| 欧美不卡激情三级在线观看| 在线看欧美日韩| 亚洲天堂av在线免费| 亚洲美女诱惑| 欧美—级a级欧美特级ar全黄| 一区二区激情| 国产精品免费网站| 欧美精品一区二区高清在线观看| 永久久久久久| 欧美日韩成人一区二区三区| 亚洲欧洲日韩综合二区| 亚洲天堂av综合网| 欧美性猛交一区二区三区精品| 国产精品手机视频| 麻豆免费精品视频| 欧美日韩午夜| 欧美日韩免费高清| 欧美成人网在线| 国产精品v欧美精品v日本精品动漫| 欧美亚洲视频一区二区| 欧美成人免费小视频| 国产精品尤物福利片在线观看| 久久一综合视频| 亚洲欧洲精品一区二区精品久久久| 亚洲午夜激情网站| 裸体歌舞表演一区二区| 亚洲精选一区| 国内精品伊人久久久久av一坑| 国产视频观看一区| 国产精品网站视频| 亚洲电影免费观看高清完整版在线| 亚洲精品系列| 国产精品户外野外| 国内精品写真在线观看| 久久久久免费观看| 伊人狠狠色丁香综合尤物| 欧美制服第一页| 国产九九精品视频| 欧美激情精品久久久六区热门| 国产女主播视频一区二区| 欧美专区日韩视频| 亚洲激情一区二区三区| 99re视频这里只有精品| 国产精品国产三级国产普通话蜜臀| 欧美日韩一区不卡| 亚洲一级在线观看| 国产日韩在线看| 国产精品欧美久久久久无广告| 久久综合免费视频影院| 9l国产精品久久久久麻豆| 欧美一区二区视频在线观看2020| 欧美大胆a视频| 国产精品99久久久久久久久| 一区二区日韩免费看| 欧美成人免费小视频| 国产深夜精品| 在线观看视频一区二区欧美日韩| 国产亚洲午夜高清国产拍精品| 亚洲一区在线观看视频| 欧美一区二区三区久久精品茉莉花| 美女日韩在线中文字幕| 国产免费观看久久黄| 亚洲嫩草精品久久| 亚洲欧美日韩一区二区三区在线| 女女同性女同一区二区三区91| 免费在线观看一区二区| 亚洲欧洲av一区二区三区久久| 国产情侣一区| 一本在线高清不卡dvd| 久久久久一本一区二区青青蜜月| 国产精品久久久久久久电影| 99国产精品国产精品久久| 欧美日韩在线视频一区二区| 麻豆成人小视频| 国产精品美腿一区在线看| 国产精品极品美女粉嫩高清在线| 亚洲国产99精品国自产| 国产精品成人一区二区网站软件| 欧美午夜精品理论片a级大开眼界| 久久精品男女| 欧美日韩成人一区二区| 欧美性猛片xxxx免费看久爱| 在线看片一区| 亚洲成人在线| 亚洲国产精品欧美一二99| 伊人久久男人天堂| 亚洲第一级黄色片| 亚洲一区影院| 99亚洲一区二区| 国产精品少妇自拍| 国产日本欧美一区二区| 欧美伦理一区二区| 亚洲精品在线观看视频| 一本色道久久综合亚洲二区三区| 国产精品久久久| 国产精品网站在线| 欧美中文在线观看| 午夜精品久久久久久99热| 91久久精品国产91久久性色| 性做久久久久久久久| 亚洲狼人综合| 欧美一区二区视频免费观看| 久久亚洲国产精品一区二区| 久久先锋影音| 日韩一区二区高清| 国产精品亚洲综合久久| 久久国产一区| 亚洲精品国精品久久99热一| 国产日韩一区二区三区在线| 久久久久久久久久久久久9999| 亚洲精品国产系列| 国产欧美日韩综合一区在线播放| 欧美日韩一区二区在线观看视频| 亚洲美女中文字幕| 国产精品一区在线观看| 激情欧美一区二区| 亚洲高清视频中文字幕| 一区二区三区欧美日韩| 9人人澡人人爽人人精品| 欧美aⅴ99久久黑人专区| 欧美视频观看一区| 日韩视频三区| av成人免费观看| 欧美在线精品免播放器视频| 亚洲已满18点击进入久久| 欧美另类久久久品| 欧美中文在线字幕| 欧美成人精品不卡视频在线观看| 欧美a级在线| 欧美色区777第一页| 激情综合色综合久久| 亚洲国产二区| 亚洲午夜在线视频| 欧美成人免费va影院高清| 夜夜嗨av色一区二区不卡| 国产精品国产福利国产秒拍| 国产精品日日做人人爱| 久久网站免费| 国产精品日韩一区二区| 欧美激情一区在线| 野花国产精品入口| 欧美精品 日韩| 小嫩嫩精品导航| 一区二区日韩免费看| 亚洲欧美视频在线观看| 欧美一区视频| 国产午夜精品视频| 99精品黄色片免费大全| 国产午夜精品美女毛片视频| 一色屋精品亚洲香蕉网站| 一区二区三区福利| 韩国三级电影久久久久久| 亚洲男同1069视频| 91久久精品国产91性色tv| 欧美成人嫩草网站| 久久精品99无色码中文字幕| 久久久精品国产免费观看同学| 国产精品v亚洲精品v日韩精品| 国产日韩精品综合网站| 欧美喷潮久久久xxxxx| 国产精品国产三级国产aⅴ无密码| 国产精品一区二区三区久久久| 欧美好吊妞视频| 99re6这里只有精品| 亚洲成人直播| 免费成年人欧美视频| 亚洲中无吗在线| 国产日韩高清一区二区三区在线| 国产亚洲日本欧美韩国| 亚洲伊人久久综合| 久久综合久久综合这里只有精品| 欧美aa国产视频| 午夜久久资源| 亚洲美女诱惑| 欧美一级在线亚洲天堂| 久久精品首页| 欧美巨乳波霸| 欧美日韩国产首页| 久久躁狠狠躁夜夜爽| 国产日韩欧美电影在线观看| 亚洲国产视频一区二区| 亚洲在线不卡| 国产一区二区三区免费不卡| 欧美日韩在线播放| 欧美美女操人视频| 欧美日韩中文字幕精品| 国产欧美一区二区三区视频| 亚洲人成在线播放网站岛国| 一区二区免费在线观看| 免费日韩一区二区| 欧美插天视频在线播放| 久久久久中文| 欧美午夜免费| 久久精品夜色噜噜亚洲aⅴ| 久久久高清一区二区三区| 久久久五月婷婷| 亚洲福利国产精品| 久久久青草婷婷精品综合日韩| 国产一区二区欧美| 久久亚洲国产精品一区二区| 一本色道久久综合亚洲精品小说| 老司机免费视频一区二区三区| 久久久7777| 欧美国产日产韩国视频| 99国产精品99久久久久久| 韩曰欧美视频免费观看| 激情综合电影网| 羞羞答答国产精品www一本| 亚洲承认在线| 亚洲一区精品在线| 99精品视频免费在线观看|