Questions tagged «javascript»

JavaScript(不要与Java混淆)是一种高级,动态,多范式,弱类型的语言,用于客户端脚本和服务器端脚本。使用此标记可解决有关ECMAScript,JavaScript,JScript等的常见实现的问题。JS通常不引用其ECMA-表兄弟ActionScript。

2
您如何对JavaScript进行单元测试
我花了很多时间来研究JavaScript。我还没有找到一种似乎可以很好地测试javascript的方法。过去,这对我来说不是问题,因为我工作的大多数网站都包含很少的JavaScript。我现在有一个新网站,该网站广泛使用jQuery,我想为大多数系统构建单元测试。 我的问题是这个。 大多数功能都会以某种方式更改DOM。 大多数功能也需要从Web服务器请求数据,并且需要在服务上进行会话以获取结果。 我想从命令行或测试运行工具而不是浏览器中运行测试。 我应该阅读的任何帮助或文章将对您有所帮助。

2
JavaScript中辅助函数的推荐方法是什么?
推荐的辅助功能方法是什么?我想选择一种技术,然后运行它来创建我的新“类”。 这是我所考虑的设计选项: 选项1:外部范围内的Helper函数,使用实例的上下文进行调用 function createPane (pane) { // logic to create pane var proto = Object.create(this.paneList); $.extend(paneProto, pane); return paneProto; } Panes.prototype.initialize = function (panes) { var _this = this; _.each(panes, function () { _this.panes.push(createPane.call(_this, this)); }); } 优点:简单的语法。createPane未在实例上发布。 缺点: createPane在其他范围内均可访问。 选项2:关闭时的Helper函数,使用实例的上下文进行调用 Panes.prototype.initialize = (function () { function createPane (pane) …

1
Node.js还是servlet?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我听到了很多,并阅读了有关Javascript服务器端语言(即Node.js)的信息,并看到了许多支持Node的比较。 我不了解是什么使它变得更好或更快速,或者它甚至与Java Servlet一样成熟。 但是,Servlet是基于多线程编程语言而不是Node.js构建的。那node.js怎么能更快呢? 如果假设有1000K用户查询数据库记录,那么Node.js不应比Servlet慢。 另外,与Node.js相比,servlet是否没有更好的安全性?

3
Java语言的开发是否超出了其最初的设计意图?
我一直在和一个朋友谈论Javascript的目的,何时以及如何使用Java等。他引用了以下内容: JavaScript旨在向HTML页面添加交互性 [...] JavaScript为HTML设计人员提供了一种编程工具 HTML作者通常不是程序员,但是JavaScript是一种脚本语言,语法非常简单!几乎任何人都可以在其HTML页面中放入小的“代码段”代码JavaScript可以对事件做出反应 可以将JavaScript设置为在发生某些情况时执行,例如页面加载完成或用户单击HTML元素时,JavaScript可以读写HTML元素 JavaScript可以读取和更改HTML元素的内容JavaScript可用于验证数据 在将表单数据提交到服务器之前,可以使用JavaScript对其进行验证。这样可以节省服务器的额外处理 JavaScript可用于检测访问者的浏览器-JavaScript可用于检测访问者的浏览器,并(取决于浏览器)加载专门为该浏览器设计的另一个页面。 JavaScript可用于创建cookie-JavaScript可用于在访问者的计算机上存储和检索信息。 但是,似乎Java的用途已经比这些天大得多。我的朋友还主张不要使用Javascript的OOP功能,并声称“您不应该处理数据,而只是进行验证”。JavaScript是否真的仅限于验证数据和在网页上制作精美的图形? 他继续声称“您不应该尝试通过javascript访问数据库”,并且还说:“通常,您不想使用JavaScript进行繁重的工作”。我不能说我同意他的观点,但我想对此提供更多意见。 所以,我的问题是:Javascript是否已从上面的定义演变为更强大的功能,我们的使用方式有所变化,还是我完全错误?尽管我意识到这是一个主观的问题,但我找不到关于它的更多信息,因此,如果没有其他任何联系,那么可以使用几个链接。我不是在寻找辩论,只是在寻找答案。
10 javascript 

5
PHP,HTML,Javascript和编写良好实践
我意识到我必须为我和我的团队写下有关HTML,JavaScript和PHP编码的约定规范。 在Web开发中,就像在C ++中一样,我绝对是缩进和注释的爱好者。 但是,在我的工作中,我经常会遇到HTML + JavaScript + PHP代码,这突然令人头疼。 我试图使我的代码可读,但是对我来说似乎更好的(缩进和注释)似乎并不使我的队友着迷,所以我想知道在编写“混合”时是否存在最佳或至少共享的良好实践就像今天的网页一样,文档变得越来越复杂。 我知道以下事实:今天的网页代码本质上可能有些复杂,但是我想知道是否存在关于这些方面的良好约定。

2
如何读取功能性JavaScript代码?
我相信我已经学到了JavaScript中的一些/许多/大多数基本的函数式编程基础。但是,我在阅读功能代码(甚至是我编写的代码)时遇到了麻烦,并且想知道是否有人可以给我提供任何可以提供帮助的指针,技巧,最佳实践,术语等。 使用下面的代码。我写了这段代码。它旨在在say {a:1, b:2, c:3, d:3}和之间分配两个对象之间的相似度百分比{a:1, b:1, e:2, f:2, g:3, h:5}。我针对Stack Overflow上的这个问题生成了代码。因为我不确定海报要问的相似度百分比,所以我提供了四种不同的相似度: 在第二个对象中可以找到的第一个对象中键的百分比, 在第二个对象中可以找到的第一个对象中值的百分比,包括重复项, 在第二个对象中可以找到的第一个对象中的值的百分比,不允许重复,并且 在第一个对象中可以找到的第一个对象中{key:value}对的百分比。 我以合理的命令性代码开始,但是很快意识到这是一个非常适合函数式编程的问题。尤其是,我意识到,如果我可以针对上述四种策略中的每一种提取出一个或三个函数,这些策略定义了我要比较的特征类型(例如键或值等),那么我可能会能够将其余的代码减少(请原谅文字的打法)为可重复的单元。要知道,保持干燥。所以我改用函数式编程。我为结果感到非常自豪,我认为它相当优雅,并且我认为自己做得很好。 但是,即使我自己编写了代码并在构造过程中理解了代码的每个部分,当我现在回头看时,我仍然对如何读取任何特定的半行以及如何读取都感到困惑。 “抱怨”任何特定的半行代码实际上在做什么。我发现自己制作了一些易用的箭头,将不同的部分连接起来,这些部分很快就会变成一团意大利面。 因此,谁能告诉我如何以简洁明了的方式“阅读”一些更复杂的代码,这有助于我对正在阅读的内容的理解?我猜最吸引我的部分是连续有几个粗箭头的部分和/或连续有多个括号的部分。同样,在它们的核心处,我最终可以弄清楚逻辑,但是(我希望)有一种更好的方法可以快速,清晰,直接地“接受”一系列功能性JavaScript编程。 随意使用下面的任何代码行,甚至其他示例。但是,如果您需要我的一些初步建议,以下是一些建议。从一个相当简单的开始。在代码的末尾,有一个作为参数传递给函数:obj => key => obj[key]。一个人如何阅读和理解呢?较长的示例是从一开始就提供的一项完整功能:const getXs = (obj, getX) => Object.keys(obj).map(key => getX(obj)(key));。最后map一部分让我特别感兴趣。 请注意,目前我不是在寻找Haskell或符号抽象符号或currying的基础知识等的参考。我要寻找的是英文句子,我可以在看着一行代码时默默地开口。如果您有专门解决此问题的参考书,那很好,但是我也没有在寻找答案,我应该去读一些基础教科书。我已经做到了,我得到了(至少是很大一部分)逻辑。还要注意,我不需要详尽的答案(尽管可以尝试这样的尝试):即使是简短的答案,也提供了一种优雅的方式来读取一行特定的否则麻烦的代码,将不胜感激。 我想这个问题的一部分:灿我甚至线性阅读的功能代码,你就知道,左到右,上到下的?还是被迫在绝对不是线性的代码页上创建意粉般布线的心理图景?而且,如果必须这样做,我们仍然必须阅读代码,那么如何获取线性文本并连接意大利面呢? 任何提示将不胜感激。 const obj1 = { a:1, b:2, c:3, d:3 }; const obj2 = { a:1, …

3
从另一个函数获取值的函数是否被视为纯函数?
我试图找出一种在没有副作用的情况下处理默认变量值的方法,并且最终得到以下结果: function getDefaultSeparator() { return ':'; } function process(input, separator) { var separator = separator || getDefaultSeparator(); // Use separator in some logic return output; } 默认分隔符将在其他函数中使用,我只想在一个地方定义它。 如果这是一个纯函数,那么与仅使用全局DEFAULT_SEPARATOR常量有什么区别?

1
用Java语言吊起===编译?
在最近的一次面试中,我遇到了一个有趣的观点。 用Java语言进行提升是关于将变量声明和函数声明移到脚本顶部。我们可以将此阶段称为编译阶段吗? 我知道以下事实:Javascript解释器在输入脚本上有2个传递,在第一个传递中它会提升,而在第二个传递中它实际上会执行脚本。知道Javascript是一种解释语言后,这个问题使我有些困惑。

3
跨语言测试驱动开发
简短的问题:您如何在跨多种语言的项目中遵循测试驱动开发? 具体来说,我正在编写一个使用JavaScript和PHP的Web应用程序,我想遵循TDD原则,但是我不确定如何将它们集成在一起。是否为JS和PHP部分运行单独的测试套件,并在JS套件中使用模拟来模拟服务器响应?是否有一种技术可以一次测试两个组件? 这是我第一次使用“测试驱动开发”,因此您可以分享有关如何减少测试难度的任何建议都是很棒的。我之所以选择它,是因为一旦完成原型,需求就改变了,迫使我改变设计。我认为如果我要从头开始,我想从一开始就使用内置的回归测试编写更可扩展的代码。 我正在SimpleTest中编写PHP测试,在JsTestDriver中编写JavaScript测试。我习惯了面向对象的范例,因此在PHP中有一些类,并且我在JavaScript中使用原型继承来做类似的事情。我也已经开始阅读有关Python中TDD的书和有关JavaScript中TDD的书,但是从我看到的所有内容来看,这些并没有描述对应用程序进行完整的测试(除了使用Selenium或其他Web驱动程序之外)进行前端验收测试,TDD是否不适合全栈开发人员使用?

2
注册期间自动生成密码是一个好主意吗?
我正在为我正在从事的项目开发注册系统。 由于如果过程太长,用户往往不愿注册,所以我认为(至少最初需要)他们的电子邮件,然后将自动生成的密码发送给他们(这也使我可以验证他们的电子邮件地址) )。这也将阻止他们选择较弱的密码来快速完成注册。 到目前为止,我还没有发现任何弊端,但是由于我从未见过使用该系统的站点,因此恐怕还有一些弊端。 这是一个好主意吗? PS:当然,我也正在通过Facebook和其他类似服务实施注册,以使人们无需密码即可快速注册,但许多人可能出于隐私考虑或因为他们不愿意而选择经典注册使用任何这些服务。

2
对有状态的框架(例如Phaser)进行单元测试?
TL; DR在确定有状态的框架中工作时,我需要帮助您确定简化自动化单元测试的技术。 背景: 我目前正在用TypeScript和Phaser框架编写游戏。Phaser将自己描述为一个HTML5游戏框架,该框架试图尽可能少地限制代码的结构。这需要进行一些权衡,即存在一个上帝对象的Phaser.Game,它可以让您访问所有内容:缓存,物理,游戏状态等。 这种状态性使得很难测试很多功能,例如我的Tilemap。让我们来看一个例子: 在这里,我正在测试我的瓷砖图层是否正确,并且可以在我的Tilemap中识别墙壁和生物: export class TilemapTest extends tsUnit.TestClass { constructor() { super(); this.map = this.mapLoader.load("maze", this.manifest, this.mazeMapDefinition); this.parameterizeUnitTest(this.isWall, [ [{ x: 0, y: 0 }, true], [{ x: 1, y: 1 }, false], [{ x: 1, y: 0 }, true], [{ x: 0, y: 1 }, true], …

2
Javascript MVC应用程序设计(画布)
我很难掌握如何在Javascript中使用类似于MVC的方法来构造/构造画布应用程序。用户界面将非常流畅和动画化,游戏也将非常简单化,但会重点强调补间和动画。我了解了MVC的工作原理,但实际上却没有。我已经从中搜查了一些漏洞,阅读了很多文章,现在和我刚开始时一样困惑。 有关应用程序区域的一些详细信息: 多屏幕游戏框架-多个游戏将位于该框架内常见的UI“屏幕”包括:设置,信息,选择难度,主菜单等。 多种输入法 常见的UI元素,例如某些屏幕上的顶部菜单栏 使用不同渲染方法(画布/ DOM / webGL)的可能性 目前,我有一个AppModel,AppController和AppView。从这里开始,我计划添加每个“屏幕”并将其附加到AppView。但是,诸如顶部菜单栏之类的东西又应该是另一个MVC三合会吗?在不紧密耦合组件的情况下,我将在何处以及如何安装它? 将一个MVC三合一组合在另一个中是否被接受?即我可以将每个“屏幕”添加到AppView吗?“ triad”甚至是公认的MVC术语吗? 我的想法在这些选择下融化了……我觉得这里缺少基本的东西。我已经有一个不使用MVC方法就可以启动并运行的解决方案,但是最后却得到了紧密耦合的解决方案-逻辑和视图,目前已经结合在一起。这个想法是打开它并使视图更容易更改(例如,将画布视图换成基于DOM的视图)。 当前使用的库:require.js,createJS,下划线,GSAP,手动MVC实现 任何指针,示例等,特别是关于事物的实际设计以及将“屏幕”划分为适当的M,V或C的指针,示例等都将受到赞赏。 ...或除MVC以外更合适的方法 [注意,如果您之前曾看过这个问题,是因为我在另外两个不正确的stackexchange社区中提出了这个问题……我的大脑已经停止运作了]

3
是什么使HTML5和JS应用程序无法像本机应用程序一样运行?
据我了解, HTML是一种标记语言,XAML,XIB以及Android使用的任何内容以及其他本机UI开发框架的内容也是一种标记语言。 JavaScript是一种与之配合使用的用于处理客户端脚本的编程语言,其中包括事件处理,客户端验证以及C#,Java,Objective-C或C ++在各种此类框架中所做的任何其他事情。 在诸如Sencha's,Angular等表单框架中提供了MVC / MVVM模式。 与其他框架一样,我们以sqlite和键值存储的形式提供localStorage,并且您拥有几乎所有它缺少的API规范。 每当本机UI框架必须呈现UI时,它都必须解析相似的标记并呈现UI。 问题分类 在HTML和JS本身中做同样的事情会阻止什么? 为什么不能使Web(以及CSS)和JS表现出相同的方式,而不是将Web控件或浏览器作为两者之间的层? 即使没有层,在其他不使用C ++,C的情况下,.net运行时和JVM也是如此。 因此,让我们以Dalvik之类的Android为例,为什么Chromium不能(HTML与dalvik和NDK一起)成为android标记所做的事情,而JavaScript用于Java所做的事情? 所以问题是 即使当前的实现还不够好,但是从理论上讲,是否有可能使基于HTML5的应用程序像其他本机应用程序一样专门在移动设备上运行?

2
Array的“每个”或“某些”副作用是否有害?
我一直被教导,在某种if情况下产生副作用是不好的。我的意思是; if (conditionThenHandle()) { // do effectively nothing } ...而不是 if (condition()) { handle(); } ...我知道,我的同事很高兴,因为我不这样做,我们每个星期五的17:00回家,每个人都有一个快乐的周末。 现在,ECMAScript5推出类似的方法every(),并some()到Array了,我发现它们非常有用。他们是清洁比for (;;;)的,再给你一个范围,并且使元素由变量访问。 但是,在验证输入时,我经常发现自己在条件中使用every/ some来验证输入,然后再次在正文中使用every/ 将输入转换为可用模型。some if (input.every(function (that) { return typeof that === "number"; })) { input.every(function (that) { // Model.findById(that); etc } } else { return; } ...当我想做的是 if (!input.every(function (that) { var …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.