diff --git a/cpl/Java.md b/cpl/Java.md
index 23562e8..29a2f58 100644
--- a/cpl/Java.md
+++ b/cpl/Java.md
@@ -253,3 +253,10 @@ spring.data.neo4j.uri=http://localhost:7474
+
+## 库
+
+### [itext](https://api.itextpdf.com/iText/java/)
+> v7.1.8
+
+- A4 width:595.0, height:842.0
\ No newline at end of file
diff --git a/web/typescript.md b/cpl/typescript.md
similarity index 100%
rename from web/typescript.md
rename to cpl/typescript.md
diff --git a/index/article.md b/index/article.md
index 2bab875..f081d8d 100644
--- a/index/article.md
+++ b/index/article.md
@@ -40,6 +40,19 @@
- [diff算法原理](../web/diff.md)
- [使用过的库](../web/library.md)
- [FRP-Functional Reactive Programming](../cpl/frp.md)
+- [web](./web.md)
+- [浏览器](./browser.md)
+- [html](./html.md)
+- [CSS](./css.md)
+- [适配屏幕](./adapt.screen.md)
+- [font](./font.md)
+- [http](./http.md)
+- [nginx](./nginx.md)
+- [javascript](./JavaScript.md)
+ - [typescript](./typescript.md)
+ - [bable](./babel.md)
+ - [vue](./vue.md)
+
### 图形学
- [裁剪](../cg/tools/culling.md)
diff --git a/web/hover.md b/web/hover.md
deleted file mode 100644
index 239f0b0..0000000
--- a/web/hover.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# hover
-
-```html
-
-
-
hover on element
-
-
other information
-
-
-```
-悬浮打开与关闭某些元素,按照上面的样式就可以
-
-```html
-
-
-```
-注意,one的hover之间是否有空格,
-有空格hover的范围是子元素
-无空格hover的范围是父元素
-
-:hover必须置于:link和:visited之后
-
-一定不要混乱元素的层级,比如在child中的有比它高的样式,就会出现各种问题
-如果测试一个简单的样式,很容易确认,可是一旦牵扯到多个样式,且多个样式挨着时,
-问题就会出现各种问题!
diff --git a/web/html.md b/web/html.md
index ba8840b..74a99ee 100644
--- a/web/html.md
+++ b/web/html.md
@@ -69,6 +69,79 @@ onselectstart="return false;" // 文字禁止鼠标选中
onselect="documnet.selection.empty();" // 禁止复制
```
+## 其他
+
+### hover
+```html
+
+
+
hover on element
+
+
other information
+
+
+```
+悬浮打开与关闭某些元素,按照上面的样式就可以
+
+```html
+
+
+```
+注意,one的hover之间是否有空格,
+有空格hover的范围是子元素
+无空格hover的范围是父元素
+
+:hover必须置于:link和:visited之后
+
+一定不要混乱元素的层级,比如在child中的有比它高的样式,就会出现各种问题
+如果测试一个简单的样式,很容易确认,可是一旦牵扯到多个样式,且多个样式挨着时,
+问题就会出现各种问题!
+
+
## TemplateEngine
模板的诞生就是为了将显示与数据分离,把数据替换为模板中的一些项,最终得到html文件就是模板引擎的工作。
diff --git a/web/i18n.md b/web/i18n.md
deleted file mode 100644
index 961f292..0000000
--- a/web/i18n.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# 多语言
-> i18n是国际化的英文为 internationalization,为了方便,通常会简写为 i18n(开头的 i、中间的 18 个字符、末尾的 n)
-
-分三类信息,
-- message,文本的替换
-- date time format,时间日期的格式
-- number,数字格式,货币形式等
-
-但难点还是很多的:
-- 多语言的没有标准,使用起来就存在各种兼容的问题,如中文有zh,zh_CN等来区分中文, 可参考BCP 47,全称为Best Current Practice for Tags for the Identification of Languages,是一个基于RFC 5646标准的语言标签格式的建议标准。
-- 多语言还是影响视觉设计,开发时就需要考虑这些问题,不同语言的表述会导致字符的长度差异较大
-- 语言的字段是复用还是语义化,都是一个难点,随着需求的变化可能会有很大的影响
-- 符合用户习惯与不同文化的需求
-
-
-## web
-
-**vue**
-
-把i18n实列对象放入Vue的实例中,通过this.$i18n.locale='zh'来设置对应的语言
-
-也可以存储在store或cookie中,
-
-但对惰性组件,如echarts这类需要重新渲染的,就需要手动处理了,方法有:
-- 利用watch监听locale字段是否发现变化,主动调用重新渲染
-- locale变化时直接this.reload强制刷新页面
-
-```js
-new Vuei81n({
- locale:'',
- messages: {}, // $t(path)
- numberFormats: {}, // $n()
- dateTimeFormats: {}, // $d()
-})
-```
\ No newline at end of file
diff --git a/web/index.md b/web/index.md
index 9d06295..51661f1 100644
--- a/web/index.md
+++ b/web/index.md
@@ -1,22 +1,41 @@
# Web
-- [web](./web.md)
- - [浏览器](./browser.md)
-- [html](./html.md)
- - [hover](./hover.md)
-- [CSS](./css.md)
- - [适配屏幕](./adapt.screen.md)
- - [font](./font.md)
-
-- [http](./http.md)
- - [nginx](./nginx.md)
-
-- [javascript](./JavaScript.md)
- - [typescript](./typescript.md)
- - [bable](./babel.md)
- - [vue](./vue.md)
-- [多语言i18n](./i18n.md)
- [Web Check网站分析,分析各种配置,可参考网站的配置](https://web-check.as93.net/)
+- [Draggable objects可拖动的对象网页实现](https://www.redblobgames.com/making-of/draggable/)
+
+## 多语言
+> i18n是国际化的英文为 internationalization,为了方便,通常会简写为 i18n(开头的 i、中间的 18 个字符、末尾的 n)
+
+分三类信息,
+- message,文本的替换
+- date time format,时间日期的格式
+- number,数字格式,货币形式等
+
+但难点还是很多的:
+- 多语言的没有标准,使用起来就存在各种兼容的问题,如中文有zh,zh_CN等来区分中文, 可参考BCP 47,全称为Best Current Practice for Tags for the Identification of Languages,是一个基于RFC 5646标准的语言标签格式的建议标准。
+- 多语言还是影响视觉设计,开发时就需要考虑这些问题,不同语言的表述会导致字符的长度差异较大
+- 语言的字段是复用还是语义化,都是一个难点,随着需求的变化可能会有很大的影响
+- 符合用户习惯与不同文化的需求
+
+
+### **vue**
+
+把i18n实列对象放入Vue的实例中,通过this.$i18n.locale='zh'来设置对应的语言
+
+也可以存储在store或cookie中,
+
+但对惰性组件,如echarts这类需要重新渲染的,就需要手动处理了,方法有:
+- 利用watch监听locale字段是否发现变化,主动调用重新渲染
+- locale变化时直接this.reload强制刷新页面
+
+```js
+new Vuei81n({
+ locale:'',
+ messages: {}, // $t(path)
+ numberFormats: {}, // $n()
+ dateTimeFormats: {}, // $d()
+})
+```
## library
@@ -41,7 +60,7 @@
- [The WYSIWYG Editor of tomorrow available today](https://ckeditor.com/)
- [CKEditor 5 is an ultra-modern JavaScript rich-text editor with MVC architecture, a custom data model, and virtual DOM](https://github.com/ckeditor/ckeditor5)
-- [Your powerful rich text editor.](https://quilljs.com/)
+- [Quill -- Your powerful rich text editor.](https://quilljs.com/)
- [github](https://github.com/quilljs/quill)
### PDF
@@ -49,7 +68,7 @@
- [PDF-LIB可写可修改](https://pdf-lib.js.org/) 字体必须内嵌,这样文件非常大,拷贝合并pdf时,内嵌字体还没法删除
- [github](https://github.com/Hopding/pdf-lib)
-- [jspdf只能写](https://github.com/parallax/jsPDF)
+- [jspdf只能写 github](https://github.com/parallax/jsPDF)
### 数学
- [regression-js是JS库,包含了linear least-squares filting methods对的数据分析方法,支持linear、exponential、logarithmic、power、polynomial几种常见的](https://github.com/Tom-Alexander/regression-js)
@@ -83,24 +102,6 @@ jszip.loadAsync(new Blob([buffer])).then(zip=>{
- [An image magnifier for JavaScript](https://github.com/nishanths/loupe-js)
- [demo](https://nishanths.github.io/loupe-js/?shape=rectangle)
-## 参考
-
-- [Draggable objects可拖动的对象网页实现](https://www.redblobgames.com/making-of/draggable/)
-
-# Node
-
-## 构建工具
-
-### [Parcel](https://parceljs.org/docs/)
-
-Parcel is a zero configuration build tool for the web
-
-### [rollup](https://rollupjs.org/introduction/)
-
-Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application. I
-
-
-## 相关库
### UI
- [bootstrap](https://getbootstrap.com/)
@@ -108,11 +109,6 @@ Rollup is a module bundler for JavaScript which compiles small pieces of code in
- [naive ui](https://www.naiveui.com/en-US/os-theme)
-
-### 其他
-
-- [jspdf](https://github.com/parallax/jsPDF)
- - [npmjs](https://www.npmjs.com/package/jspdf)
- [Element Plus](https://element-plus.org/en-US/component/button.html)
- [ Fabric.js is a powerful and simple Javascript HTML5 canvas library ](http://fabricjs.com/)
@@ -126,4 +122,76 @@ Rollup is a module bundler for JavaScript which compiles small pieces of code in
- [github](https://github.com/jscad)
- [open jscad](https://openjscad.xyz/)
- [CADit.app](https://cadit.app/)
- - [A jscad UI playground developed here and meant to be later contributed into jscad](https://github.com/hrgdavor/jscadui)
\ No newline at end of file
+ - [A jscad UI playground developed here and meant to be later contributed into jscad](https://github.com/hrgdavor/jscadui)
+
+## 参考
+
+# Test
+
+# Test
+
+测试
+
+## TDD
+
+测试驱动开发, 在开发功能代码之前,先编写单元测试用例代码,确定需要编写的代码逻辑。TDD是XP(Extreme Programming)的核心实践
+
+## BDD
+
+行为驱动开发,
+
+“开发软件系统最困难的部分就是准确说明开发什么” (“The hardest single part of building a software system is deciding precisely what to build” — No Silver Bullet, Fred Brooks)
+
+BDD(Behavior Driven Development), 提出者 Dan North 强调 BDD 不是关于测试的,它是在应用程序存在之前,写出用例与期望,从而描述应用程序的行为,并且促使在项目中的人们彼此互相沟通
+
+测试相关的配置
+
+vue创建工程时,有一个[Manually select features](https://lmiller1990.github.io/vue-testing-handbook/zh-CN/setting-up-for-tdd.html#%E5%AE%89%E8%A3%85-vue-cli)中可配置
+
+## Vue Test Utils
+
+the official unit testing utility library for Vue
+
+组件对应的测试文件.spec.js
+
+
+## Jest
+
+
+## Karma
+
+npm install --save-dev karma karma-mocha karma-chrome-launcher karma-mocha-reporter karma-webpack mocha mocha-sinon sinon sinon-chai webpack karma-chai chai
+
+运行
+node .\node_modules\karma\bin\karma start
+node .\node_modules\karma\bin\karma init
+
+- [karma.conf.js配置](https://karma-runner.github.io/5.2/config/configuration-file.html)
+- [karma-coverage](https://github.com/karma-runner/karma-coverage)测试覆盖率
+
+## webpack
+
+需要打包vue组件
+webpack karma-webpack
+
+使用bable处理ES6语法
+babel-core babel-loader babel-preset-es2015
+
+Vue-cli3开始把webpack.config.js隐藏在node_modules/@vue/cli-service/webpack.config.js 直接引用这个就可以了, **这一步很重要,否则webpack的配置很难处理**
+
+## [Jasmine](https://github.com/jasmine/jasmine)
+
+TDD(Test Driven Development)测试驱动开发的框架,
+
+[Behavior-Driven JavaScript docs](https://jasmine.github.io/pages/docs_home.html)
+
+[2.9](https://jasmine.github.io/2.9/introduction)
+
+## [chai](https://github.com/chaijs/chai)
+
+[document](https://www.chaijs.com/)
+
+## 参考
+
+- [BDD](https://insights.thoughtworks.cn/when-we-talk-about-bdd/)
+- [vue unit test](https://vuejs.org/v2/cookbook/unit-testing-vue-components.html)
\ No newline at end of file
diff --git a/web/pkg.md b/web/pkg.md
index a238744..1c3666c 100644
--- a/web/pkg.md
+++ b/web/pkg.md
@@ -56,6 +56,9 @@ pnpm add libName --save // 按照库
pnpm store status // 会出现问题,
pnpm store path // 缓存路径
pnpm store prune // 删除缓存
+// 工作区
+pnpm add react -w // 全局公共依赖
+pnpm add react --filter pkg1 // 指定项目按照
```
## [Yarn is a package manager](https://yarnpkg.com/)
@@ -77,9 +80,16 @@ yarn config delete registry
yarn add libraryName -W --registry https://registry.npm.taobao.org
```
-## [Rollup](https://rollupjs.org/introduction/)
+## 打包工具
-## [webpack](https://www.webpackjs.com/)
+### [Rollup](https://rollupjs.org/introduction/)
+Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application.
+
+### [webpack](https://www.webpackjs.com/)
+
+### [Parcel](https://parceljs.org/docs/)
+
+Parcel is a zero configuration build tool for the web
## 相关库
diff --git a/web/test.md b/web/test.md
deleted file mode 100644
index 54cbcf2..0000000
--- a/web/test.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Test
-
-# Test
-
-测试
-
-## TDD
-
-测试驱动开发, 在开发功能代码之前,先编写单元测试用例代码,确定需要编写的代码逻辑。TDD是XP(Extreme Programming)的核心实践
-
-## BDD
-
-行为驱动开发,
-
-“开发软件系统最困难的部分就是准确说明开发什么” (“The hardest single part of building a software system is deciding precisely what to build” — No Silver Bullet, Fred Brooks)
-
-BDD(Behavior Driven Development), 提出者 Dan North 强调 BDD 不是关于测试的,它是在应用程序存在之前,写出用例与期望,从而描述应用程序的行为,并且促使在项目中的人们彼此互相沟通
-
-测试相关的配置
-
-vue创建工程时,有一个[Manually select features](https://lmiller1990.github.io/vue-testing-handbook/zh-CN/setting-up-for-tdd.html#%E5%AE%89%E8%A3%85-vue-cli)中可配置
-
-## Vue Test Utils
-
-the official unit testing utility library for Vue
-
-组件对应的测试文件.spec.js
-
-
-## Jest
-
-
-## Karma
-
-npm install --save-dev karma karma-mocha karma-chrome-launcher karma-mocha-reporter karma-webpack mocha mocha-sinon sinon sinon-chai webpack karma-chai chai
-
-运行
-node .\node_modules\karma\bin\karma start
-node .\node_modules\karma\bin\karma init
-
-- [karma.conf.js配置](https://karma-runner.github.io/5.2/config/configuration-file.html)
-- [karma-coverage](https://github.com/karma-runner/karma-coverage)测试覆盖率
-
-## webpack
-
-需要打包vue组件
-webpack karma-webpack
-
-使用bable处理ES6语法
-babel-core babel-loader babel-preset-es2015
-
-Vue-cli3开始把webpack.config.js隐藏在node_modules/@vue/cli-service/webpack.config.js 直接引用这个就可以了, **这一步很重要,否则webpack的配置很难处理**
-
-## [Jasmine](https://github.com/jasmine/jasmine)
-
-TDD(Test Driven Development)测试驱动开发的框架,
-
-[Behavior-Driven JavaScript docs](https://jasmine.github.io/pages/docs_home.html)
-
-[2.9](https://jasmine.github.io/2.9/introduction)
-
-## [chai](https://github.com/chaijs/chai)
-
-[document](https://www.chaijs.com/)
-
-## 参考
-
-- [BDD](https://insights.thoughtworks.cn/when-we-talk-about-bdd/)
-- [vue unit test](https://vuejs.org/v2/cookbook/unit-testing-vue-components.html)
\ No newline at end of file