All Projects β†’ patrikx3 β†’ angular-compile

patrikx3 / angular-compile

Licence: other
πŸ†– Angular Dynamic Compile - Convert strings to Angular components

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
SCSS
7915 projects

Projects that are alternatives of or similar to angular-compile

freenom
🌐 Feenom Promise/Async/Await
Stars: ✭ 19 (-78.16%)
Mutual labels:  corifeus, p3x
generator-sf
Yeoman generator that scaffolds out a Symfony PHP app including Browsersync, various CSS preprocessors, jspm, webpack, browserify and Service Worker
Stars: ✭ 14 (-83.91%)
Mutual labels:  grunt
wazero
wazero: the zero dependency WebAssembly runtime for Go developers
Stars: ✭ 2,065 (+2273.56%)
Mutual labels:  jit
Batch-First
A JIT compiled chess engine which traverses the search tree in batches in a best-first manner, allowing for neural network batching, asynchronous GPU use, and vectorized CPU computations.
Stars: ✭ 27 (-68.97%)
Mutual labels:  jit
RCCpp-DearImGui-GLFW-example
Add Runtime Compiled C++ to the Dear ImGui example using the GLFW and OpenGL backend - with power saving
Stars: ✭ 61 (-29.89%)
Mutual labels:  compile
RSqueak
A Squeak/Smalltalk VM written in RPython.
Stars: ✭ 78 (-10.34%)
Mutual labels:  jit
openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,973 (+3317.24%)
Mutual labels:  jit
fasmi
F# -> ASM disassembler
Stars: ✭ 168 (+93.1%)
Mutual labels:  jit
TemplateEngine
Design and build web applications with components using only your web browser
Stars: ✭ 41 (-52.87%)
Mutual labels:  grunt
grunt-mocha-cli
Run Mocha server-side tests in Grunt.
Stars: ✭ 42 (-51.72%)
Mutual labels:  grunt
transonic
πŸš€ Make your Python code fly at transonic speeds!
Stars: ✭ 93 (+6.9%)
Mutual labels:  jit
tenderjit
JIT for Ruby that is written in Ruby
Stars: ✭ 388 (+345.98%)
Mutual labels:  jit
rpaheui
Industrial-strength implementaiton of Aheui written in RPython with JIT
Stars: ✭ 52 (-40.23%)
Mutual labels:  jit
jscrambler
Monorepo of Jscrambler's Javascript Client and Integrations
Stars: ✭ 118 (+35.63%)
Mutual labels:  grunt
qemujs
Qemu.js source code with proof-of-concept machine-code-to-WASM JIT.
Stars: ✭ 101 (+16.09%)
Mutual labels:  jit
gruntworkflows
Repository for my tutorial course: Grunt.js Web Workflows on LinkedIn Learning and Lynda.com.
Stars: ✭ 28 (-67.82%)
Mutual labels:  grunt
browser-extension
Hunter for Chrome and Firefox
Stars: ✭ 15 (-82.76%)
Mutual labels:  grunt
XUnityDeploy
Compile Unity to iOS[Android] client
Stars: ✭ 18 (-79.31%)
Mutual labels:  compile
nj
A cross platform JIT engine based on Eclipse OMR
Stars: ✭ 19 (-78.16%)
Mutual labels:  jit
sham
A DSL for runtime code generation in racket
Stars: ✭ 63 (-27.59%)
Mutual labels:  jit

NPM

Donate for Corifeus / P3X Contact Corifeus / P3X Corifeus @ Facebook Build Status Uptime Robot ratio (30 days)

πŸ†– Angular Dynamic Compile - Convert strings to Angular components v2022.4.129

Bugs are evidentβ„’ - MATRIX️

NodeJS LTS is supported

Built on NodeJs version

v16.15.0

Built on Angular

13.3.11

Description

WARNING

Angular has changed, so it stricts many things for dynamic compilation. The only solution right now, is to simple copy the code into your code and it will work (like on https://angular-compile.corifeus.com/).

The code you just copy into your project is here:
https://github.com/patrikx3/angular-compile/tree/master/projects/angular-compile/src/lib

The package on the NPM is the pure TypeScript code. Not built using Angular.

Use case

Dynamically compile standard strings to fully functional Angular components. Supports imports, exports, and standard context.

Install

npm install --save p3x-angular-compile
# or
yarn add p3x-angular-compile

Check out how it works and code

https://angular-compile.corifeus.com

https://github.com/patrikx3/angular-compile/blob/master/src/app/app.component.ts

IMPORTANT

Make sure AOT is disabled in the angular.json:

{ 
    "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/workspace",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            
            // make sure it is false
            "aot": false,

            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          }
    }
}

Minimum build requirement arguments

ng build --aot=false --build-optimizer=false

Usage

import { CompileModule} from "p3x-angular-compile"

// the module settings
@NgModule({
    imports: [
        CorifeusWebMaterialModule, // Optional
        CompileModule, // Required
    ],
    declarations: [
        Page,
    ],
    providers: [
    ],
    bootstrap: [ Page ]
})
export class Module { };

Template

 <span 
 
 <!--- Not required -->
 *ngIf="isEnabled" 

 <!--- Required -->
 [p3x-compile]="template"

 <!--- Required -->
 [p3x-compile-ctx]="this"

 <!--- Not required, will just throw the component's exception if not provided -->
 [p3x-compile-error-handler]="handleCompileErrorHandler"

 <!--- Not required -->
 [p3x-compile-module]="dataModule"
 >     
</span>

Code

// A page example
export class Page {
    
    isEnabled: boolean = true;
    
    dataModule : any =  {
        //schemas: [CUSTOM_ELEMENTS_SCHEMA],
        //declarations: [],
        imports: [
            MatButtonModule
        ],
        exports: [       
        ]
    }

    template: string = "<button mat-button mat-raised-button (click)="context.alert()">Dynamic template</button>";

    handleCompileErrorHandler(error: Error) {
        console.error(error)
    }

    alert() {
        alert('ok');
    }
}

Options

Reference for the Angular module settings which are available.

Dev environment end test

npm install -g yarn
git clone https://github.com/patrikx3/angular-compile.git
cd angular-compile
npm install
npm run start

http://localhost:4200

Errors

Type x is part of the declarations of 2 modules

Basically, you need a shared component.

https://stackoverflow.com/questions/42993580/angular-2-type-childcomponent-is-a-part-of-the-declarations-of-2-modules-par

AOT + JIT

Since Angular 5.x.x +

We cannot use AOT + JIT at once.

Info

angular/angular#20156 (comment)

On the issue, you can see:

To reduce the payload, we do not ship the compiler in AOT.

So right now, it is not possible.

Although, there are some hacks, but you are on your own...
angular/angular#20156 (comment)

Size

If you want very small bundle, use gzip.


πŸ™ This is an open-source project. Star this repository, if you like it, or even donate to maintain the servers and the development. Thank you so much!

Possible, this server, rarely, is down, please, hang on for 15-30 minutes and the server will be back up.

All my domains (patrikx3.com and corifeus.com) could have minor errors, since I am developing in my free time. However, it is usually stable.

Note about versioning: Versions are cut in Major.Minor.Patch schema. Major is always the current year. Minor is either 4 (January - June) or 10 (July - December). Patch is incremental by every build. If there is a breaking change, it should be noted in the readme.


P3X-ANGULAR-COMPILE Build v2022.4.129

Donate for Corifeus / P3X Contact Corifeus / P3X Like Corifeus @ Facebook

P3X Sponsor

IntelliJ - The most intelligent Java IDE

JetBrains

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].