粉丝8.3万获赞113.5万

各位学前端的同学,如果你想成为三十 k 以上的架构师,那你一定要理解依赖注入。为什么要理解依赖注入? 因为它能大幅提高附用性,降低业务开发难度。什么意思呢?就比如打印信息这个功能。实际工作中, note 中开发环境的信息一般是直接在控制台输出,而生产环境呢,一般是放在一个日制里, 使用的时候会根据环境来去判断我要用哪个方法。那如果我现在在另一个地方也需要打印,那我就得把这一坨再写一遍。 所以呢,一般来说,我们会把这个东西啊抽成一个公共的方法,这样我在别的地方如果需要打印,我只需要调用这个方法就可以了。好问题来了,如果我当前的项目不是一个工程项目,它没有 process 对 象,或者说我当前的环境是一个浏览器环境,它不支持文件模块, 那你这个方法还能用吗?如果不能用,那这个方法的使用场景就很受限,你必须是工程环境的 note 项目,那这肯定不行啊,作为一个合格的架构师,你肯定是希望我抽出来的这个方法能在任意环境都能正常使用,那这时候就需要依赖注入了。 那什么是依赖注入呢?想理解这个,你就得先理解什么是依赖。依赖就是一个代码单元想要完成其功能所需要的任何外部资源,就比如像这里的 process, write to blog, 还有 console, 这些对象和方法的定义都不在这个方法里,所以它们就是外部资源,也就是依赖。那依赖注入呢?依赖注入就是一种架构模式,对于函数来说,就是通过参数的形式将依赖传进来,从而实现控制反转。 就比如我们经常实现的最简单的求和,还有像组建里的父子传职,都是依赖注入,就是我只关心我要做的逻辑是什么,至于你这个职具体是什么,或者说这逻辑里需要的一些实现,我并不关心你给我什么,我用什么。 那这也太简单了,还用得着讲吗?那就要看你用的复杂程度。咱们再说回咱们的刚才这个系统,假如说我想让公司里的所有前端项目在打印的时候啊,都只用一种写法,就是不管你环境如何,是 node 也好还是 web 也好,我都可以使用。 那这个时候就需要设计一下,像现在的这个方法,它只能在 node 环境里用,外部环境用不了怎么办呢?我们呢可以抽出一个公共的方法,这个方法接收两个参数,然后返回一个对象,而这个对象呢,也对应着两个方法。然后我们不同项目一般都会有一个公共的 utos 文件,对吧? 我在这里比如说 web 的 utools, 我 导入这个公共方法,并且给这个方法注入 console log 和 console arrow。 因为你是 web 环境嘛,所以基本上你的打印只能用 console, 那 在 node 环境中呢,我就对你的这个 create log 注入 write to log 和 write to arrow 的 方法, 这样我在 no 的 环境中同样是调用 log info 这个方法,这样就实现了不同环境下我的写法完全相同,但是呢,它实际执行的逻辑是完全不同的,所以说依赖注入实际上就是将逻辑 与实现完全的分离,这样就可以让我们同样的写法,但是可以适配多种环境。

![(关注+V私信,领取源码+部署教程) NodeJS小说网站[67309]-项目功能界面讲解(毕设定制,开题报告+任务书+程序源码+LW+ppt,项目远程部署+代码讲解)
小说网站包括作者用户、普通用户和管理员三大用户,各用户功能内容如下:
1. 作者用户功能:
(1) 首页:用户可以查看首页展示的轮播图、通知公告、小说资讯等相关内容。
(2) 注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
(3) 通知公告:用户可以查看网站发布的通知公告信息。
(4) 小说资讯:用户可以查看小说资讯列表中的某一资讯详情并可以进行点赞、收藏和发表评论操作。
(5) 小说信息:户可以查看小说信息列表中某一小说信息详情并可以进行点赞、收藏和发表评论操作。
(6) 我的:用户可以修改个人资料,可以查看和管理个人中心中的个人首页、发布小说和收藏信息。
2. 普通用户功能:
(1) 首页:用户可以查看首页展示的轮播图、通知公告、小说资讯等相关内容。
(2) 注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
(3) 通知公告:用户可以查看网站发布的通知公告信息。
(4) 小说资讯:用户可以查看小说资讯列表中的某一资讯详情并可以进行点赞、收藏和发表评论操作。
(5) 小说信息:户可以查看小说信息列表中某一小说信息详情并可以进行点赞、收藏和发表评论操作。
(6) 我的:用户可以修改个人资料,可以查看和管理个人中心中的个人首页和收藏信息。
3. 管理员功能:
(1) 后台首页:管理员可以查看后台首页展示的相关信息。
(2) 系统用户:管理员可以对系统用户信息进行进行查询、添加、重置和删除操作。
(3) 小说分类管理:管理员可以对小说分类信息进行查询、添加、重置和删除操作。
(4) 小说类型管理:管理员可以对小说类型信息进行查询、添加、重置和删除操作。
(5) 小说信息管理:管理员可以对小说信息进行查询、重置和删除操作。
(6) 发布小说管理:管理员可以对发布小说信息进行查询、添加、重置和删除操作。
(7) 系统管理:管理员可以对友情链接、轮播图管理、敏感词管理信息进行查询、添加、重置和删除操作。
(8) 通知公告管理:管理员可以对通知公告信息进行查询、添加、重置和删除操作。
(9) 资源管理:管理员可以对小说资讯、资讯分类信息进行查](https://p3-pc-sign.douyinpic.com/tos-cn-p-0015/o4DAUGfhIE8AoFZAs4pBAbDyElQACQNg9GehLj~tplv-dy-resize-origshort-autoq-75:330.jpeg?lk3s=138a59ce&x-expires=2081361600&x-signature=MW76pjtB9g8bHGb8AJ2eXVpKVQ8%3D&from=327834062&s=PackSourceEnum_AWEME_DETAIL&se=false&sc=cover&biz_tag=pcweb_cover&l=20251218045254FD3D964A297BF6DCEF43)