xiangjsoncraft 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +389 -286
- package/bin/create.js +376 -0
- package/dist/xiangjsoncraft.umd.js +1 -82
- package/package.json +49 -25
- package/rollup.config.js +21 -0
- package/src/renderJson.js +111 -0
- package/template/config.json +36 -0
- package/template/index.html +44 -0
- package/config.json +0 -218
- package/renderJson.js +0 -82
package/README.md
CHANGED
|
@@ -1,355 +1,458 @@
|
|
|
1
|
-
# XiangJsonCraft
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
# XiangJsonCraft 2.0.0
|
|
2
|
+
|
|
3
|
+
**Write JSON, Get a Website.** | 零CSS、零JS、纯JSON驱动的轻量前端框架
|
|
4
|
+
|
|
5
|
+
一款从「JSON渲染工具」升级而来的完整前端微框架,无需编写任何CSS、JS代码,仅通过编辑JSON配置文件,即可快速构建美观、响应式、带交互的完整网页,大幅降低前端开发门槛,非前端开发者也能轻松上手。
|
|
6
|
+
|
|
7
|
+
## 📢 重大升级说明(从 1.x → 2.0.0)
|
|
8
|
+
|
|
9
|
+
XiangJsonCraft 2.0.0 是一次 **不兼容的重大版本升级** —— 从简单的「JSON渲染工具函数」,正式升级为「完整前端框架 + 官方脚手架」,保留1.x核心优势并全面强化,彻底改变使用方式、提升产品定位。
|
|
10
|
+
|
|
11
|
+
### 🔄 新旧版本核心差异
|
|
12
|
+
|
|
13
|
+
| 对比维度 | 1.x 版本(工具) | 2.0.0 版本(框架) |
|
|
14
|
+
| -------- | ----------------------------------- | ---------------------------------------------- |
|
|
15
|
+
| 产品定位 | JSON渲染工具函数 | 纯JSON驱动前端框架 |
|
|
16
|
+
| 使用方式 | 手动创建HTML/JS,引入工具包调用函数 | 脚手架一键创建完整项目,仅改JSON |
|
|
17
|
+
| 核心能力 | 基础JSON样式+内容渲染 | 样式+内容+交互+响应式+脚手架全支持 |
|
|
18
|
+
| 依赖管理 | 需手动引入、手动管理依赖 | 脚手架自动安装、自动引入,无需手动操作 |
|
|
19
|
+
| 项目结构 | 无固定结构,需手动搭建 | 标准化项目结构,自动生成所有必要文件 |
|
|
20
|
+
| 兼容性 | 仅支持模块化引入 | 兼容模块化/非模块化环境,适配所有现代浏览器 |
|
|
21
|
+
| 可维护性 | 需手动维护HTML/JS与JSON的关联 | HTML仅存骨架,所有配置集中在JSON,维护成本极低 |
|
|
22
|
+
### ✅ 保留的1.x核心功能(全部继承并优化)
|
|
23
|
+
|
|
24
|
+
- JSON与HTML解耦:HTML仅负责DOM骨架,样式、内容完全由JSON控制
|
|
25
|
+
|
|
26
|
+
- CSS属性驼峰转短横线:支持驼峰命名(如boxSizing),自动转换为CSS标准写法(box-sizing)
|
|
27
|
+
|
|
28
|
+
- 强容错性:过滤无效配置、空属性、不存在的选择器,单个错误不影响整体渲染
|
|
29
|
+
|
|
30
|
+
- 内容渲染支持:同时支持纯文本渲染(防XSS)和HTML片段渲染,满足复杂内容需求
|
|
31
|
+
|
|
32
|
+
- CSS全兼容:支持所有合法CSS选择器(类、ID、全局*)、伪类、属性,无额外学习成本
|
|
33
|
+
|
|
34
|
+
- 轻量无依赖:核心代码仅百行级,打包后体积极小,不占用多余项目资源
|
|
35
|
+
|
|
36
|
+
### 🔥 2.0.0 新增核心功能(框架级升级)
|
|
37
|
+
|
|
38
|
+
- 官方脚手架:支持 `npm create xiangjsoncraft@latest` 一键创建项目,零手动配置
|
|
39
|
+
|
|
40
|
+
- 多模板支持:内置「基础模板」「完整模板」「空模板」,适配不同使用场景(快速上手/复杂开发/自定义搭建)
|
|
41
|
+
|
|
42
|
+
- 交互能力强化:支持在JSON中直接配置JS原生事件(如onclick),无需编写额外JS即可实现简单交互
|
|
43
|
+
|
|
44
|
+
- 响应式优化:内置响应式示例配置,支持@media媒体查询,一键适配移动端/PC端
|
|
45
|
+
|
|
46
|
+
- 标准化项目结构:自动生成index.html、config.json、package.json、README.md,规范开发流程
|
|
47
|
+
|
|
48
|
+
- 自动依赖管理:脚手架自动安装框架依赖,自动完成框架引入,无需手动下载、引入文件
|
|
49
|
+
|
|
50
|
+
- 友好控制台日志:区分信息、成功、错误日志,清晰提示配置加载状态、渲染结果和问题原因,便于排查
|
|
51
|
+
|
|
52
|
+
- 全局变量暴露:兼容非模块化环境,CDN引入可直接全局调用,适配更多部署场景
|
|
53
|
+
|
|
54
|
+
- 部署简化:无需打包,直接上传项目文件即可上线,降低部署门槛
|
|
55
|
+
|
|
56
|
+
- 样式注入优化:样式块自动插入到head最前面,避免被其他样式覆盖,提升渲染稳定性
|
|
57
|
+
|
|
58
|
+
## 🚀 快速开始(2.0.0 唯一使用方式)
|
|
59
|
+
|
|
60
|
+
2.0.0 彻底废弃1.x的「手动引入工具包」用法,统一为脚手架一键创建,步骤极简:
|
|
61
|
+
|
|
62
|
+
### 方式1:使用 npm create(推荐)
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# 快速创建项目(默认项目名:xiangjsoncraft-app)
|
|
66
|
+
npm create xiangjsoncraft@latest
|
|
67
|
+
|
|
68
|
+
# 指定项目名称创建(推荐)
|
|
69
|
+
npm create xiangjsoncraft@latest my-json-app
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 方式2:使用 npx 直接调用
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# 直接创建项目
|
|
76
|
+
npx create-xiangjsoncraft
|
|
77
|
+
|
|
78
|
+
# 指定项目名称
|
|
79
|
+
npx create-xiangjsoncraft my-json-app
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 方式3:全局安装后使用
|
|
83
|
+
|
|
27
84
|
```bash
|
|
28
|
-
#
|
|
29
|
-
npm install xiangjsoncraft
|
|
85
|
+
# 全局安装脚手架
|
|
86
|
+
npm install -g xiangjsoncraft
|
|
30
87
|
|
|
31
|
-
#
|
|
32
|
-
|
|
88
|
+
# 创建项目
|
|
89
|
+
create-xiangjsoncraft my-json-app
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 项目启动步骤
|
|
33
93
|
|
|
34
|
-
|
|
35
|
-
|
|
94
|
+
```bash
|
|
95
|
+
# 1. 进入项目目录(替换为你的项目名)
|
|
96
|
+
cd my-json-app
|
|
97
|
+
|
|
98
|
+
# 2. 启动开发服务器(脚手架已自动配置脚本)
|
|
99
|
+
npm run start
|
|
100
|
+
|
|
101
|
+
# 3. 访问页面
|
|
102
|
+
# 打开浏览器访问 http://localhost:3000(默认端口,具体以终端提示为准)
|
|
36
103
|
```
|
|
37
104
|
|
|
38
|
-
###
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
105
|
+
### 核心操作:自定义项目
|
|
106
|
+
|
|
107
|
+
启动项目后,**无需修改任何HTML/JS文件**,仅需编辑项目根目录的 `config.json`,即可自定义所有样式、内容和交互,修改后刷新浏览器即可生效。
|
|
108
|
+
|
|
109
|
+
## 📋 项目结构(2.0.0 标准化结构)
|
|
110
|
+
|
|
111
|
+
脚手架创建的项目结构清晰,所有可配置内容集中在`config.json`,无需关注其他文件:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
my-json-app/ # 你的项目根目录
|
|
115
|
+
├─ index.html # DOM骨架(固定不变,无需修改)
|
|
116
|
+
├─ config.json # 核心配置文件(样式+内容+交互,唯一需要编辑的文件)
|
|
117
|
+
├─ package.json # 项目配置(自动生成,可修改脚本/依赖)
|
|
118
|
+
└─ README.md # 项目说明(自动生成,含使用指南)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 各文件说明
|
|
122
|
+
|
|
123
|
+
- `index.html`:仅包含DOM骨架,定义页面基础结构(如容器、标题、按钮),选择器与config.json严格对应,无需修改
|
|
124
|
+
|
|
125
|
+
- `config.json`:框架核心配置文件,包含styles(样式)、content(内容)两个核心节点,所有自定义都在这里完成
|
|
126
|
+
|
|
127
|
+
- `package.json`:自动生成项目配置,包含启动脚本(npm run start)和框架依赖,可根据需求修改
|
|
128
|
+
|
|
129
|
+
- `README.md`:自动生成项目使用指南,包含启动命令、配置说明,便于团队协作和后续维护
|
|
130
|
+
|
|
131
|
+
## ⚙️ 核心配置详解(config.json)
|
|
132
|
+
|
|
133
|
+
config.json 是框架的核心,包含 `styles`(样式配置)和 `content`(内容配置)两个必填节点,语法遵循标准JSON规范(推荐用 [JSON.cn](https://www.json.cn/) 校验语法)。
|
|
134
|
+
|
|
135
|
+
### 1. 整体配置结构
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"framework": "XiangJsonCraft 2.0", // 框架标识(可选,仅用于识别)
|
|
140
|
+
"styles": { /* 样式配置(核心) */ }, // 所有CSS样式都在这里配置
|
|
141
|
+
"content": { /* 内容配置(核心) */ } // 所有页面内容都在这里配置
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 2. styles 节点(样式配置)
|
|
146
|
+
|
|
147
|
+
用于定义所有页面CSS样式,完全兼容CSS语法,支持所有合法选择器和属性,仅需用JSON格式编写即可。
|
|
148
|
+
|
|
149
|
+
#### 核心规则
|
|
150
|
+
|
|
151
|
+
- 键(key):CSS选择器(支持类、ID、全局*、伪类、媒体查询,如 `.app-title`、`#btn`、`.box:hover`、`@media (max-width: 768px)`)
|
|
152
|
+
|
|
153
|
+
- 值(value):样式对象,键为CSS属性(支持驼峰命名),值为CSS属性值
|
|
154
|
+
|
|
155
|
+
- 容错机制:空选择器、非对象样式、空属性、无效属性值会被自动过滤,不影响整体渲染
|
|
156
|
+
|
|
157
|
+
- 驼峰转换:属性名支持驼峰(如fontSize、backgroundColor),框架会自动转换为CSS标准短横线写法(font-size、background-color)
|
|
158
|
+
|
|
159
|
+
#### 示例配置
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
"styles": {
|
|
163
|
+
"*": { // 全局样式(所有元素生效)
|
|
164
|
+
"margin": 0,
|
|
165
|
+
"padding": 0,
|
|
166
|
+
"boxSizing": "border-box", // 驼峰命名,自动转为box-sizing
|
|
167
|
+
"fontFamily": "Segoe UI, Roboto, 微软雅黑, sans-serif"
|
|
168
|
+
},
|
|
169
|
+
"body": { // body标签样式
|
|
170
|
+
"backgroundColor": "#f0f4f8",
|
|
171
|
+
"color": "#334e68",
|
|
172
|
+
"lineHeight": "1.6",
|
|
173
|
+
"minHeight": "100vh"
|
|
174
|
+
},
|
|
175
|
+
".app-title": { // 类选择器样式
|
|
176
|
+
"fontSize": "2rem",
|
|
177
|
+
"color": "#2d3748",
|
|
178
|
+
"textAlign": "center",
|
|
179
|
+
"marginBottom": "1.5rem",
|
|
180
|
+
"transition": "color 0.3s ease"
|
|
181
|
+
},
|
|
182
|
+
".app-title:hover": { // 伪类样式
|
|
183
|
+
"color": "#4299e1"
|
|
184
|
+
},
|
|
185
|
+
"@media (max-width: 768px)": { // 响应式样式(移动端适配)
|
|
186
|
+
".app-title": {
|
|
187
|
+
"fontSize": "1.8rem"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 3. content 节点(内容配置)
|
|
194
|
+
|
|
195
|
+
用于向HTML中的DOM节点注入文本或HTML内容,键为与HTML对应的选择器,值为内容配置对象,支持纯文本和HTML两种渲染方式。
|
|
196
|
+
|
|
197
|
+
#### 内容配置对象属性
|
|
198
|
+
|
|
199
|
+
| 属性名 | 类型 | 是否必选 | 默认值 | 说明 |
|
|
200
|
+
| ------ | -------- | -------- | ------ | ---------------------------------------------------------------------- |
|
|
201
|
+
| value | 任意类型 | 是 | - | 要注入的文本或HTML内容,框架会自动转为字符串处理 |
|
|
202
|
+
| isHtml | Boolean | 否 | false | true:以HTML格式渲染(支持标签和JS事件);false:以纯文本渲染(防XSS) |
|
|
203
|
+
#### 示例配置
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
"content": {
|
|
207
|
+
".app-title": { // 对应HTML中的 <h1 class="app-title"></h1>
|
|
208
|
+
"value": "XiangJsonCraft 2.0 示例",
|
|
209
|
+
"isHtml": false // 纯文本渲染
|
|
210
|
+
},
|
|
211
|
+
".app-desc": { // 对应HTML中的 <p class="app-desc"></p>
|
|
212
|
+
"value": "仅修改config.json,即可实现全页面自定义!",
|
|
213
|
+
"isHtml": false
|
|
214
|
+
},
|
|
215
|
+
".app-btn": { // 对应HTML中的 <a class="app-btn"></a>
|
|
216
|
+
"value": "<span onclick=\"alert('点击成功!')\">点击我</span>",
|
|
217
|
+
"isHtml": true // HTML渲染,支持JS事件
|
|
218
|
+
}
|
|
219
|
+
}
|
|
47
220
|
```
|
|
48
221
|
|
|
49
|
-
##
|
|
50
|
-
|
|
51
|
-
在项目根目录/HTML 同级目录创建 `config.json`,定义页面的样式、文本及 HTML 内容,支持所有 CSS 选择器和媒体查询:
|
|
222
|
+
## 📌 完整配置示例(config.json)
|
|
223
|
+
|
|
52
224
|
```json
|
|
53
225
|
{
|
|
226
|
+
"framework": "XiangJsonCraft 2.0",
|
|
54
227
|
"styles": {
|
|
55
228
|
"*": {
|
|
56
|
-
"margin":
|
|
57
|
-
"padding":
|
|
58
|
-
"boxSizing": "border-box"
|
|
229
|
+
"margin": 0,
|
|
230
|
+
"padding": 0,
|
|
231
|
+
"boxSizing": "border-box",
|
|
232
|
+
"fontFamily": "Segoe UI, Roboto, 微软雅黑, sans-serif"
|
|
59
233
|
},
|
|
60
234
|
"body": {
|
|
61
|
-
"
|
|
235
|
+
"backgroundColor": "#f0f4f8",
|
|
236
|
+
"color": "#334e68",
|
|
62
237
|
"lineHeight": "1.6",
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
|
|
238
|
+
"minHeight": "100vh",
|
|
239
|
+
"padding": "2rem 1rem"
|
|
240
|
+
},
|
|
241
|
+
".app-container": {
|
|
242
|
+
"maxWidth": "1200px",
|
|
243
|
+
"margin": "0 auto",
|
|
244
|
+
"backgroundColor": "#ffffff",
|
|
245
|
+
"padding": "2rem",
|
|
246
|
+
"borderRadius": "12px",
|
|
247
|
+
"boxShadow": "0 4px 20px rgba(0,0,0,0.05)",
|
|
248
|
+
"transition": "all 0.3s ease"
|
|
249
|
+
},
|
|
250
|
+
".app-container:hover": {
|
|
251
|
+
"boxShadow": "0 8px 30px rgba(0,0,0,0.1)"
|
|
66
252
|
},
|
|
67
|
-
".
|
|
68
|
-
"
|
|
69
|
-
"color": "
|
|
70
|
-
"padding": "1.5rem",
|
|
253
|
+
".app-title": {
|
|
254
|
+
"fontSize": "2.2rem",
|
|
255
|
+
"color": "#2d3748",
|
|
71
256
|
"textAlign": "center",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
257
|
+
"marginBottom": "1.5rem",
|
|
258
|
+
"transition": "color 0.3s ease"
|
|
259
|
+
},
|
|
260
|
+
".app-title:hover": {
|
|
261
|
+
"color": "#4299e1"
|
|
262
|
+
},
|
|
263
|
+
".app-desc": {
|
|
264
|
+
"fontSize": "1.1rem",
|
|
265
|
+
"marginBottom": "2rem",
|
|
266
|
+
"textAlign": "center",
|
|
267
|
+
"maxWidth": "600px",
|
|
268
|
+
"marginLeft": "auto",
|
|
269
|
+
"marginRight": "auto"
|
|
74
270
|
},
|
|
75
|
-
"
|
|
271
|
+
".app-btn-group": {
|
|
76
272
|
"display": "flex",
|
|
77
|
-
"listStyle": "none",
|
|
78
273
|
"justifyContent": "center",
|
|
79
|
-
"gap": "
|
|
80
|
-
"
|
|
274
|
+
"gap": "1rem",
|
|
275
|
+
"flexWrap": "wrap"
|
|
81
276
|
},
|
|
82
|
-
"
|
|
83
|
-
"
|
|
277
|
+
".app-btn": {
|
|
278
|
+
"display": "inline-block",
|
|
279
|
+
"padding": "12px 24px",
|
|
280
|
+
"backgroundColor": "#4299e1",
|
|
281
|
+
"color": "#ffffff",
|
|
282
|
+
"borderRadius": "8px",
|
|
84
283
|
"textDecoration": "none",
|
|
85
|
-
"
|
|
284
|
+
"cursor": "pointer",
|
|
285
|
+
"transition": "all 0.3s ease"
|
|
86
286
|
},
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
287
|
+
".app-btn:hover": {
|
|
288
|
+
"backgroundColor": "#3182ce",
|
|
289
|
+
"transform": "translateY(-2px)"
|
|
90
290
|
},
|
|
91
|
-
".
|
|
92
|
-
"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"
|
|
291
|
+
".app-btn-secondary": {
|
|
292
|
+
"backgroundColor": "#718096"
|
|
293
|
+
},
|
|
294
|
+
".app-btn-secondary:hover": {
|
|
295
|
+
"backgroundColor": "#4a5568"
|
|
96
296
|
},
|
|
97
297
|
"@media (max-width: 768px)": {
|
|
98
|
-
"
|
|
99
|
-
"padding": "1rem"
|
|
298
|
+
".app-container": {
|
|
299
|
+
"padding": "1rem",
|
|
300
|
+
"margin": "0 0.5rem"
|
|
100
301
|
},
|
|
101
|
-
"
|
|
302
|
+
".app-title": {
|
|
303
|
+
"fontSize": "1.8rem"
|
|
304
|
+
},
|
|
305
|
+
".app-btn-group": {
|
|
102
306
|
"flexDirection": "column",
|
|
103
|
-
"alignItems": "center"
|
|
104
|
-
"gap": "1rem"
|
|
307
|
+
"alignItems": "center"
|
|
105
308
|
}
|
|
106
309
|
}
|
|
107
310
|
},
|
|
108
311
|
"content": {
|
|
109
|
-
".
|
|
110
|
-
"value": "XiangJsonCraft
|
|
312
|
+
".app-title": {
|
|
313
|
+
"value": "XiangJsonCraft 2.0 完整示例",
|
|
314
|
+
"isHtml": false
|
|
315
|
+
},
|
|
316
|
+
".app-desc": {
|
|
317
|
+
"value": "纯JSON驱动的前端框架,无需写CSS/JS,修改JSON即可完成所有开发!",
|
|
111
318
|
"isHtml": false
|
|
112
319
|
},
|
|
113
|
-
".
|
|
114
|
-
"value": "<span
|
|
320
|
+
".app-btn": {
|
|
321
|
+
"value": "<span onclick=\"alert('主按钮被点击!')\">主按钮</span>",
|
|
115
322
|
"isHtml": true
|
|
116
323
|
},
|
|
117
|
-
".
|
|
118
|
-
"value": "
|
|
119
|
-
"isHtml":
|
|
324
|
+
".app-btn-secondary": {
|
|
325
|
+
"value": "<span onclick=\"alert('次按钮被点击!')\">次按钮</span>",
|
|
326
|
+
"isHtml": true
|
|
120
327
|
}
|
|
121
328
|
}
|
|
122
329
|
}
|
|
123
330
|
```
|
|
124
331
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
332
|
+
## 🔧 常见问题排查
|
|
333
|
+
|
|
334
|
+
### 1. 控制台报 404 错误:无法加载 config.json
|
|
335
|
+
|
|
336
|
+
- 原因:未使用本地服务器打开页面,浏览器跨域策略阻止加载本地JSON文件(直接双击HTML文件会触发此问题)
|
|
337
|
+
|
|
338
|
+
- 解决:使用 VS Code Live Server、Node.js Express 等本地服务器打开项目,确保JSON文件可通过服务器访问
|
|
339
|
+
|
|
340
|
+
### 2. 样式未渲染 / 内容未注入
|
|
341
|
+
|
|
342
|
+
- 检查选择器:HTML中的DOM选择器与config.json中的键必须**严格一致**(区分大小写、类名前缀`.`、ID前缀`#`)
|
|
343
|
+
|
|
344
|
+
- 检查JSON语法:确保config.json无语法错误(如缺少引号、大括号、逗号结尾),可通过JSON.cn校验
|
|
345
|
+
|
|
346
|
+
- 检查日志:查看浏览器控制台日志,确认框架是否渲染成功、配置是否被正确加载
|
|
347
|
+
|
|
348
|
+
### 3. 依赖安装失败
|
|
349
|
+
|
|
350
|
+
- 原因:网络问题、npm镜像问题,或本地npm版本过低
|
|
351
|
+
|
|
352
|
+
- 解决:手动进入项目目录,执行`npm install` 重新安装;或切换npm镜像(如`npm config set registry https://registry.npm.taobao.org`)
|
|
353
|
+
|
|
354
|
+
### 4. 控制台报错:prop.replaceCamelCase is not a function
|
|
355
|
+
|
|
356
|
+
- 原因:styles节点中存在非字符串类型的属性名(如数字、null、数组)
|
|
357
|
+
|
|
358
|
+
- 解决:校验config.json,确保styles节点下所有属性名均为双引号包裹的字符串,删除无效属性
|
|
359
|
+
|
|
360
|
+
### 5. 浏览器报 favicon.ico 404
|
|
361
|
+
|
|
362
|
+
- 原因:浏览器默认在项目根目录查找网站小图标,未找到则报404(不影响项目功能)
|
|
363
|
+
|
|
364
|
+
- 解决:下载favicon.ico图标放到项目根目录,或在HTML的<head>中通过<link rel="icon">指定PNG/SVG图标
|
|
365
|
+
|
|
366
|
+
## 📦 框架开发与打包(开发者指南)
|
|
367
|
+
|
|
368
|
+
若你需要修改框架核心逻辑、二次开发,可按照以下步骤操作:
|
|
369
|
+
|
|
370
|
+
### 1. 克隆源码
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
git clone https://github.com/dxiangwiki/xiangjsoncraft.git
|
|
374
|
+
cd xiangjsoncraft
|
|
168
375
|
```
|
|
169
376
|
|
|
170
|
-
###
|
|
377
|
+
### 2. 安装开发依赖
|
|
378
|
+
|
|
171
379
|
```bash
|
|
172
|
-
# 安装开发依赖(首次使用)
|
|
173
380
|
npm install
|
|
381
|
+
```
|
|
174
382
|
|
|
175
|
-
|
|
176
|
-
npm run build
|
|
383
|
+
### 3. 修改核心逻辑
|
|
177
384
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
#### 调用方式
|
|
192
|
-
```javascript
|
|
193
|
-
// 方式1:ES6模块化引入(本地开发/前端框架)
|
|
194
|
-
import { renderJsonStyles } from 'xiangjsoncraft';
|
|
195
|
-
renderJsonStyles();
|
|
196
|
-
|
|
197
|
-
// 方式2:CDN全局调用(静态页面/快速开发)
|
|
198
|
-
XiangJsonCraft.renderJsonStyles();
|
|
385
|
+
- 框架核心渲染逻辑:`src/renderJson.js`
|
|
386
|
+
|
|
387
|
+
- 脚手架逻辑:`bin/create.js`
|
|
388
|
+
|
|
389
|
+
- 项目模板:`template/` 目录下的所有文件
|
|
390
|
+
|
|
391
|
+
- 打包配置:`rollup.config.js`
|
|
392
|
+
|
|
393
|
+
### 4. 打包框架核心
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
npm run build
|
|
199
397
|
```
|
|
200
398
|
|
|
201
|
-
|
|
202
|
-
配置文件为标准 JSON 格式,核心包含 `styles` 和 `content` 两个一级节点,所有配置均支持按需扩展、修改。
|
|
399
|
+
打包后会在 `dist/` 目录生成 `xiangjsoncraft.umd.js`(UMD格式,兼容模块化/非模块化环境)。
|
|
203
400
|
|
|
204
|
-
###
|
|
205
|
-
用于定义页面所有 CSS 样式,**键为任意合法 CSS 选择器**,值为样式属性对象,样式属性支持**驼峰式命名**(会自动转换为 CSS 标准短横线命名)。
|
|
206
|
-
- 支持选择器:类、ID、标签、伪类、伪元素、后代选择器、媒体查询等所有 CSS 合法选择器
|
|
207
|
-
- 样式属性:所有 CSS 原生属性,驼峰式(`fontSize`)会自动转为短横线式(`font-size`)
|
|
401
|
+
### 5. 本地测试
|
|
208
402
|
|
|
209
|
-
|
|
210
|
-
用于定义页面文本/HTML 内容,**键为 CSS 选择器**,值为内容配置对象,包含两个必选属性:
|
|
211
|
-
- `value`:字符串类型,要渲染的内容(纯文本/HTML 片段)
|
|
212
|
-
- `isHtml`:布尔类型,`true` 表示内容为 HTML 片段,`false` 表示内容为纯文本(默认)
|
|
403
|
+
打包后,将`dist/xiangjsoncraft.umd.js` 与 `template/` 目录下的文件放在一起,通过本地服务器测试渲染效果。
|
|
213
404
|
|
|
214
|
-
|
|
215
|
-
1. 配置文件必须命名为 `config.json`,与 HTML 页面同级目录(CDN 方式无需手动创建,自动加载官方配置)
|
|
216
|
-
2. 选择器必须匹配 HTML 中的实际 DOM 节点,否则会被自动过滤
|
|
217
|
-
3. 样式属性值需符合 CSS 规范(如单位、颜色值、尺寸值)
|
|
218
|
-
4. HTML 片段需保证语法合法,避免 XSS 风险(建议仅在可信环境下使用 HTML 内容)
|
|
405
|
+
## 📤 发包步骤(2.0.0 正式发布)
|
|
219
406
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
"body": {
|
|
233
|
-
"fontFamily": "Microsoft YaHei, sans-serif",
|
|
234
|
-
"lineHeight": "1.8",
|
|
235
|
-
"color": "#333",
|
|
236
|
-
"backgroundColor": "#f5f5f5"
|
|
237
|
-
},
|
|
238
|
-
// ID选择器
|
|
239
|
-
"#app": {
|
|
240
|
-
"maxWidth": "1200px",
|
|
241
|
-
"margin": "0 auto",
|
|
242
|
-
"padding": "2rem"
|
|
243
|
-
},
|
|
244
|
-
// 类选择器
|
|
245
|
-
".btn": {
|
|
246
|
-
"padding": "0.8rem 1.5rem",
|
|
247
|
-
"border": "none",
|
|
248
|
-
"borderRadius": "4px",
|
|
249
|
-
"cursor": "pointer",
|
|
250
|
-
"fontSize": "1rem"
|
|
251
|
-
},
|
|
252
|
-
// 伪类选择器
|
|
253
|
-
".btn-primary": {
|
|
254
|
-
"backgroundColor": "#3498db",
|
|
255
|
-
"color": "white"
|
|
256
|
-
},
|
|
257
|
-
".btn-primary:hover": {
|
|
258
|
-
"backgroundColor": "#2980b9"
|
|
259
|
-
},
|
|
260
|
-
// 媒体查询
|
|
261
|
-
"@media (max-width: 768px)": {
|
|
262
|
-
"#app": {
|
|
263
|
-
"padding": "1rem"
|
|
264
|
-
},
|
|
265
|
-
".btn": {
|
|
266
|
-
"width": "100%",
|
|
267
|
-
"marginBottom": "1rem"
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
"content": {
|
|
272
|
-
// 纯文本内容
|
|
273
|
-
"#app h1": {
|
|
274
|
-
"value": "XiangJsonCraft 配置示例",
|
|
275
|
-
"isHtml": false
|
|
276
|
-
},
|
|
277
|
-
// HTML 片段内容
|
|
278
|
-
".desc": {
|
|
279
|
-
"value": "支持 <strong>HTML 片段</strong> 和 <em>纯文本</em> 两种渲染方式",
|
|
280
|
-
"isHtml": true
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
407
|
+
```bash
|
|
408
|
+
# 1. 安装依赖(确保所有依赖已安装)
|
|
409
|
+
npm install
|
|
410
|
+
|
|
411
|
+
# 2. 打包框架核心(生成dist目录)
|
|
412
|
+
npm run build
|
|
413
|
+
|
|
414
|
+
# 3. 登录NPM(确保已注册NPM账号,且拥有包发布权限)
|
|
415
|
+
npm login
|
|
416
|
+
|
|
417
|
+
# 4. 发布2.0.0版本(--access public 确保公开可访问)
|
|
418
|
+
npm publish --access public
|
|
284
419
|
```
|
|
285
420
|
|
|
286
|
-
##
|
|
287
|
-
### “敢改包”的底气来源
|
|
421
|
+
## 📜 版本更新日志
|
|
288
422
|
|
|
289
|
-
|
|
423
|
+
### v2.0.0(最新稳定版 | 重大升级)
|
|
290
424
|
|
|
291
|
-
|
|
425
|
+
- 定位升级:从「JSON渲染工具」升级为「纯JSON驱动的轻量前端框架」,版本号直接跳至2.0.0,不兼容1.x版本
|
|
292
426
|
|
|
293
|
-
|
|
427
|
+
- 新增功能:官方脚手架、多模板支持、自动依赖管理、友好控制台日志、全局变量暴露、部署简化
|
|
294
428
|
|
|
295
|
-
|
|
429
|
+
- 能力强化:交互支持优化、响应式示例完善、样式注入优化、容错机制升级
|
|
296
430
|
|
|
297
|
-
|
|
431
|
+
- 体验优化:标准化项目结构、自动生成使用文档、清晰的控制台提示、简化开发流程
|
|
298
432
|
|
|
299
|
-
|
|
433
|
+
- 继承保留:1.x版本的核心渲染能力、驼峰转短横线、强容错性、CSS全兼容等优势
|
|
300
434
|
|
|
301
|
-
|
|
435
|
+
### v1.1.1 ~ v1.2.0(工具版本)
|
|
302
436
|
|
|
303
|
-
|
|
304
|
-
支持所有现代浏览器,无需额外引入 polyfill:
|
|
305
|
-
- Chrome ≥ 61
|
|
306
|
-
- Firefox ≥ 60
|
|
307
|
-
- Edge ≥ 79
|
|
308
|
-
- Safari ≥ 12.1
|
|
309
|
-
- Opera ≥ 48
|
|
310
|
-
- 移动端所有现代浏览器(微信浏览器、QQ浏览器、Safari 移动端等)
|
|
437
|
+
- v1.2.0:优化本地/CDN配置加载优先级,新增容错机制,完善控制台日志,支持SVG/PNG网站小图标
|
|
311
438
|
|
|
312
|
-
|
|
313
|
-
XiangJsonCraft 欢迎所有开发者的贡献和建议,如果你有以下想法,欢迎随时交流:
|
|
314
|
-
- 新增功能需求
|
|
315
|
-
- 性能优化建议
|
|
316
|
-
- Bug 修复
|
|
317
|
-
- 文档完善
|
|
439
|
+
- v1.1.1:首次正式发布,实现核心JSON样式+内容渲染,支持驼峰转短横线、CDN/本地引入,基本容错机制
|
|
318
440
|
|
|
319
|
-
|
|
441
|
+
## ⚖️ 开源协议
|
|
320
442
|
|
|
321
|
-
|
|
322
|
-
本项目基于 **MIT 开源许可证** 发布,你可以自由使用、修改、分发本项目,无需支付任何费用,只需保留版权声明。
|
|
443
|
+
MIT License - 详见项目根目录 `LICENSE` 文件,可自由使用、修改、分发,无需授权,仅需保留开源协议声明。
|
|
323
444
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
332
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
333
|
-
furnished to do so, subject to the following conditions:
|
|
334
|
-
|
|
335
|
-
The above copyright notice and this permission notice shall be included in all
|
|
336
|
-
copies or substantial portions of the Software.
|
|
337
|
-
|
|
338
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
339
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
340
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
341
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
342
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
343
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
344
|
-
SOFTWARE.
|
|
345
|
-
```
|
|
445
|
+
## 🔗 官方地址
|
|
446
|
+
|
|
447
|
+
- NPM:[https://www.npmjs.com/package/xiangjsoncraft](https://www.npmjs.com/package/xiangjsoncraft)
|
|
448
|
+
|
|
449
|
+
- Github:[https://github.com/dxiangwiki/xiangjsoncraft](https://github.com/dxiangwiki/xiangjsoncraft)
|
|
450
|
+
|
|
451
|
+
## 💬 问题反馈
|
|
346
452
|
|
|
347
|
-
|
|
348
|
-
如果你有任何问题、建议或合作想法,欢迎通过以下方式联系作者:
|
|
349
|
-
- **Email**:3631247406@qq.com
|
|
350
|
-
- **作者**:董翔
|
|
453
|
+
若使用过程中遇到问题、有功能建议,可在GitHub仓库提交Issue,或通过NPM包主页留言,会及时响应并修复。
|
|
351
454
|
|
|
352
|
-
|
|
455
|
+
## ✨ 框架口号
|
|
353
456
|
|
|
354
|
-
|
|
355
|
-
|
|
457
|
+
**Write JSON, Get a Website.** | 只写 JSON,就能得到一个完整网站。
|
|
458
|
+
> (注:文档部分内容可能由 AI 生成)
|