Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 59 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# render.js

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/yone1130/render.js)

[> 日本語で読む](./README_JP.md)

## Overview
Expand All @@ -8,24 +10,65 @@

## Usage

### 1. Import from CDN
Example code (with App Creator):
```js
import { Render, RenderApp, RenderComponent } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

URL: https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js
class Greeting extends RenderComponent {
constructor() {
super();
this.title = "render.js";
this.message = "Hello World";
}

```js
import { Render } from 'https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js';
```
build() {
const { $h1, $p } = this.render;

return super.build({
children: [
$h1({
id: "title",
textContent: this.title,
}),
$p({
id: "message",
textContent: this.message,
}),
]
});
}
}

class MyApp extends RenderApp {
constructor() { super(); }

### 2. Use
build() {
return super.build({
children: [
new Greeting(),
]
});
}
}

const render = new Render();

render.runApp({
root: document.body,
app: new MyApp(),
});
```

A sample code:
or just rendering (with Builder):
```js
import { Render } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

const render = new Render();
const root = document.getElementById("root");

const app = () => {
let title = "render.js";
let message = "Hello World";
function app() {
const title = "render.js";
const message = "Hello World";

return [
render.$div({
Expand All @@ -50,13 +93,16 @@ render.build({
});
```

### More Resources
### Example codes

- **Example codes: [examples/](./examples/).**

### Resources

- **Documents: https://render-js.yoneyo.com/ .**
- **Demos: https://render-js.yoneyo.com/examples/ .**
- **Example codes: [examples/](./examples/).**

## Build
## Development

### 1. Install Packages

Expand Down
70 changes: 58 additions & 12 deletions README_JP.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# render.js

[![DeepWiki に質問する](https://deepwiki.com/badge.svg)](https://deepwiki.com/yone1130/render.js)

[> Read in English](./README.md)

## Overview
Expand All @@ -8,24 +10,65 @@

## 利用方法

### 1. CDNからインポートする
コード例 (App Creator):
```js
import { Render, RenderApp, RenderComponent } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

URL: https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js
class Greeting extends RenderComponent {
constructor() {
super();
this.title = "render.js";
this.message = "Hello World";
}

```js
import { Render } from 'https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js';
```
build() {
const { $h1, $p } = this.render;

return super.build({
children: [
$h1({
id: "title",
textContent: this.title,
}),
$p({
id: "message",
textContent: this.message,
}),
]
});
}
}

class MyApp extends RenderApp {
constructor() { super(); }

### 2. 使う
build() {
return super.build({
children: [
new Greeting(),
]
});
}
}

const render = new Render();

render.runApp({
root: document.body,
app: new MyApp(),
});
```

サンプルコード:
またはレンダリングのみ (Builder):
```js
import { Render } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

const render = new Render();
const root = document.getElementById("root");

const app = () => {
let title = "render.js";
let message = "Hello World";
function app() {
const title = "render.js";
const message = "Hello World";

return [
render.$div({
Expand All @@ -50,13 +93,16 @@ render.build({
});
```

### サンプルコード

- **サンプルコード: [examples/](./examples/).**

### リソース

- **ドキュメント: https://render-js.yoneyo.com/ .**
- **ウェブデモ: https://render-js.yoneyo.com/examples/ .**
- **サンプルコード: [examples/](./examples/).**

## ビルド
## 開発

### 1. パッケージをインストールする

Expand Down
2 changes: 1 addition & 1 deletion docs/scripts/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
*/

import { Render } from 'https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js';
import { Render } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';


const render = new Render();
Expand Down
2 changes: 1 addition & 1 deletion docs/scripts/pages/examples.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
*/

import { Render } from 'https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js';
import { Render } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

const render = new Render();

Expand Down
57 changes: 57 additions & 0 deletions examples/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/**!
*
* render.js
*
* Copyright (C) 2025 よね/Yone
*
* Licensed under the MIT License.
*
* https://github.com/yone1130/render.js
*
*/

import { Render, RenderApp, RenderComponent } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

class Greeting extends RenderComponent {
constructor() {
super();
this.title = "render.js";
this.message = "Hello World";
}

build() {
const { $h1, $p } = this.render;

return super.build({
children: [
$h1({
id: "title",
textContent: this.title,
}),
$p({
id: "message",
textContent: this.message,
}),
]
});
}
}

class MyApp extends RenderApp {
constructor() { super(); }

build() {
return super.build({
children: [
new Greeting(),
]
});
}
}

const render = new Render();

render.runApp({
root: document.body,
app: new MyApp(),
});
2 changes: 1 addition & 1 deletion examples/counter.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
*/

import { Render } from 'https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js';
import { Render } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';

const render = new Render();
const root = document.getElementById("root");
Expand Down
2 changes: 1 addition & 1 deletion examples/hello-world.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
*/

import { Render } from 'https://cdn.yoneyo.com/scripts/render/render-v1.0.0.js';
import { Render } from 'https://cdn.yoneyo.com/scripts/render@1.0.0/render.js';


const render = new Render();
Expand Down
20 changes: 20 additions & 0 deletions src/app/app.model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/**!
*
* render.js
*
* Copyright (C) 2025 よね/Yone
*
* Licensed under the MIT License.
*
* https://github.com/yone1130/render.js
*
*/

import { RenderComponent } from "../component/component.js";
import { Render } from "../render.js";

export interface RenderAppModel {
id: string;
render: Render;
build({ children }: { children: Array<HTMLElement | RenderComponent> }): Array<HTMLElement>;
}
45 changes: 45 additions & 0 deletions src/app/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**!
*
* render.js
*
* Copyright (C) 2025 よね/Yone
*
* Licensed under the MIT License.
*
* https://github.com/yone1130/render.js
*
*/

import { RenderComponent } from "../component/component.js";
import { Render, RenderElement } from "../render.js";
import { RenderAppModel } from "./app.model.js";

export abstract class RenderApp implements RenderAppModel {
constructor(id: string) {
this.id = id;
this.render = new Render();
}

id: string;
render: Render;

build({ children }: { children: Array<HTMLElement | RenderComponent> }): Array<HTMLElement> {
let builtChildren: Array<HTMLElement> = [];

children.forEach((child) => {
if (child instanceof RenderComponent) {
builtChildren.push(...child.build({ children: [] }));
return;
}

builtChildren.push(child);
});

return [
new RenderElement({
id: this.id,
children: builtChildren,
})._createCustomElement("render-app"),
]
};
}
19 changes: 19 additions & 0 deletions src/component/component.model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**!
*
* render.js
*
* Copyright (C) 2025 よね/Yone
*
* Licensed under the MIT License.
*
* https://github.com/yone1130/render.js
*
*/

import { Render } from "../render.js";

export interface RenderComponentModel {
id: string;
render: Render;
build({ children }: { children: Array<HTMLElement> }): Array<HTMLElement>;
}
Loading