Skip to content

Commit ea0a4f7

Browse files
committed
init
1 parent 977a14f commit ea0a4f7

File tree

8 files changed

+102
-150
lines changed

8 files changed

+102
-150
lines changed

doc/.vitepress/config/en.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defineConfig } from 'vitepress';
22

33
export const en = defineConfig({
44
lang: 'en-US',
5-
description: 'A approachable, fast, flexible and lightweight JavaScript library',
5+
description: 'A approachable, fast, flexible JavaScript library',
66
themeConfig: {
77
nav: [
88
{

doc/.vitepress/config/shared.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export const shared = defineConfig({
3333
['meta', { name: 'theme-color', content: '#6c2de4' }],
3434
['meta', { property: 'og:type', content: 'website' }],
3535
['meta', { property: 'og:locale', content: 'en' }],
36-
['meta', { property: 'og:title', content: 'Mettle | A approachable, fast, flexible and lightweight JavaScript library' }],
36+
['meta', { property: 'og:title', content: 'Mettle | A approachable, fast, flexible JavaScript library' }],
3737
['meta', { property: 'og:site_name', content: 'Mettle' }],
3838
['meta', { property: 'og:image', content: '/mettle-doc/logo.png' }],
3939
['meta', { property: 'og:url', content: 'https://vitepress.dev/' }],

doc/.vitepress/config/zh.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defineConfig } from 'vitepress';
22

33
export const zh = defineConfig({
44
lang: 'zh-Hans',
5-
description: '一个易用、快速、灵活且轻量级的JavaScript库',
5+
description: '一个易用、快速、灵活的JavaScript库',
66
themeConfig: {
77
nav: [
88
{

doc/.vitepress/theme/cutom.css

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,6 @@
1010
--vp-c-indigo-3: var(--color);
1111
}
1212

13-
@media (min-width: 640px) {
14-
:root {
15-
--vp-home-hero-image-filter: blur(150px);
16-
}
17-
}
18-
19-
@media (min-width: 960px) {
20-
:root {
21-
--vp-home-hero-image-filter: blur(150px);
22-
}
23-
}
2413

2514
.user-img {
2615
width: 80px;
@@ -37,13 +26,31 @@
3726

3827
@media (max-width: 640px) {
3928
.VPHome .container {
40-
padding-top: 150px;
29+
padding-top: 70px;
4130
}
4231
}
4332

4433
@media (min-width: 960px) {
4534
.VPHome .container {
46-
padding-top: 110px;
35+
padding-top: 80px;
36+
}
37+
38+
.VPHome .vp-doc {
39+
width: 760px;
40+
}
41+
42+
.VPHero.has-image .image-container {
43+
transform: translate(0, 0);
44+
}
45+
46+
.VPHero.has-image .main {
47+
max-width: 700px !important;
48+
text-align: center;
49+
}
50+
51+
.VPHero.has-image .main .text,
52+
.VPHero.has-image .main .tagline {
53+
max-width: 100%;
4754
}
4855
}
4956

@@ -59,7 +66,7 @@
5966

6067
.VPHome .container .image {
6168
order: 1 !important;
62-
display: none;
69+
/* display: none; */
6370
}
6471

6572
.VPHome .container .text {
@@ -94,25 +101,4 @@
94101

95102
.VPHome {
96103
margin-bottom: 0 !important;
97-
}
98-
99-
100-
.VPHome .container {
101-
animation: popIn 1.2s;
102-
}
103-
104-
@keyframes popIn {
105-
0% {
106-
transform: scale(0.1);
107-
opacity: 0;
108-
}
109-
110-
80% {
111-
transform: scale(1.1);
112-
}
113-
114-
100% {
115-
transform: scale(1);
116-
opacity: 1;
117-
}
118104
}

doc/en/index.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,28 @@
22
layout: home
33

44
title: Mettle
5-
titleTemplate: Approachable, fast, flexible and lightweight JavaScript library
5+
titleTemplate: Approachable, fast, flexible JavaScript library
66

77
hero:
88
name: Mettle
9-
text: Approachable, fast, flexible and lightweight JavaScript library
10-
tagline: Building user interfaces,More intuitive
9+
text: Approachable, fast, flexible JavaScript library
10+
tagline: Building user interfaces
1111
actions:
1212
- theme: brand
1313
text: Get Started
1414
link: /guide/started/
15+
- theme: alt
16+
text: View on GitHub
17+
link: https://github.com/maomincoding/mettle
1518
image:
1619
src: /logo.svg
1720
alt: Mettle
1821
---
22+
23+
```jsx
24+
function App() {
25+
const count = signal(0);
26+
27+
return <button onClick={() => count.value++}>{count}</button>;
28+
}
29+
```

doc/zh/guide/install/index.md

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 安装
22

3-
## CDN
3+
## 无构建版本
44

55
如果你想使用 ES 模块。
66

@@ -9,55 +9,73 @@
99
:::
1010

1111
```html
12-
<script type="module">
13-
import {
14-
html,
15-
createApp,
16-
} from 'https://cdn.jsdelivr.net/npm/mettle@latest/dist/mettle.full-esm.js';
17-
18-
function App({ setData }) {
19-
let count = 0;
20-
21-
function add() {
22-
count++;
23-
setData();
12+
<html>
13+
<body>
14+
<script type="module">
15+
import {
16+
html,
17+
createApp,
18+
signal
19+
} from 'https://cdn.jsdelivr.net/npm/mettle@latest/dist/mettle.full-esm.js';
20+
21+
function App() {
22+
const count = signal(0);
23+
24+
function add() {
25+
count.value++;
26+
}
27+
28+
return () => html`<h1 onClick=${add}>${count.value}</h1>`;
2429
}
25-
return () => html`<h1 onClick=${add}>${count}</h1>`;
26-
}
2730
28-
createApp(html`<${App}/>`, '#app');
29-
</script>
31+
createApp(html`<${App}/>`, '#app');
32+
</script>
33+
</body>
34+
</html>
3035
```
3136

32-
如果你觉得上述方式有点麻烦,也可以直接在 `<script>` 标签中导入。
37+
另外,也可以直接在 `<script>` 标签中导入。
3338

3439
::: tip
3540
该版本的所有顶层 API 都以属性的形式暴露在了全局的 Mettle 对象上。
3641
:::
3742

3843
```html
39-
<script src="https://cdn.jsdelivr.net/npm/mettle@latest/dist/mettle.full.prod.js"></script>
40-
<script>
41-
const { html, createApp } = Mettle;
44+
<html>
45+
<body>
46+
<script src="https://cdn.jsdelivr.net/npm/mettle@latest/dist/mettle.full.prod.js"></script>
47+
<script>
48+
const { html, createApp, signal } = Mettle;
4249
43-
function App({ setData }) {
44-
let count = 0;
50+
function App() {
51+
const count = signal(0);
4552
46-
function add() {
47-
count++;
48-
setData();
53+
function add() {
54+
count.value++;
55+
}
56+
57+
return () => html`<h1 onClick=${add}>${count.value}</h1>`;
4958
}
50-
return () => html`<h1 onClick=${add}>${count}</h1>`;
51-
}
5259
53-
createApp(html`<${App}/>`, '#app');
54-
</script>
60+
createApp(html`<${App}/>`, '#app');
61+
</script>
62+
</body>
63+
</html>
5564
```
5665

5766
::: tip
5867
上面两种方式,默认都使用了生产版本。如果你想在开发中获得更精准的代码定位,那么可以用开发版本,只需要把文件后缀`*.prod.js``prod`字段删除即可。
5968
:::
6069

70+
::: tip
71+
无构建的优势伴随着权衡:
72+
73+
- 无法使用 JSX 语法
74+
- 需要`return () =>`
75+
- 无法自动解包,必须手动`.value`
76+
77+
:::
78+
6179
## 包管理器
6280

6381
在用 Mettle 构建大型应用时,推荐使用包管理器安装。

doc/zh/guide/started/index.md

Lines changed: 2 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -10,84 +10,10 @@ Mettle 是一个用于构建用户界面的 JavaScript 库。
1010

1111
- **声明式渲染:** 我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系,开发者可以更加专注于业务逻辑的开发,不需要过多地关心 DOM 操作的细节。
1212

13-
- **符合直觉** 使用熟悉的原生 JavaScript 语法,不改变 JavaScript 语义,回归原生 JavaScript 的纯净
13+
- **信号机制** 状态变化会自动更新组件和 UI,以实现尽可能高效的操作
1414

1515
- **性能出色:** 采用了虚拟 DOM 的模式,虚拟 DOM 使用 diff 算法的方法来计算出真正需要更新的节点,最大限度地减少了 DOM 操作以及 DOM 操作带来的排版与重绘损耗,从而显著提高了性能。另外,我们的 JavaScript 库在全球知名的[测评榜单](https://github.com/krausest/js-framework-benchmark)上赢得了优秀的成绩。
1616

1717
- **组件化:** 一个函数就是一个组件,可以根据应用规模任意组合。并且组件特有的 **“孤岛特性”**,使得将虚拟 DOM 树计算的级别控制在组件级别。
1818

19-
- **灵活的应用场景:** 有无构建工具都可以使用,并且可以适配到其他前端框架开发的应用项目中去。
20-
21-
- **轻量级:** 压缩后的文件大小不足 **12k**。另外,可以根据不同应用场景,选择[不同类型](https://www.jsdelivr.com/package/npm/mettle?tab=files&path=dist)的文件。
22-
23-
## 快速入手
24-
25-
想要快速体验 Mettle,你可以直接试试下面两种方式之一。
26-
27-
### 全局构建版本
28-
29-
该版本的所有顶层 API 都以属性的形式暴露在了全局的 Mettle 对象上。
30-
31-
```html
32-
<!DOCTYPE html>
33-
<html lang="en">
34-
<head>
35-
<meta charset="UTF-8" />
36-
<title>Mettle.js</title>
37-
</head>
38-
<body>
39-
<script src="https://cdn.jsdelivr.net/npm/mettle@latest/dist/mettle.full.prod.js"></script>
40-
<script>
41-
const { html, createApp } = Mettle;
42-
43-
function App({ setData }) {
44-
let count = 0;
45-
46-
function add() {
47-
count++;
48-
setData();
49-
}
50-
return () => html`<h1 onClick=${add}>${count}</h1>`;
51-
}
52-
53-
createApp(html`<${App}/>`, '#app');
54-
</script>
55-
</body>
56-
</html>
57-
```
58-
59-
### ES 模块
60-
61-
现代浏览器大多都已支持 ES 模块,因此我们可以像这样通过 CDN 以及 ES 模块使用 Mettle。
62-
63-
```html
64-
<!DOCTYPE html>
65-
<html lang="en">
66-
<head>
67-
<meta charset="UTF-8" />
68-
<title>Mettle.js</title>
69-
</head>
70-
<body>
71-
<script type="module">
72-
import {
73-
html,
74-
createApp,
75-
} from 'https://cdn.jsdelivr.net/npm/mettle@latest/dist/mettle.full-esm.js';
76-
77-
function App({ setData }) {
78-
let count = 0;
79-
80-
function add() {
81-
count++;
82-
setData();
83-
}
84-
return () => html`<h1 onClick=${add}>${count}</h1>`;
85-
}
86-
87-
createApp(html`<${App}/>`, '#app');
88-
</script>
89-
</body>
90-
</html>
91-
```
92-
93-
我们简单快速地了解 Mettle 的使用,那么我们在下一篇详细说明下 Mettle 有哪些安装方法。
19+
- **灵活的应用场景:** 有无构建工具都可以使用。另外,可以根据不同应用场景,选择[不同类型](https://www.jsdelivr.com/package/npm/mettle?tab=files&path=dist)的文件。

doc/zh/index.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,28 @@
22
layout: home
33

44
title: Mettle
5-
titleTemplate: 易用、快速、灵活且轻量级的JavaScript库
5+
titleTemplate: 易用、快速、灵活的JavaScript库
66

77
hero:
88
name: Mettle
9-
text: 易用、快速、灵活且轻量级的JavaScript库
10-
tagline: 用于构建用户界面,更加符合直觉
9+
text: 易用、快速、灵活的JavaScript库
10+
tagline: 用于构建用户界面
1111
actions:
1212
- theme: brand
1313
text: 开始使用
1414
link: /zh/guide/started/
15+
- theme: alt
16+
text: 在 GitHub 上查看
17+
link: https://github.com/maomincoding/mettle
1518
image:
1619
src: /logo.svg
1720
alt: Mettle
1821
---
22+
23+
```jsx
24+
function App() {
25+
const count = signal(0);
26+
27+
return <button onClick={() => count.value++}>{count}</button>;
28+
}
29+
```

0 commit comments

Comments
 (0)