欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter濾鏡,glitter濾鏡

Flutter浪潮下的音視頻研發(fā)探索

文/陳爐軍

成都創(chuàng)新互聯(lián)公司自2013年起,先為桓仁等服務(wù)建站,桓仁等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為桓仁企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

整理/LiveVideoStack

大家好,我是阿里巴巴閑魚事業(yè)部的陳爐軍,本次分享的主題是Flutter浪潮下的音視頻研發(fā)探索,主要內(nèi)容是針對閑魚APP在當(dāng)下流行的跨平臺框架Flutter的大規(guī)模實踐,介紹其在音視頻領(lǐng)域碰到的一些困難以及解決方案。

分享內(nèi)容主要分為四個方面,首先會對Flutter有一個簡單介紹以及選擇Flutter作為跨平臺框架的原因,其次會介紹Flutter中與音視頻關(guān)系非常大的外接紋理概念,以及對它做出的一些優(yōu)化。之后會對閑魚在音視頻實踐過程中碰到的一些Flutter問題提出了一些解決方案——TPM音視頻框架。最后是閑魚Flutter多媒體開源組件的介紹。

Flutter

Flutter是一個跨平臺框架,以往的做法是將音頻、視頻和網(wǎng)絡(luò)這些模塊都下沉到C++層或者ARM層,在其上封裝成一個音視頻的SDK,供UI層的PC、iOS和Android調(diào)用。

而Flutter做為一個UI層的跨平臺框架,顧名思義就是在UI層也實現(xiàn)了一個跨平臺開發(fā)。可以預(yù)想的是未Flutter發(fā)展的好的話,會逐漸變?yōu)橐粋€從底層到UI層的一個全鏈路的跨平臺開發(fā),技術(shù)人員分別負(fù)責(zé)SDK和UI層的開發(fā)。

在Flutter之前已經(jīng)有很多跨平臺UI解決方案,那為什么選擇Flutter呢?

我們主要考慮性能和跨平臺的能力。

以往的跨平臺方案比如Weex,ReactNative,Cordova等等因為架構(gòu)的原因無法滿足性能要求,尤其是在音視頻這種性能要求幾乎苛刻的場景。

而諸如Xamarin等,雖然性能可以和原生App一致,但是大部分邏輯還是需要分平臺實現(xiàn)。

我們可以看一下,為什么Flutter可以實現(xiàn)高性能:

原生的native組件渲染以IOS為例,蘋果的UIKit通過調(diào)用平臺自己的繪制框架QuaztCore來實現(xiàn)UI的繪制,圖形繪制也是調(diào)用底層的API,比如OpenGL、Metal等。

而Flutter也是和原生API邏輯一致,也是通過調(diào)用底層的繪制框架層SKIA實現(xiàn)UI層。這樣相當(dāng)于Flutter他自己實現(xiàn)了一套UI框架,提供了一種性能超越原生API的跨平臺可能性。

但是我們說一個框架最終性能怎樣,其實取決于設(shè)計者和開發(fā)者。至于現(xiàn)在到底是一個什么狀況:

在閑魚的實踐中,我們發(fā)現(xiàn)在正常的開發(fā)沒有特意的去優(yōu)化UI代碼的情況下,在一些低端機(jī)上,F(xiàn)lutter界面的流暢性是比Native界面要好的。

雖然現(xiàn)在閑魚某些場景下會有卡頓閃退等情況,但是這是一個新事物發(fā)展過程中的必然問題,我們相信未來性能肯定不會成為限制Flutter發(fā)展的瓶頸的。

在閑魚實踐Flutter的過程中,混合棧和音視頻是其中比較難解決的兩個問題,混合棧是指一個APP在Flutter過程中不可能一口氣將所有業(yè)務(wù)全部重寫為Flutter,所以這是一個逐步迭代的過程,這期間原生native界面與Flutter界面共存的狀態(tài)就稱之為混合棧。閑魚在混合棧上也有一些比較好的輸出,例如FlutterBoost。

外接紋理

在講音視頻之前需要簡要介紹一下外接紋理的概念,我們將它稱之為是Flutter和Frame之間的橋梁。

Flutter渲染一幀屏幕數(shù)據(jù)首先要做的是,GPU發(fā)出的VC信號在Flutter的UI線程,通過AOT編譯的機(jī)器碼結(jié)合當(dāng)前Dart Runtime,生成Layer Tree UI樹,Layer Tree上每一個葉子節(jié)點都代表了當(dāng)前屏幕上所需要渲染的每一個元素,包含了這些元素渲染所需要的內(nèi)容。將Layer Tree拋給GPU線程,在GPU線程內(nèi)調(diào)用Skia去完成整個UI的渲染過程。Layer Tree中有PictureLayer和TextureLayer兩個比較重要的節(jié)點。PictureLayer主要負(fù)責(zé)屏幕圖片的渲染,F(xiàn)lutter內(nèi)部實現(xiàn)了一套圖片解碼邏輯,在IO線程將圖片讀取或者從網(wǎng)絡(luò)上拉取之后,通過解碼能夠在IO線程上加載出紋理,交給GPU線程將圖片渲染到屏幕上。但是由于音視頻場景下系統(tǒng)API太過繁多,業(yè)務(wù)場景過于復(fù)雜。Flutter沒有一套邏輯去實現(xiàn)跨平臺的音視頻組件,所以說Flutter提出了一種讓第三方開發(fā)者來實現(xiàn)音視頻組件的方式,而這些音視頻組件的視頻渲染出口,就是TextureLayer。

在整個Layer Tree渲染的過程中,TextureLayer的數(shù)據(jù)紋理需要由外部第三方開發(fā)者來指定,可以把視頻數(shù)據(jù)和播放器數(shù)據(jù)送到TextureLayer里,由Flutter將這些數(shù)據(jù)渲染出來。

TextureLayer渲染過程:首先判斷Layer是否已經(jīng)初始化,如果沒有就創(chuàng)建一個Texture,然后將Texture Attach到一個SufaceTexture上。

這個SufaceTexture是音視頻的native代碼可以獲取到的對象,通過這個對象創(chuàng)建的Suface,我們可以將視頻數(shù)據(jù)、攝像頭數(shù)據(jù)解碼放到Suface中,然后Flutter端通過監(jiān)聽SufaceTexture的數(shù)據(jù)更新就可以順利把剛才創(chuàng)建的數(shù)據(jù)更新到它的紋理中,然后再將紋理交給SKIA渲染到屏幕上。

然而我們?nèi)绻枰肍lutter實現(xiàn)美顏,濾鏡,人臉貼圖等等功能,就需要將視頻數(shù)據(jù)讀取出來,更新到紋理中,再將GPU紋理經(jīng)過美顏濾鏡處理后生成一個處理后的紋理。按Flutter提供的現(xiàn)有能力,必須先將紋理中的數(shù)據(jù)從GPU讀出到CPU中,生成Bitmap后再寫入Surface中,這樣在Flutter中才能順利的更新到視頻數(shù)據(jù),這樣做對系統(tǒng)性能的消耗很大。

通過對Flutter渲染過程分析,我們知道Flutter底層需要渲染的數(shù)據(jù)就是GPU紋理,而我們經(jīng)過美顏濾鏡處理完成以后的結(jié)果也是GPU紋理,如果可以將它直接交給Flutter渲染,那就可以避免GPU-CPU-GPU這樣的無用循環(huán)。這樣的方法是可行的,但是需要一個條件,就是OpenGL上下文共享。

OpenGL

在說上下文之前,得提到一個和上線文息息相關(guān)的概念:線程。

Flutter引擎啟動后會啟動四個線程:

第一個線程是UI線程,這是Flutter自己定義的UI線程,主要負(fù)責(zé)GPU發(fā)出的VSync信號時候用當(dāng)前Dart編譯的機(jī)器碼和當(dāng)前運(yùn)行環(huán)境創(chuàng)建出Layer Tree。

還有就是IO線程和GPU線程。和大部分OpenGL處理解決方案中一樣,F(xiàn)lutter也采取一個線程責(zé)資源加載,一部分負(fù)責(zé)資源渲染這種思路。

兩個線程之間紋理共享有兩種方式。一種是EGLImage(IOS是 CVOpenGLESTextureCache)。一種是OpenGL Share Context。Flutter通過Share Context來實現(xiàn)紋理共享,將IO線程的Context和GPU線程的Context進(jìn)行Share,放到同一個Share Group下面,這樣兩個線程下資源是互相可見可以共享的。

Platform線程是主線程,F(xiàn)lutter中有一個很奇怪的設(shè)定,GPU線程和主線程共用一個Context。并且在主線程也有很多OpenGL 操作。

這樣的設(shè)計會給音視頻開發(fā)帶來很多問題,后面會詳細(xì)說。

音視頻端美顏處理完成的OpenGL紋理能夠讓Flutter直接使用的條件就是Flutter的上下文需要和平臺音視頻相關(guān)的OpenGL上下文處在一個Share Group下面。

由于Flutter主線程的Context就是GPU的Context,所以在音視頻端主線程中有一些OpenGL操作的話,很有可能使Flutter整個OpenGL被破壞掉。所以需要將所有的OpenGL操作都限制在子線程中。

通過上述這兩個條件的處理,我們就可以在沒有增加GPU消耗的前提下實現(xiàn)美顏和濾鏡等等功能。

TPM

在經(jīng)過demo驗證之后,我們將這個方案應(yīng)用到閑魚音視頻組件中,但改造過程中發(fā)現(xiàn)了一些問題。

上圖是攝像頭采集數(shù)據(jù)轉(zhuǎn)換為紋理的一段代碼,其中有兩個操作:首先是切進(jìn)程,將后面的OpenGL操作都切到cameraQueue中。然后是設(shè)置一次上下文。然后這種限制條件或者說是潛規(guī)則往往在開發(fā)過程中容易被忽略的。而這個條件一旦忽略后果就是出現(xiàn)一些莫名其妙的詭異問題極難排查。因此我們就希望能抽象出一套框架,由框架本身實現(xiàn)線程的切換、上下文和模塊生命周期等的管理,開發(fā)者接入框架以后只需要安心實現(xiàn)自己的算法,而不需要關(guān)心這些潛規(guī)則還有其他一些重復(fù)的邏輯操作。

在引入Flutter之前閑魚的音視頻架構(gòu)與大部分音視頻邏輯一樣采用分層架構(gòu):

1:底層是一些獨立模塊

2:SDK層是對底層模塊的封裝

3:最上層是UI層。

引入Flutter之后,通過分析各個模塊的使用場景,我們可以得出一個假設(shè)或者說是抽象:音視頻應(yīng)用在終端上可以歸納為視頻幀解碼之后視頻數(shù)據(jù)幀在各個模塊之間流動的過程,基于這種假設(shè)去做Flutter音視頻框架的抽象。

咸魚Flutter多媒體開源組件

整個Flutter音視頻框架抽象分為管線和數(shù)據(jù)的抽象、模塊的抽象、線程統(tǒng)一管理和上下文同一管理四部分。

管線,其實就是視頻幀流動的管道。數(shù)據(jù),音視頻中涉及到的數(shù)據(jù)包括紋理、Bit Map以及時間戳等。結(jié)合現(xiàn)有的應(yīng)用場景我們定義了管線流通數(shù)據(jù)以Texture為主數(shù)據(jù),同時可以選擇性的添加Bit Map等作為輔助數(shù)據(jù)。這樣的數(shù)據(jù)定義方式,避免重復(fù)的創(chuàng)建和銷毀紋理帶來的性能開銷以及多線程訪問紋理帶來的一些問題。也滿足一些特殊模塊對特殊數(shù)據(jù)的需求。同時也設(shè)計了紋理池來管理管線中的紋理數(shù)據(jù)。

模塊:如果把管線和數(shù)據(jù)比喻成血管和血液,那框架音視頻的場景就可以比喻成器官,我們根據(jù)模塊所在管線的位置抽象出采集、處理和輸出三個基類。這三個基類里實現(xiàn)了剛才說的線程切換,上下文切換,格式轉(zhuǎn)換等等共同邏輯,各個功能模塊通過集成自這些基類,可以避免很多重復(fù)勞動。

線程:每一個模塊初始化的時候,初始化函數(shù)就會去線程管理的模塊去獲取自己的線程,線程管理模塊可以決定給初始化函數(shù)分配新的線程或者已經(jīng)分配過其他模塊的線程。

這樣有三個好處:

一是可以根據(jù)需要去決定一個線程可以掛載多少模塊,做到線程間的負(fù)載均衡。第二,多線程并發(fā)式能夠保證模塊內(nèi)的OpenGL操作是在當(dāng)前線程內(nèi)而不會跑到主線程去,徹底避免Flutter的OpenGL 環(huán)境被破壞。第三,多線程并行可以充分利用CPU多核架構(gòu),提升處理速度。

從Flutter端修改Flutter引擎將Context取出后,根據(jù)Context創(chuàng)建上下文的統(tǒng)一管理模塊,每一個模塊在初始化的時候會獲取它的線程,獲取之后會調(diào)用上下文管理模塊獲取自己的上下文。這樣可以保證每一個模塊的上下文都是與Flutter的上下文進(jìn)行Share的,每個模塊之間資源都是共享可見的,F(xiàn)lutter和音視頻native之間也是互相共享可見的。

基于上述框架如果要實現(xiàn)一個簡單的場景,比如畫面實時預(yù)覽和濾鏡處理功能,

1:需要選擇功能模塊,功能模塊包括攝像頭模塊、濾鏡處理模塊和Flutter畫面渲染模塊,

2:需要配置模塊參數(shù),比如采集分辨率、濾鏡參數(shù)和前后攝像頭設(shè)置等,

3:在創(chuàng)建視頻管線后使用已配置的參數(shù)創(chuàng)建模塊

4:最后管線搭載模塊,開啟管線就可以實現(xiàn)這樣簡單的功能。

上圖為整個功能實現(xiàn)的代碼和結(jié)構(gòu)圖。

結(jié)合上述音視頻框架,閑魚實現(xiàn)了Flutter多媒體開源組件。

組要包含四個基本組件分別是:

1:視頻圖像拍攝組件

2:播放器組件

3:視頻圖像編輯組件

4:相冊選擇組件

現(xiàn)在這些組件正在走內(nèi)部開源流程。預(yù)計9月份,相冊和播放器會實現(xiàn)開源。

后續(xù)展望和規(guī)劃

1:實現(xiàn)開頭所說的從底層SDK到UI的全鏈路的跨端開發(fā)。目前底層框架層和模塊層都是各個平臺各自實現(xiàn),反而是Flutter的UI端進(jìn)行了跨平臺的統(tǒng)一,所以后續(xù)會將底層也按照音視頻常用做法把邏輯下沉到C++層,盡可能的實現(xiàn)全鏈路跨平臺。

2:第二部分內(nèi)容為開源共建,閑魚開源的內(nèi)容不僅包括拍攝、編輯組件,還包括了很多底層模塊,希望有開發(fā)者在基于Flutter開發(fā)音視頻應(yīng)用時可以充分利用閑魚開源出的音視頻模塊能力,搭建APP框架,開發(fā)者只要去負(fù)責(zé)實現(xiàn)特殊需求模塊就可以,盡可能的減少重復(fù)勞動。

web前端需要學(xué)什么?

這里整理了一份web前端學(xué)習(xí)路線的思維導(dǎo)圖,需要掌握和學(xué)習(xí)的內(nèi)容如下:

第一階段:專業(yè)核心基礎(chǔ)

階段目標(biāo):

1. 熟練掌握HTML5、CSS3、Less、Sass、響應(yīng)書布局、移動端開發(fā)。

2. 熟練運(yùn)用HTML+CSS特性完成頁面布局。

4. 熟練應(yīng)用CSS3技術(shù),動畫、彈性盒模型設(shè)計。

5. 熟練完成移動端頁面的設(shè)計。

6. 熟練運(yùn)用所學(xué)知識仿制任意Web網(wǎng)站。

7. 能綜合運(yùn)用所學(xué)知識完成網(wǎng)頁設(shè)計實戰(zhàn)。

知識點:

1、Web前端開發(fā)環(huán)境,HTML常用標(biāo)簽,表單元素,Table布局,CSS樣式表,DIV+CSS布局。熟練運(yùn)用HTML和CSS樣式屬性完成頁面的布局和美化,能夠仿制任意網(wǎng)站的前端頁面實現(xiàn)。

2、CSS3選擇器、偽類、過渡、變換、動畫、字體圖標(biāo)、彈性盒模型、響應(yīng)式布局、移動端。熟練運(yùn)用CSS3來開發(fā)網(wǎng)頁、熟練開發(fā)移動端,整理網(wǎng)頁開發(fā)技巧。

3、預(yù)編譯css技術(shù):less、sass基礎(chǔ)知識、以及插件的運(yùn)用、BootStrap源碼分析。能夠熟練使用 less、sass完成項目開發(fā),深入了解BootStrap。

4、使用HTML、CSS、LESS、SASS等技術(shù)完成網(wǎng)頁項目實戰(zhàn)。通過項目掌握第一階段html、css的內(nèi)容、完成PC端頁面設(shè)計和移動端頁面設(shè)計。

第二階段:Web后臺技術(shù)

階段目標(biāo):

1. 了解JavaScript的發(fā)展歷史、掌握Node環(huán)境搭建及npm使用。

2. 熟練掌握J(rèn)avaScript的基本數(shù)據(jù)類型和變量的概念。

3. 熟練掌握J(rèn)avaScript中的運(yùn)算符使用。

4. 深入理解分之結(jié)構(gòu)語句和循環(huán)語句。

5. 熟練使用數(shù)組來完成各種練習(xí)。

6.熟悉es6的語法、熟練掌握J(rèn)avaScript面向?qū)ο缶幊獭?/p>

7.DOM和BOM實戰(zhàn)練習(xí)和H5新特性和協(xié)議的學(xué)習(xí)。

知識點:

1、軟件開發(fā)流程、算法、變量、數(shù)據(jù)類型、分之語句、循環(huán)語句、數(shù)組和函數(shù)。熟練運(yùn)用JavaScript的知識完成各種練習(xí)。

2、JavaScript面向?qū)ο蠡A(chǔ)、異常處理機(jī)制、常見對象api,js的兼容性、ES6新特性。熟練掌握J(rèn)avaScript面向?qū)ο蟮拈_發(fā)以及掌握es6中的重要內(nèi)容。

3、BOM操作和DOM操作。熟練使用BOM的各種對象、熟練操作DOM的對象。

4、h5相關(guān)api、canvas、ajax、數(shù)據(jù)模擬、touch事件、mockjs。熟練使用所學(xué)知識來完成網(wǎng)站項目開發(fā)。

第三階段:數(shù)據(jù)庫和框架實戰(zhàn)

階段目標(biāo):

1. 綜合運(yùn)用Web前端技術(shù)進(jìn)行頁面布局與美化。

2. 綜合運(yùn)用Web前端開發(fā)框架進(jìn)行Web系統(tǒng)開發(fā)。

3. 熟練掌握Mysql、Mongodb數(shù)據(jù)庫的發(fā)開。

4. 熟練掌握vue.js、webpack、elementui等前端框技術(shù)。

5. 熟練運(yùn)用Node.js開發(fā)后臺應(yīng)用程序。

6. 對Restful,Ajax,JSON,開發(fā)過程有深入的理解,掌握git的基本技能。

知識點:

1、數(shù)據(jù)庫知識,范式,MySQL配置,命令,建庫建表,數(shù)據(jù)的增刪改查,mongodb數(shù)據(jù)庫。深入理解數(shù)據(jù)庫管理系統(tǒng)通用知識及MySQL數(shù)據(jù)庫的使用與管理,為Node.js后臺開發(fā)打下堅實基礎(chǔ)。

2、模塊系統(tǒng),函數(shù),路由,全局對象,文件系統(tǒng),請求處理,Web模塊,Express框架,MySQL數(shù)據(jù)庫處理,RestfulAPI,文件上傳等。熟練運(yùn)用Node.js運(yùn)行環(huán)境和后臺開發(fā)框架完成Web系統(tǒng)的后臺開發(fā)。

3、vue的組件、生命周期、路由、組件、前端工程化、webpack、elementui框架。Vue.js框架的基本使用有清晰的理解,能夠運(yùn)用Vue.js完成基礎(chǔ)前端開發(fā)、熟練運(yùn)用Vue.js框架的高級功能完成Web前端開發(fā)和組件開發(fā),對MVVM模式有深刻理解。

4、需求分析,數(shù)據(jù)庫設(shè)計,后臺開發(fā),使用vue、node完成pc和移動端整站開發(fā)。于Node.js+Vue.js+Webpack+Mysql+Mongodb+Git,實現(xiàn)整站項目完整功能并上線發(fā)布。

第四階段:移動端和微信實戰(zhàn)

階段目標(biāo):

1.熟練掌握React.js框架,熟練使用React.js完成開發(fā)。

2.掌握移動端開發(fā)原理,理解原生開發(fā)和混合開發(fā)。

3.熟練使用react-native和Flutter框架完成移動端開發(fā)。

4.掌握微信小程序以及了解支付寶小程序的開發(fā)。

5.完成大型電商項目開發(fā)。

知識點:

1、React面向組件編程、表單數(shù)據(jù)、組件通信、監(jiān)聽、聲明周期、路由、Redux基本概念。練使用react完成項目開發(fā)、掌握Redux中的異步解決方案Saga。

2、react-native、開發(fā)工具、視圖與渲染、api操作、Flutter環(huán)境搭建、路由、ListView組件、網(wǎng)絡(luò)請求、打包。練掌握react-native和Flutter框架,并分別使用react-native和Flutter分別能開發(fā)移動端項目。

3、微信小程序基本介紹、開發(fā)工具、視圖與渲染、api操作、支付寶小程序的入門和api學(xué)習(xí)。掌握微信小程序開發(fā)了解支付寶小程序。

4、大型購物網(wǎng)站實戰(zhàn),整個項目前后端分離開發(fā);整個項目分為四部分:PC端網(wǎng)頁、移動端APP、小程序、后臺管理。團(tuán)隊協(xié)作開發(fā),使用git進(jìn)行版本控制。目期間可以擴(kuò)展Three.js 、TypeScript。

自學(xué) Web 前端真的很難找到工作嘛?

不管你是自學(xué)還是培訓(xùn),找工作主要看的是技術(shù)能力、相關(guān)工作經(jīng)驗、綜合實力及溝通能力等。只是對于自學(xué)的小伙伴來說,不知道企業(yè)需要哪些技術(shù),并且不知道需要達(dá)到什么樣的技術(shù)水平才能就業(yè)?所以在學(xué)習(xí)過程中很迷茫,學(xué)了很久之后也可能達(dá)不到要求,因此找工作很難。蝸牛學(xué)院這里根據(jù)行業(yè)變化和企業(yè)需求整理了一份最新的web前端學(xué)習(xí)路線,都是企業(yè)招聘時所需的技術(shù),希望對自學(xué)的小伙伴有所幫助。

第一階段:專業(yè)核心基礎(chǔ)

階段目標(biāo):

1. 熟練掌握HTML5、CSS3、Less、Sass、響應(yīng)書布局、移動端開發(fā)。

2. 熟練運(yùn)用HTML+CSS特性完成頁面布局。

4. 熟練應(yīng)用CSS3技術(shù),動畫、彈性盒模型設(shè)計。

5. 熟練完成移動端頁面的設(shè)計。

6. 熟練運(yùn)用所學(xué)知識仿制任意Web網(wǎng)站。

7. 能綜合運(yùn)用所學(xué)知識完成網(wǎng)頁設(shè)計實戰(zhàn)。

知識點:

1、Web前端開發(fā)環(huán)境,HTML常用標(biāo)簽,表單元素,Table布局,CSS樣式表,DIV+CSS布局。熟練運(yùn)用HTML和CSS樣式屬性完成頁面的布局和美化,能夠仿制任意網(wǎng)站的前端頁面實現(xiàn)。

2、CSS3選擇器、偽類、過渡、變換、動畫、字體圖標(biāo)、彈性盒模型、響應(yīng)式布局、移動端。熟練運(yùn)用CSS3來開發(fā)網(wǎng)頁、熟練開發(fā)移動端,整理網(wǎng)頁開發(fā)技巧。

3、預(yù)編譯css技術(shù):less、sass基礎(chǔ)知識、以及插件的運(yùn)用、BootStrap源碼分析。能夠熟練使用 less、sass完成項目開發(fā),深入了解BootStrap。

4、使用HTML、CSS、LESS、SASS等技術(shù)完成網(wǎng)頁項目實戰(zhàn)。通過項目掌握第一階段html、css的內(nèi)容、完成PC端頁面設(shè)計和移動端頁面設(shè)計。

第二階段:Web后臺技術(shù)

階段目標(biāo):

1. 了解JavaScript的發(fā)展歷史、掌握Node環(huán)境搭建及npm使用。

2. 熟練掌握J(rèn)avaScript的基本數(shù)據(jù)類型和變量的概念。

3. 熟練掌握J(rèn)avaScript中的運(yùn)算符使用。

4. 深入理解分之結(jié)構(gòu)語句和循環(huán)語句。

5. 熟練使用數(shù)組來完成各種練習(xí)。

6.熟悉es6的語法、熟練掌握J(rèn)avaScript面向?qū)ο缶幊獭?/p>

7.DOM和BOM實戰(zhàn)練習(xí)和H5新特性和協(xié)議的學(xué)習(xí)。

知識點:

1、軟件開發(fā)流程、算法、變量、數(shù)據(jù)類型、分之語句、循環(huán)語句、數(shù)組和函數(shù)。熟練運(yùn)用JavaScript的知識完成各種練習(xí)。

2、JavaScript面向?qū)ο蠡A(chǔ)、異常處理機(jī)制、常見對象api,js的兼容性、ES6新特性。熟練掌握J(rèn)avaScript面向?qū)ο蟮拈_發(fā)以及掌握es6中的重要內(nèi)容。

3、BOM操作和DOM操作。熟練使用BOM的各種對象、熟練操作DOM的對象。

4、h5相關(guān)api、canvas、ajax、數(shù)據(jù)模擬、touch事件、mockjs。熟練使用所學(xué)知識來完成網(wǎng)站項目開發(fā)。

第三階段:數(shù)據(jù)庫和框架實戰(zhàn)

階段目標(biāo):

1. 綜合運(yùn)用Web前端技術(shù)進(jìn)行頁面布局與美化。

2. 綜合運(yùn)用Web前端開發(fā)框架進(jìn)行Web系統(tǒng)開發(fā)。

3. 熟練掌握Mysql、Mongodb數(shù)據(jù)庫的發(fā)開。

4. 熟練掌握vue.js、webpack、elementui等前端框技術(shù)。

5. 熟練運(yùn)用Node.js開發(fā)后臺應(yīng)用程序。

6. 對Restful,Ajax,JSON,開發(fā)過程有深入的理解,掌握git的基本技能。

知識點:

1、數(shù)據(jù)庫知識,范式,MySQL配置,命令,建庫建表,數(shù)據(jù)的增刪改查,mongodb數(shù)據(jù)庫。深入理解數(shù)據(jù)庫管理系統(tǒng)通用知識及MySQL數(shù)據(jù)庫的使用與管理,為Node.js后臺開發(fā)打下堅實基礎(chǔ)。

2、模塊系統(tǒng),函數(shù),路由,全局對象,文件系統(tǒng),請求處理,Web模塊,Express框架,MySQL數(shù)據(jù)庫處理,RestfulAPI,文件上傳等。熟練運(yùn)用Node.js運(yùn)行環(huán)境和后臺開發(fā)框架完成Web系統(tǒng)的后臺開發(fā)。

3、vue的組件、生命周期、路由、組件、前端工程化、webpack、elementui框架。Vue.js框架的基本使用有清晰的理解,能夠運(yùn)用Vue.js完成基礎(chǔ)前端開發(fā)、熟練運(yùn)用Vue.js框架的高級功能完成Web前端開發(fā)和組件開發(fā),對MVVM模式有深刻理解。

4、需求分析,數(shù)據(jù)庫設(shè)計,后臺開發(fā),使用vue、node完成pc和移動端整站開發(fā)。于Node.js+Vue.js+Webpack+Mysql+Mongodb+Git,實現(xiàn)整站項目完整功能并上線發(fā)布。

第四階段:移動端和微信實戰(zhàn)

階段目標(biāo):

1.熟練掌握React.js框架,熟練使用React.js完成開發(fā)。

2.掌握移動端開發(fā)原理,理解原生開發(fā)和混合開發(fā)。

3.熟練使用react-native和Flutter框架完成移動端開發(fā)。

4.掌握微信小程序以及了解支付寶小程序的開發(fā)。

5.完成大型電商項目開發(fā)。

知識點:

1、React面向組件編程、表單數(shù)據(jù)、組件通信、監(jiān)聽、聲明周期、路由、Redux基本概念。練使用react完成項目開發(fā)、掌握Redux中的異步解決方案Saga。

2、react-native、開發(fā)工具、視圖與渲染、api操作、Flutter環(huán)境搭建、路由、ListView組件、網(wǎng)絡(luò)請求、打包。練掌握react-native和Flutter框架,并分別使用react-native和Flutter分別能開發(fā)移動端項目。

3、微信小程序基本介紹、開發(fā)工具、視圖與渲染、api操作、支付寶小程序的入門和api學(xué)習(xí)。掌握微信小程序開發(fā)了解支付寶小程序。

4、大型購物網(wǎng)站實戰(zhàn),整個項目前后端分離開發(fā);整個項目分為四部分:PC端網(wǎng)頁、移動端APP、小程序、后臺管理。團(tuán)隊協(xié)作開發(fā),使用git進(jìn)行版本控制。目期間可以擴(kuò)展Three.js 、TypeScript。

分享標(biāo)題:flutter濾鏡,glitter濾鏡
轉(zhuǎn)載來于:http://chinadenli.net/article20/dsgijjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序App設(shè)計移動網(wǎng)站建設(shè)搜索引擎優(yōu)化商城網(wǎng)站云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)