摘要:再谈前端项目的组件化之前详细聊过的前端项目的组件化,可以参考组件化与私有仓库,今天来更进一步的说说前端项目的组件化。
再谈前端项目的组件化
之前详细聊过的前端项目的组件化,可以参考 组件化 与 私有 npm 仓库,今天来更进一步的说说前端项目的组件化。
1. 之前的组件化目录结构:
-project1 # 项目1 -project2 # 项目2 -component1 # 组件1 -component2 # 组件2
project1 的 package.json:
{ "dependencies": { "@yourCompany/component1": "^0.0.1", "@yourCompany/component2": "^0.0.1" } }
在代码中使用:
import component1 from "@yourCompany/component1";2. 之前的组件化方式存在的问题
更新组件比较麻烦,特别是对于一些与业务耦合比较深的组件,频繁更新会比较头疼
组件太多的时候,管理起来就感觉比较累,因为每个组件都是一个多带带的项目,都有一套独立的构建环境
对于有些代码量小的组件,做一个多带带的项目,实在有点大才小用
3. 另外的项目组件化方式针对上面讲到的问题,另一种方式可以很好的解决:
目录结构:
-project1 # 项目1 -project2 # 项目2 -components # 组件集合项目
components 组件集合项目的目录结构:
- src/ # 源代码目录 - component1 # 组件1 - component2 # 组件2 - component3 # 组件3 - ... - package.json - README.md - CHANGELOG.md - .eslintrc.js - .stylelintrc.js - .prettierrc.js - ...
把 components 目录软链接 project1 目录下:
(注意: project1 的 .gitignore 需加上 /components)
# 以下是 linux 命令,windows 类似 cd project1 ln -s ../components ./
project1 项目的目录结构:
- src/ # 源代码目录 - components/ # 组件项目目录(软链接) - package.json - README.md - CHANGELOG.md - .eslintrc.js - .stylelintrc.js - .prettierrc.js - ...
在代码中使用:
import component1 from "relative/path/to/components/src/component1";4. 两种方式的选择
上面的两种方式各有各的优势,可以配合一起使用。
大的、不常更新的组件可以使用 npm 包的方式,小的、常更新的可以使用软链接项目的方式。
后续更多博客,查看 https://github.com/senntyou/blogs
作者:深予之 (@senntyou)
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104877.html
摘要:中的生命周期函数也可以称之为生命周期钩子函数,在特定的时期,调用特定的函数。吊起钩子函数调起钩子函数问题为什么是一个数组卸载组件,会触发一个这行代码之后发生了什么背后实现原理。 简介 关于Vue的生命周期函数,目前网上有许多介绍文章,但也都只是分析了表象。这篇文档,将结合Vue源码分析,为什么会有这样的表象。 Vue中的生命周期函数也可以称之为生命周期钩子(hook)函数,在特定的时期...
摘要:阿里云效平台基于理念的私有平台实践本文将系统的从个方面,分享互娱运维团队对于运维平台实践经验及未来展望,希望对大家有一些参考意义。 CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog、微信公众号、官...
阅读 2077·2021-10-08 10:21
阅读 2470·2021-09-29 09:34
阅读 3493·2021-09-22 15:51
阅读 4925·2021-09-22 15:46
阅读 2313·2021-08-09 13:42
阅读 3433·2019-08-30 15:52
阅读 2722·2019-08-29 17:13
阅读 1554·2019-08-29 11:30