Utilice webassembly en Qt5.12 herramienta de informes acumulación web (efreport.com)

websssembly Introducción

webassembly (WASM referido) basado en el formato de instrucción binaria es una pila de máquinas virtuales. webassembly utilizadas para compilar C / C ++ / óxido y cualquier otro lenguaje de alto nivel, para generar un objetivo portátil, por lo que los programas cliente y servidor se pueden implementar en la Web.

webassembly máquina de pila diseñado como un volumen adecuado, carga rápida formato binario. webassembly mente es el uso de hardware común cuenta disponible en múltiples plataformas, para llevar a cabo a un ritmo local.

En la actualidad, esta tecnología madurado, las últimas versiones de los principales navegadores Chrome, Edge, Firefox, Safari cuenta con el apoyo webassembly. Las principales áreas de aplicación de nacionales y extranjeros webassembly tienen Google Earth, herramientas de diseño, Figma motor de juego a gran escala, de procesamiento de imágenes.

 

Qt soporte técnico de webassembly

Qt han de ser compatible con la versión previa de la tecnología 5.11 y 5.12, en la próxima versión 5.13, apoyará oficialmente webassembly tecnología.

 

En el entorno de desarrollo para construir CentOS7

CentOS7 antes de instalar webAssembly, primero tiene que instalar CMake , GCC, 2.7.x. Python , el Nodo y otras herramientas . Después de emscripten instalación, proceso de instalación emscripten es más lento, dependiendo de la longitud de instalación velocidad de la red.

Después de más de una herramienta de instalación correcta se QT5.12.2 explicado como un proceso de construcción ejemplo. Descargar e instalar el origen QT5.12.2, entrar en el directorio emsdk desde el sitio oficial de QT, ejecute "./emsdk_env.sh fuente", entran directorio de origen 5.12.2 / src / qtbase, introduzca" ./configure -xplatform WASM-emscripten -Developer-build -RELEASE -static -no-feature-hilo pruebas -nomake -nomake ejemplos -no-dbus -no-headersclean -no-ssl -no-advertencias-are-errores "operación de configuración, re-make, finalmente 5.12.2 / bajo el directorio src / qtbase / bin webassembly de soporte para la generación de archivos qmake. En este punto, el entorno de desarrollo Qt para construir el webassembly completado.

instalación DETALLADA Referencia: https://blog.csdn.net/qq_25745863/article/details/82682127 .

 

Qt5.12.2 programa de desarrollo webassembly

desarrollo Qt5.12.2 archivo webassembly programa está vinculado estáticamente se compila manera, la generación de WASM vínculo después de sus bibliotecas Qt, y el archivo de biblioteca de desarrollo.

En Qt Creator, crear un nuevo proyecto de aplicación de widgets Qt, abrir una línea de comandos, introduzca el directorio emsdk, realice ./emsdk_env.sh fuente, a continuación, vaya al directorio de nueva construcción, compilado usando qmake compilar el proyecto en el entorno emsdk para generar Makefile archivo, ejecute hacer que el compilador para generar qtloader.js, qtlogo.svg, xxx.html, xxx.js, xxx.wasm y otros documentos. Uso del navegador Firefox para xxx.html abierta, visto directamente en la página web utilizando el plug-ins escritos en Qt webassembly.

 

Llamar a los demás entre la función de C ++ con js

llamada Interfaz js c ++: archivo xxx.js generado módulo denominado objeto, este objeto contiene el modo de interfaz C proporcionado webassembly en la web para proporcionar un plug-in funciones de interfaz, JS interfaz Qt se puede llamar directamente por los objetos del módulo. Por ejemplo: en una función de exportación Qt Verno, extern "C" {const char * EMSCRIPTEN_KEEPALIVE VERNO ();}, el archivo compilado se genera la función _verNo xxx.js, Js puede ser llamado directamente Module._verNo () Obtiene el valor de retorno de esta función.

js c ++ llamada de función en: emscripten proporciona un número de función EM_ASM_ similares, objeto de función js se puede llamar directamente. Por ejemplo: js en un sujeto que: var TestEvent =: {testEvt función () {console.log ( 'test');}};, Qt ({TestEvent testEvt ();; EM_ASM _ utilizado para invocar el objeto .}) método. Ver invocación específica: https://emscripten.org/docs/api_reference/emscripten.h.html#calling-javascript-from-cc . \

 

Los procesos de desarrollo en boxes encontrado

Actualmente webassembly desarrollo hay un cierto límite, si no pueden acceder a los archivos locales, no multi-hilo, no se puede utilizar el portapapeles local, no puede hacer que la programación de la red. En el proceso de desarrollo específico webassembly y JS deben ayudarse mutuamente, webassembly lograr gráficos algoritmo núcleo y otras funciones, js termina de leer archivos locales, interactúan con las funciones de back-end, con el fin de lograr el marco principal para los plug-ins basados ​​en la web.

1, los recursos

webassembly principio de diseño son las máquinas virtuales independientes funcionan, requieren el uso de recursos completamente independientes. Para los recursos de procesamiento son normalmente cargados por el proyecto Qt a la web de plug-in, pero esto finalmente conduce a la formación de archivo WASM es demasiado grande, el tiempo de carga real es demasiado largo, junto con el impacto de la red, la experiencia del usuario es pobre. La situación actual en algunos recursos también necesitan para enlazar dinámicamente, con el fin de resolver los problemas de recursos en el programa de Qt única cargar los archivos de recursos necesarios, otros recursos no esenciales cargados dinámicamente desde el fondo de JS, el modo de interfaz de llamada siempre webassembly, el archivo de recursos a la palabra método de aumentar el plug-in web entrantes, para lograr el efecto de los recursos de carga dinámica de esta manera.

2, un problema de entrada de China

Qt5.12.2 plug-in Web compilado sí mismo es incapaz de entrar en los chinos para resolver este problema, es necesario utilizar cuadro de edición HTML. Después de llamar al lugar que necesita para entrar en las interfaces del plugin web js enviar eventos, front-end en respuesta a eventos, se muestra el cuadro de edición, el extremo delantero de la caja de edición puede responder al método de entrada local, entrada de China, luego de nuevo texto a la web a través de la interfaz de plug-ins y el cuadro de edición oculta, por lo que para resolver el problema de entrada de china.

3, un problema portapapeles

Desde webassembly actualmente no puede interactuar con el portapapeles local, sólo llamando js manera. No se puede determinar la fuente del contenido del portapapeles son webassembly operación propia o externa pasta, por lo que el uniforme pasta tomada desde el portapapeles externo. Con este mecanismo, el interior de la operación webassembly copiar, es necesario copiar los datos a la identificación contenido del portapapeles interno y externo es un conjunto de datos internos, y después determina los datos de ser interno o externo pasta de pegado.

Webassembly tecnología mejorará, para resolver estos problemas será más conveniente.

 

Web de diseño de informes

la vela excedentes diseñador de informes se basa en la plataforma y la tecnología de diseño de informes en línea Webassembly Qt. El diseñador de informes utilizando el lenguaje C ++, la eficiencia operativa en la web puede ser garantizada. En el diseño del informe, evitando el cliente engorroso instalar sobremesa de diseño, después de hacer un buen servidor de carga de plantilla, acelerar la velocidad de vista previa. Mostrar un efecto consistente en la vista previa de la plataforma real de la información, el proceso de diseño de informes más simple y conveniente, reduciendo considerablemente el tiempo que se necesita para hacer un informe. No sólo eso, Windows, Linux, bajo MacOS, en el navegador de modo de ejecución, la operación verdaderamente multiplataforma.

Excedente vela Report Designer es un ejemplo de aplicación del país fue pionero en el uso de la tecnología en el informe webassembly campo.

Publicado 39 artículos originales · ganado elogios 1 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/efreport/article/details/90694221
Recomendado
Clasificación