Skip to content

Commit 90c5329

Browse files
authored
Merge pull request deepraining#53 from senntyou/dev
extend/19
2 parents 7ced592 + 643c2e2 commit 90c5329

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
16. [\[2019-02-19\] 前端项目如何管理](./extend/16.md)
5353
17. [\[2019-03-12\] 自己常用的前端项目脚手架模板](./extend/17.md)
5454
18. [\[2019-05-29\] 细说 Vue 组件的服务器端渲染](./extend/18.md)
55+
19. [\[2019-05-29\] 再谈前端项目的组件化](./extend/19.md)
5556

5657
## javascript
5758

extend/19.md

+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# 再谈前端项目的组件化
2+
3+
之前详细聊过的前端项目的组件化,可以参考 [组件化](../architecture/6.md)[私有 npm 仓库](../architecture/7.md),今天来更进一步的说说前端项目的组件化。
4+
5+
## 1. 之前的组件化
6+
7+
目录结构:
8+
9+
```
10+
-project1 # 项目1
11+
-project2 # 项目2
12+
-component1 # 组件1
13+
-component2 # 组件2
14+
```
15+
16+
`project1``package.json`
17+
18+
```
19+
{
20+
"dependencies": {
21+
"@yourCompany/component1": "^0.0.1",
22+
"@yourCompany/component2": "^0.0.1"
23+
}
24+
}
25+
```
26+
27+
在代码中使用:
28+
29+
```
30+
import component1 from '@yourCompany/component1';
31+
```
32+
33+
## 2. 之前的组件化方式存在的问题
34+
35+
1. 更新组件比较麻烦,特别是对于一些与业务耦合比较深的组件,频繁更新会比较头疼
36+
2. 组件太多的时候,管理起来就感觉比较累,因为每个组件都是一个单独的项目,都有一套独立的构建环境
37+
3. 对于有些代码量小的组件,做一个单独的项目,实在有点大才小用
38+
39+
## 3. 另外的项目组件化方式
40+
41+
针对上面讲到的问题,另一种方式可以很好的解决:
42+
43+
目录结构:
44+
45+
```
46+
-project1 # 项目1
47+
-project2 # 项目2
48+
-components # 组件集合项目
49+
```
50+
51+
`components` 组件集合项目的目录结构:
52+
53+
```
54+
- src/ # 源代码目录
55+
- component1 # 组件1
56+
- component2 # 组件2
57+
- component3 # 组件3
58+
- ...
59+
60+
- package.json
61+
- README.md
62+
- CHANGELOG.md
63+
- .eslintrc.js
64+
- .stylelintrc.js
65+
- .prettierrc.js
66+
- ...
67+
```
68+
69+
`components` 目录软链接 `project1` 目录下:
70+
71+
(注意: `project1``.gitignore` 需加上 `/components`
72+
73+
```
74+
# 以下是 linux 命令,windows 类似
75+
cd project1
76+
ln -s ../components ./
77+
```
78+
79+
`project1` 项目的目录结构:
80+
81+
```
82+
- src/ # 源代码目录
83+
- components/ # 组件项目目录(软链接)
84+
85+
- package.json
86+
- README.md
87+
- CHANGELOG.md
88+
- .eslintrc.js
89+
- .stylelintrc.js
90+
- .prettierrc.js
91+
- ...
92+
```
93+
94+
在代码中使用:
95+
96+
```
97+
import component1 from 'relative/path/to/components/src/component1';
98+
```
99+
100+
## 4. 两种方式的选择
101+
102+
上面的两种方式各有各的优势,可以配合一起使用。
103+
104+
大的、不常更新的组件可以使用 npm 包的方式,小的、常更新的可以使用软链接项目的方式。
105+
106+
## 后续
107+
108+
更多博客,查看 [https://github.com/senntyou/blogs](https://github.com/senntyou/blogs)
109+
110+
作者:[深予之 (@senntyou)](https://github.com/senntyou)
111+
112+
版权声明:自由转载-非商用-非衍生-保持署名([创意共享3.0许可证](https://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh)

0 commit comments

Comments
 (0)