File tree 2 files changed +113
-0
lines changed
2 files changed +113
-0
lines changed Original file line number Diff line number Diff line change 52
52
16 . [ \[ 2019-02-19\] 前端项目如何管理] ( ./extend/16.md )
53
53
17 . [ \[ 2019-03-12\] 自己常用的前端项目脚手架模板] ( ./extend/17.md )
54
54
18 . [ \[ 2019-05-29\] 细说 Vue 组件的服务器端渲染] ( ./extend/18.md )
55
+ 19 . [ \[ 2019-05-29\] 再谈前端项目的组件化] ( ./extend/19.md )
55
56
56
57
## javascript
57
58
Original file line number Diff line number Diff line change
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 ) )
You can’t perform that action at this time.
0 commit comments