Draft:StencilJS
Submission rejected on 1 February 2025 by Star Mississippi (talk). This submission is contrary to the purpose of Wikipedia. Rejected by Star Mississippi 9 days ago. Last edited by Star Mississippi 9 days ago. |
Submission declined on 16 June 2024 by Encoded (talk). This submission is not adequately supported by reliable sources. Reliable sources are required so that information can be verified. If you need help with referencing, please see Referencing for beginners and Citing sources. Declined by Encoded 7 months ago. |
Submission declined on 9 April 2024 by Star Mississippi (talk). This submission appears to read more like an advertisement than an entry in an encyclopedia. Encyclopedia articles need to be written from a neutral point of view, and should refer to a range of independent, reliable, published sources, not just to materials produced by the creator of the subject being discussed. This is important so that the article can meet Wikipedia's verifiability policy and the notability of the subject can be established. If you still feel that this subject is worthy of inclusion in Wikipedia, please rewrite your submission to comply with these policies. This draft's references do not show that the subject qualifies for a Wikipedia article. In summary, the draft needs multiple published sources that are: Declined by Star Mississippi 10 months ago.
|
- Comment: The "improvements" are more promotion and borderline G12. Rejecting since as I said six months ago, the editor is just continuing to push the article into mainspace rather than trying to improve it. Star Mississippi 17:34, 1 February 2025 (UTC)
- Comment: This is more promotional, not less. I'm not going to review, but I'd advocate for this being rejected since the editor is not interested in improving it. Star Mississippi 13:56, 7 June 2024 (UTC)
- Comment: Issues raised at the AfD have not been addressed. Please stop continually repasting this content. That is not a path to approval. Star Mississippi 11:26, 9 April 2024 (UTC)
{{Multiple issues|
This article is written like a personal reflection, personal essay, or argumentative essay that states a Wikipedia editor's personal feelings or presents an original argument about a topic. (May 2023) |
This article contains promotional content. (May 2023) |
This article may require copy editing for grammar, style, cohesion, tone, or spelling. (May 2023) |
The topic of this draft may not meet Wikipedia's general notability guideline. (May 2023) |
A major contributor to this article appears to have a close connection with its subject. (May 2023) |
Original author(s) | Adam Bradley |
---|---|
Developer(s) | Ionic (mobile app framework) |
Initial release | May 20, 2017 |
Stable release | 4.25.1
|
Repository | StencilJS Repository |
Written in | TypeScript |
Platform | JavaScript engine |
Size | 16.5 KB[1] |
Type | Web framework |
License | MIT License[2] |
Website | stenciljs |
StencilJS is an open-source compiler for building highly optimized Web Components. Developed by the team at Ionic, StencilJS combines the best features of modern JavaScript frameworks with the simplicity and performance of Web Components, enabling developers to create reusable, framework-agnostic UI components.[3][4][5]
StencilJS is a powerful tool for building Web Components that work seamlessly across different frameworks. By combining modern web development best practices with performance optimizations, StencilJS provides an efficient way to develop scalable, maintainable, and reusable UI components.[6][7] Its source code is licensed under MIT License and hosted on GitHub.[8] StencilJS generates framework-specific wrappers that allow custom elements developed, to be used with any framework, whether its Angular, React, or Vue.js.[9]
History
[edit]StencilJS was introduced by the Ionic team in 2017 to address the challenges of building performant, scalable UI components for Ionic’s ecosystem.[10] Unlike traditional frameworks such as React, Angular, or Vue, StencilJS is not a framework but a compiler that generates standard-compliant Web Components. These components can be used in any JavaScript framework or as standalone elements in vanilla JavaScript applications.[11][12][13][14]
Main Features
[edit]StencilJS provides several features that make it an attractive choice for building Web Components:
- TypeScript Support: StencilJS is built with TypeScript, providing strong typing and improved developer experience.
- Virtual DOM: Uses a lightweight Virtual DOM for efficient updates and rendering.
- Reactive Data Binding: Supports reactive properties and state management.
- Lazy Loading: Optimized lazy loading of components to improve performance.
- Scoped CSS and Shadow DOM: Ensures style encapsulation and component isolation.
- Automatic Polyfills: Provides polyfills for older browsers to ensure cross-browser compatibility.
- Build-time Optimizations: Features ahead-of-time (AOT) compilation and tree-shaking for optimized builds.
Architecture
[edit]StencilJS components are built using a class-based syntax and decorators, similar to Angular. A typical component consists of:
- @Component(): Defines metadata for the component.
- @Prop(): Declares component properties.
- @State(): Maintains internal component state.
- @Method(): Exposes public methods.
- @Event(): Enables event-driven communication.
Basic usage
[edit]A StencilJS component looks similar to a class-based React component, with the addition of TypeScript decorators.
import { Component, h, Prop, State } from '@stencil/core';
@Component({
tag: 'my-component',
styleUrl: 'my-component.css',
shadow: true // Enable Shadow DOM
})
export class MyComponent {
@Prop() name: string;
@State() count: number = 0;
increment() {
this.count++;
}
render() {
return (
<div>
<p>Hello, {this.name}!</p>
<p>Count: {this.count}</p>
<button onClick={() => this.increment()}>Increment</button>
</div>
);
}
}
In this example, the @Component decorator defines a new web component named my-component. The @Prop decorator defines a property that can be passed to the component, and the render method returns the component's HTML structure using JSX.
StencilJS components can be used in various environments:
- Vanilla JavaScript:
<script type="module" src="/build/my-component.js"></script>
<my-component name="Stencil"></my-component>
- React
import { defineCustomElements } from 'my-component/loader';
defineCustomElements();
<my-component name="React"></my-component>
- Angular
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
- Vue: Uses Vue’s native support for Web Components.
Applications
[edit]StencilJS is widely used in:
- Design Systems: Large organizations use StencilJS to build design systems with framework-agnostic components.
- Enterprise Applications: Provides a scalable approach for component-based UI development.
- Progressive web app (PWA).[19][20]
- Several companies like Upwork, Volkswagen, Porsche, MasterCard, Amazon, Adidas, Panera etc. have built their design systems based on Stencil-based Web Components.[21][22]
- Liberty Mutual Ins. Group's Design System FLUID (Frontend Library for User Interface Development) is built using StencilJS.[23] The music streaming platform Amazon Music is built using StencilJS.
Comparision
[edit]Feature | StencilJS | React | Angular | Vue |
---|---|---|---|---|
Web Component Support | Native | Requires Wrapper | Requires Wrapper | Requires Wrapper |
Virtual DOM | Yes | Yes | No | Yes |
Performance | High | Medium | Medium | High |
TypeScript | Yes | Yes | Yes | Yes |
See also
[edit]References
[edit]- ^ "Stencil/core@3.2.2". BundlePhobia. May 8, 2023.
- ^ "Stencil Maintenance and Support Status".
- ^ "Is Stencil a Better React?". 17 Aug 2021.
- ^ "Creating Web Components with Stencil". 6 May 2020.
- ^ "Publishing and Integrating a StencilJS Web Component in React". 3 October 2019.
- ^ "Web Components & Stencil.js - Build Custom HTML Elements".
- ^ Ebrahimi, Morteza (11 Aug 2024). "A Comparative Analysis of stencil/core and lit-element Choosing the Right Tool for Web Component Development". Medium.
- ^ "GitHub - StencilJS Repository/stenciljs: toolchain for building scalable, enterprise-ready component system". January 11, 2020 – via GitHub.
- ^ "Framework agnostic component libraries with StencilJs and Nx". 7 February 2022.
- ^ "StencilJS and Tour of Heroes".
- ^ "Building Micro Frontends with Stencil Web Components". 9 February 2022.
- ^ "Stencil Readme". 23 May 2023.
- ^ Hawkins, Tyler (April 2021). "Web Component Solutions: A Comparison". Medium.
- ^ "Introduction to Stenciljs". 9 August 2018.
- ^ "Orgenic Github". GitHub.
- ^ "DOCS".
- ^ "Design Systems: Building a Cross-Functional UI Library with Stencil.js". 10 March 2021.
- ^ "Creating a Reusable Web Component with StencilJS". 3 October 2019.
- ^ "Building a PWA with Stencil: An Introduction to StencilJS". 3 September 2019.
- ^ "Build A Fast Offline-First PWA with StencilJs". 12 October 2017.
- ^ "github porsche". GitHub.
- ^ "Welcome to new digitl".
- ^ "FLUID CDN".
- ^ "Stencil Reviews: Pros and Cons".
- ^ "React vs StencilJS".
External links
[edit]Category:2017 software Category:Compilers Category:Web development Category:Software using the MIT license