Cos'è la CEF? CEF è l'abbreviazione di Chromium Embedded Framework, un controllo open source del browser web basato sul progetto Google Chromium, che supporta le piattaforme Windows, Linux e Max. Oltre a fornire interfacce C/C++, esistono anche porte per altri linguaggi.
Poiché si basa su Chromium, CEF supporta le funzionalità HTML5 implementate in Webkit e Chrome, ed è relativamente vicino a Chrome in termini di prestazioni.
CEF offre anche le seguenti funzionalità: plugin personalizzati, protocolli personalizzati, oggetti ed estensioni Javascrip personalizzate; Caricamento delle risorse controllabili, navigazione, menu contestuali, ecc.
Chi utilizza CEF Usiamo alcuni esempi pratici per illustrare cosa hanno fatto tutti con la CEF:
Vari browser
I primi browser dual-core (IE + Webkit), alcuni utilizzavano CEF come controllo browser del kernel Webkit.
Tuttavia, per i browser, estendere direttamente su Chrome è in realtà il re, e ora tutti lo fanno (vari browser veloci).
Client Evernote (su Windows)
Evernote permette agli utenti di incollare pagine web nelle note e fornisce anche plugin per salvare le pagine web come appunti.
Deve essere la necessità di renderizzare correttamente la pagina sul client, e questo compito è lasciato a CEF.
Client GitHub (su Windows)
GitHub ha anche confezionato libcef.dll, dal punto di vista delle prestazioni, la pagina ReadMe utilizzata per mostrare il progetto deve essere CEF, e l'interfaccia utente altrove può essere parzialmente implementata con pagine.
QQ
QQ ha implementato alcune funzioni e interfacce incorporando IE molto tempo fa. Dallo scorso anno, QQ ha introdotto CEF, sostituendo alcuni luoghi che prima utilizzavano IE, così che alcune nuove funzionalità basate su Webkit possano essere utilizzate e, allo stesso tempo, ha ottenuto vantaggi in termini di velocità, stabilità e compatibilità.
Adobe Edge Animate & Adobe Edge Reflow
Adobe ha lanciato un set completo di pagine web moderne (o HTML5?) Edge.
Adobe Edge Animate, per l'animazione, può realizzare animazioni complesse modificando la timeline e creando originali (chiamati simboli in Edge Animate).
Edge Reflow è il Design del web responsivo. Alcune persone lo traducono come reattivo, che in realtà è adattivo.
I due software sopra elencati sono fondamentalmente orientati al browser del kernel Webkit, quindi è necessario incorporare un kernel Webkit per fornire un'interfaccia di anteprima e modifica WYSIWYG. Tutti hanno usato CEF. (La differenza tra CEF e Webkit puro sarà introdotta più avanti)
D+.
Nel concetto di Web App, Q+ fornisce un ambiente di esecuzione per le pagine web (in parole semplici: una scatola del client e alcune API disponibili) e supporta i kernel IE e Webkit.
Per gli studenti di sviluppo web, il kernel Webkit (in realtà CEF) che abbiamo introdotto non deve considerare i problemi di compatibilità delle versioni di IE, che non solo migliorano l'efficienza dello sviluppo, ma ci permettono anche di sfruttare alcune nuove funzionalità di HTML5. All'epoca, il mercato applicativo di Q+, il centro messaggi, gli sfondi di fondo, i widget musicali e altre applicazioni erano tutti sviluppati basandosi sul kernel Webkit.
Si può dire che il progetto Q+ abbia fatto più tentativi di CEF, come:
Il widget musicale sviluppato utilizza il tag audio HTML5;
Alcune applicazioni utilizzano la funzionalità offline di HTML5 (cioè con un file manifesto), ma ovviamente ci sono alcune svolte e svolte, e ho acquisito molta esperienza.
Strumenti di sviluppo webkit confezionati.
Protocolli personalizzati: ad esempio, l'accesso a qplus:// protocolli può essere reindirizzato a una cartella speciale.
Rendering fuori schermo (OSR): Utilizzando il rendering fuori schermo + Windows Layered Window, si crea una finestra irregolare della pagina web (qual è la forma dell'area opaca della pagina web, qual è la forma della finestra)
Perché integrare il CEF per i clienti? Con così tanti esempi, questa domanda è molto più facile da pronunciare:
Viene utilizzato per visualizzare pagine web e utilizzare vari servizi web;
Usa pagine web per fare UI;
Usa funzionalità HTML5, come audio, canvas, ecc., incluse le funzionalità CSS3.
Rendering fuori schermo (OSR):
Il cosiddetto OSR consiste nel renderizzare l'intera pagina su una bitmap senza creare una vera finestra. Ovviamente, non solo il rendering, ma anche una serie di API per gestire mouse, eventi di tastiera, eventi di input method, ecc.
Questa funzione è particolarmente utile quando non possono essere usate vere finestre, come su Windows a Strati o quando vengono renderizzate su texture nei giochi.
Utilizzando le funzionalità OSR, si possono ottenere effetti interessanti, come:
AlloyTeam ha creato Webtop, che usa OSR per creare un browser, un player, ecc.
C'è un progetto Awesomium che supporta anche OSR, e ci sono già progetti di gioco che usano Awesomium per renderizzare le pagine web nei giochi. (Guardando il file di output di Awesomium, dovrebbe essere simile all'implementazione di CEF, è tutto un pacchetto di Chromium, e anche CEF che Awesomium può fare dovrebbe essere fatto)
Nel tempo libero, ho realizzato una demo e usato CEF per renderizzare le pagine web su OpenGL Texture, che può essere considerato un piccolo tentativo di applicare CEF al gioco, come mostrato nella figura:
Demo nel browser di gioco
Perché CEF? Cioè
IE è stato un controllo embedded del browser per molto tempo e, per essere precisi, ora abbiamo molte alternative a IE.
CEF vs IE:
Compatibilità:
Cioè: Il kernel varia da 6 a 10 versioni a seconda del sistema operativo, e il carico di lavoro dello sviluppo web per essere compatibile con queste versioni non può essere sottovalutato.
CEF: Utilizza il kernel Webkit e, dal punto di vista delle caratteristiche, una versione CEF può corrispondere a un numero di versione di Chrome, così che lo sviluppo web abbia un insieme chiaro di funzionalità, eliminando il carico di lavoro necessario per considerare la compatibilità.
Standard HTML5 e Nuove Funzionalità:
IE: Ovviamente, le versioni più vecchie di IE non supportano le ultime funzionalità e standard HTML.
CEF: Non c'è dubbio che Webkit e Chrome siano in prima linea nel supportare nuove funzionalità.
Open Source & Multipiattaforma:
Cioè: Non open source, limitato alla piattaforma Windows
CEF: Open source, il Webkit e Chromium utilizzati sono tutti open source, open source significa più possibilità personalizzabili; E si estende anche su Windows, Mac e Linux.
Rendering fuori schermo (OSR):
Ad esempio: puoi ottenere rendering fuori schermo con alcuni hack, ma il carico di lavoro non è piccolo e non è ufficialmente supportato.
CEF: C'è una modalità dedicata di rendering fuori schermo e la corrispondente API.
Penetrazione:
IE: Tutti gli utenti Windows hanno IE, che è il vantaggio di IE (ma alcuni utenti hanno impostazioni IE errate, che portano all'inutilizzabilità, come jscrip{filtering}t.dll non registrato, con conseguente impossibilità di usare Javascrip{filter}t)
CEF: Devi installarlo e confezionarlo tu stesso
Webkit
Perché confrontare deliberatamente CEF e Webkit?
Ho letto recentemente un buon articolo su cosa sia Webkit, cosa non sia e perché ci siano così tanti porting Webkit: "Cosa devono sapere gli sviluppatori su WebKit"
Ecco un riassunto approssimativo:
Webkit è il motore di parsing e disposizione delle pagine web, condiviso da tutti i browser basati su Webkit. La versione predefinita di Webkit è Safari, che è la versione scaricata dalla compilazione del codice sorgente di Webkit. Ci sono altre porte Webkit, tra cui Chromium, QtWebkit, ecc., che hanno implementazioni diverse in grafica 2D, accelerazione GPU, motore Javascrip, decodifica audio/video, ecc.
CEF vs webkit (in realtà Chromium vs Webkit)
Il motore V8, il rendering 2D di Skia, l'implementazione accelerata dalla GPU di Chromium, ecc., con l'aiuto dell'eccellente implementazione di Chromium, CEF è diventato anche un eccellente porting Webkit.
Svantaggi della CEF: Sii gentile, la CEF ha anche le sue carenze e limitazioni, e non puoi semplicemente menzionare i vantaggi; qui ti presenterò gli svantaggi e gli svantaggi della CEF:
Volume:
Nell'ultima versione di CEF, la somma di tutte le DLL dovrebbe essere vicina a 40M, e si stima che sarà 10M+ dopo compressione. Se il tuo progetto in sé non è grande e non può riceverlo, allora il CEF non fa per te.
Ovviamente, per i giochi che ora sono calcolati da G, questo volume dovrebbe comunque essere accettabile.
Per i progetti clienti ordinari, dipende dal fatto che il progetto stesso debba utilizzare le funzionalità implementate dal CEF e se valga la pena aumentare così tanto il pacchetto di installazione del prodotto. Ovviamente, ci sono anche alcune compromesse nell'implementazione, come il download dopo l'installazione (personalmente non penso che sia significativo, dopotutto, gli utenti che installano pacchetti possono anche scegliere di scaricare software per velocizzare)
Cache:
La cache di Chrome è progettata per avere un solo processo di lettura e scrittura, e lo stesso vale per CEF.
Per i client che devono essere aperti più volte, può essere specificata solo una cartella cache diversa per ogni istanza di processo. Tuttavia, questo aumenta senza dubbio l'uso del disco rigido e fa sì che alcuni file originariamente memorizzati nella cache vengano scaricati più volte (ad esempio, il processo A memorizza la cache jQuery.js, il processo B deve richiedere e memorizzare in cache una volta perché memorizza nella cache diverse directory jQueyr.js
OSR:
Attualmente l'OSR non è come la modalità finestra reale, che può essere accelerata dalla GPU, e l'OSR può essere reso solo tramite software, il che significa che alcuni effetti CSS 3D non possono essere supportati.
Tuttavia, le caratteristiche dell'OSR sono ancora in fase di miglioramento, e personalmente penso che valga ancora la pena aspettarla.
Cosa condividere più tardi Dopo aver scritto così tanto, può essere considerato un'introduzione al CEF, e scriverò in futuro alcuni materiali secchi, cioè su come usare il CEF, tra cui:
Acquisizione, compilazione, incorporamento, elaborazione delle chiamate API di pagine e client, rendering OSR fuori schermo, cache, protocolli personalizzati, CEF1 & CEF3, ecc.
Beh, per oggi è tutto.
|