按照SOLID编写JavaScript

2024-01-21

有人在开发 JavaScript 时使用过 SOLID 编程原则(或其任何部分)吗?

我刚刚开始阅读它,但似乎找不到任何人将它用于 JS。我发现唯一易于实施/使用的部分是“单一责任原则”。

我正在寻找的是使用这些原则的文章或示例。是否有任何争论为什么人们不应该使用某些部件?

例如,“接口隔离原则”指出“许多客户端特定接口比一个通用接口更好的概念”。

但据我所知,JS 中不存在接口之类的东西(如果有的话就好了)。


看起来 Derek Greer 正试图通过他在 Fresh Brewed Code 上的 SOLID JavaScript 系列文章来尝试解决这个问题:

  1. 单一责任原则 http://aspiringcraftsman.com/2011/12/08/solid-javascript-single-responsibility-principle/
  2. 开闭原则 http://aspiringcraftsman.com/2011/12/19/solid-javascript-the-openclosed-principle/
  3. 里氏替换原则 http://aspiringcraftsman.com/2011/12/31/solid-javascript-the-liskov-substitution-principle/
  4. 接口隔离原则 http://aspiringcraftsman.com/2012/01/08/solid-javascript-the-interface-segregation-principle/
  5. 依赖倒置原则 http://aspiringcraftsman.com/2012/01/22/solid-javascript-the-dependency-inversion-principle/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按照SOLID编写JavaScript 的相关文章

  • 应用程序关闭时监听 firebase 数据库更改

    我正在使用 firebase 创建一个 Ionic 2 应用程序 当应用程序关闭时 即在前台 后台和终止 我需要一种方法来侦听数据库更改 特别是在 child added 上 基本上 我想使用 WebRTC 在应用程序内拨打电话 例如 Wh
  • 使用按钮在 aspx.cs 上调用 JavaScript 函数(以 aspx 形式)

    我有这个aspx div div
  • React 和 Leaflet 结合的好方法

    我正在开发一个将 React 和 Leaflet 结合起来的项目 但我必须说我在语义方面遇到了一些困难 由于大部分内容都是由 Leaflet 直接管理的 我不知道将 Leaflet 映射实例添加为 React 组件中的状态是否有意义 当涉及
  • 使用 Jasmine 监视 Backbone.js 路由调用

    在主干路由器上监视方法调用时遇到问题 以确保它在给定路由上调用正确的方法 测试摘录 describe Router gt beforeEach gt router new App Router Backbone history start
  • Mocha / Chai Expect.to.throw 未捕获抛出的错误

    我在获取 Chai 时遇到问题expect to throw测试我的 node js 应用程序 测试在抛出的错误上不断失败 但是如果我将测试用例包装在 try 和 catch 中 并对捕获的错误进行断言 它就会起作用 Does expect
  • navigator.platform 在 ARM Mac 上的价值是什么?

    苹果有released https www apple com apple events november 2020 几款基于采用 ARM 架构的 M1 芯片的新计算机 与之前基于 x86 架构的计算机相比 的价值是多少navigator
  • 如何防止缓慢脚本警告并强制浏览器继续运行脚本直到完成?

    更新 2013 年 7 月 5 日 自从我最初问这个问题以来 我学到了很多东西 在下面的一条评论中 有人建议我重新处理该任务 并找到一种方法来解决它 而不会有阻塞 UI 的风险 我说不可能 函数必须按原样运行 我实际上不记得我试图用这个函数
  • 不明白为什么 Chrome/Safari 无法在此处获取 ScrollHeight

    我只是问了一个问题 为什么某些 js 代码不能 100 在 Chrome 和 Safari 中工作 但经过更多故障排除后 我想我发现这是我应该发布的问题 我有一个页面 其中有一个表单 该表单的目标是同一页面上的 iframe iframe
  • 更改导航栏悬停时 div 的背景图像

    我正在开发一个项目 我对 Javascript 很陌生 所以我想知道是否有 Jquery 代码或只是一个关于如何使背景图像在导航菜单悬停时更改的过程 例如将鼠标悬停在链接一上会将 div 的背景图像更改为图像 1 将鼠标悬停在链接二上会将
  • JavaScript 将 NULL 转换为 0

    我正在使用 jQuery 来获取元素的高度 但如果该元素不存在 以下代码将返回 NULL height menu li active ul height returns integer or null 这是一种跨浏览器安全的方法 可以使用以
  • 不用AJAX,前台同步拖放文件上传?

    我有一个定期的网站
  • 为什么 `BehaviorSubject` 不发出最后一个值

    The 关于BehaviorSubject的文档 http reactivex io documentation subject html声明它应该返回最后发出的值 无论我何时订阅 但它不会为我返回它 const ofObservable
  • 动态多个延迟 jQuery Ajax 调用

    使用 jQuery 的延迟模式http api jquery com jQuery when http api jquery com jQuery when 我正在尝试进行多个 jsonp ajax 调用并等待结果 然后再进行下一步 我可以
  • Ruby 数组到 Javascript 数组

    我有一个带有帐户 ID 的 Ruby 数组 我想将帐户 ID 的 Ruby 数组存储在 Javascript 数组中 我想知道最好的方法是什么 另外 当我尝试执行此操作时 Javascript 似乎认为如果只输入一个帐户 ID 则该 ID
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • CasperJS:如何单击所有选定的按钮?

    我正在尝试使用 CasperJS 作为网络抓取工具 并且有一个带有按钮的页面 单击该按钮将加载数据 因此 我想先单击所有这些按钮 然后等待 然后再实际进行查询以获取所有必要的数据 问题是对于 Casper casper thenClick
  • 错误:Javascript 上的 [object Object]

    当我在 Firebug 中运行下面的 javascript 时 我不断收到错误 我已经尝试更改多项内容 但它仍然输出错误 我正在使用 api 从 XML 检索信息 然后将其输出到屏幕上 但我不断收到对象错误 有人能看出为什么吗 任何帮助表示
  • 如何在 Mongo 聚合管道的 $unwind 阶段保留零长度值?

    我正在使用聚合管道编写 Mongo 查询 在聚合过程中 我需要 unwind领域之一 但是 我不想要 unwind排除该字段具有零长度数组的条目 因为我仍然需要它们进一步深入管道 我的领域叫做items它是一个对象数组 每个对象包含两个值
  • jQuery 存储类型未定义

    我用了一个jQuery 存储 https ui5 sap com api jQuery sap storage存储数据 oStore jQuery sap storage jQuery sap storage Type local oSto
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr

随机推荐

  • Windows Phone 8 - 中心全景 Item.Header

    我正在开发适用于 Windows Phone 8 的全景应用程序 但遇到了一个小问题 我在其中一个 Panorama Item 的标题中添加了一张图像 它显示得很好 但我希望它居中而不是左对齐 我什至不知道这是否可能 或者您是否根本无法更改
  • 测试 Android 片段

    我有一个无 UI 片段的业务逻辑 我必须对其进行测试 我尝试了两种选择 但都失败了 1 使用AndroidTestCase并创建模拟活动 以下代码 Override protected void setUp Intent i new Int
  • 我可以在 Xcode 4 中禁用调试器吗?

    我不想使用调试器 gdb 尽管我想从我的应用程序获取输出 来自 stdout 和 stderr 我发现我从来不用它 我总是用NSLog 或者 对于 Cprintf对于 C std cout 如何禁用调试器 即使在调试配置中 接下来运行和停止
  • SQL Server - EBS存储设计

    我们正在亚马逊上规划新的 EBS 结构 以获得 SQL Server 的最佳性能 过程中也出现了一些疑惑 1 使用亚马逊计算器 http calculator s3 amazonaws com index html http calcula
  • 如何使用 Express .listen()(在 Typescript 中)处理错误?

    目前正在将我的项目转换为使用 Typescript 我之前在 Node 中启动 Express 的工作代码如下所示 server listen port error gt if error throw error console info
  • C++ 中的多个整数类型类

    我经常发现自己使用整数来表示不同 空间 中的值 例如 int arrayIndex int usersAge int daysToChristmas 理想情况下 我希望为 索引 年 和 天 这些类型中的每一个都有单独的类 这应该可以防止我意
  • 使用假域名在本地计算机上托管网站

    我正在尝试托管一个带有域名的网站 但仅在我的计算机上 或可访问同一网络上的其他计算机 可选 我不希望其他人在我的家庭网络之外访问该网站 我想使用假域名 例如 www SampleWebsite com 现在 当我在计算机上键入此网站地址时
  • 如何实现滚动固定效果?

    如果你看一下网站 http eyeheartworld org pages the cause http eyeheartworld org pages the cause 向下滚动 有一个我在 codepen 上找到的概念的实现 当你向下
  • locale.setlocale(LC_NUMERIC):如何使其在 Windows 上工作

    我的是Win10下 这是我的小脚本 import locale locale setlocale locale LC NUMERIC rus print locale localeconv fv 2 5 print str fv 这打印出
  • 应用程序图标未更改为使用 cordova 的自定义图标[重复]

    这个问题在这里已经有答案了 我正在尝试使用phonegap启动cordova应用程序 但无法更改iOS的默认应用程序图标 实际图标不是启动屏幕 默认图标始终被复制到资源 gt 图标文件夹中 而不是我的自定义图标 我已经使用了phonegap
  • 如何使用mpirun为不同的程序使用不同的CPU核心?

    我有一个 32 核的虚拟机 我正在运行一些模拟 需要同时使用 16 个内核 我使用以下命令在 16 个核心上运行作业 mpirun n 16程序名 args gt 注销2 gt 1 该程序在 16 个内核上运行 现在 如果我想在其余核心上使
  • 屏幕旋转时小部件上的按钮单击丢失

    我有一个非常简单的小部件应用程序 其中包含LinearLayout有背景和ImageButton In the AppWidgetProvider onUpdate 方法中 我注册了单击按钮来广播意图 当小部件首次加载时 一切运行正常并且点
  • 在 Perl 中,如何在命令行上发送 CGI 参数?

    通常我从网页获取数据 但我想从命令行发送它以方便调试 为了获取数据我做了类似的事情 my query new CGI my username query gt param the username 这似乎不起作用 script pl the
  • 如何获取 Flask-SQLAlchemy 对象来加载 Jinja 模板的关系子项?

    我有用户和帖子的基本模型 在我的用户模型中 我有 posts db relationship Post backref user lazy dynamic 但是 当我做类似的事情时 return render template user h
  • Django Rest 序列化程序在数据存在时中断

    我有这个模型 class MyModel User others fields 和这个序列化器 class MySerializer serializers ModelSerializer class Meta model MyModel
  • 在先前的 Beta 审核获得批准后,如何在 iTunes Connect 中激活新版本的外部 Beta 测试?

    我从 Xcode 提交了一个新版本 我在 Itunes Connect 上有一个预发布版本 我填写了所有信息 通过单击构建 版本 有关此之前版本的信息 我添加了外部用户 他们有 已添加 状态 但是当我打开 Beta 测试航班时 外部用户仍处
  • sql join - 仅选择第二个表中的顶行

    一个sql菜鸟 在表a中有一个客户代码 电话号码的列表 表b中有所有通话记录 我想从表 b 中为表 a 中的每个客户代码 电话号码选择最近的呼叫 到目前为止我有 SELECT A CustomerCode A PhoneNumber B S
  • 无法在 Windows 10 上使用 Vagrant 安装 Laravel homestead

    我刚刚下载了最新版本的 Vagrant 2 2 15 和 VMware 我试着跑 vagrant box add laravel homestead 但我得到 The box laravel homestead could not be f
  • iOS7 Safari 和 Chrome 中奇怪的 CSS 拉伸问题

    自从在多部 iPhone 和 iPad 上升级到 iOS 7 以来 我们发现我们网站上的部分 UI 发生了非常奇怪的情况 所附图像中的粉色框位于绝对定位的父级内 并且它有两个绝对定位在其中的白色 div 每个都有不同的不透明度 粉色圆圈只是
  • 按照SOLID编写JavaScript

    有人在开发 JavaScript 时使用过 SOLID 编程原则 或其任何部分 吗 我刚刚开始阅读它 但似乎找不到任何人将它用于 JS 我发现唯一易于实施 使用的部分是 单一责任原则 我正在寻找的是使用这些原则的文章或示例 是否有任何争论为