Questions tagged «javascript»

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


6
本地存储的安全性如何?
问题确实说明了一切。我想提供服务,但我不想自己将任何数据存储在数据库中。有了最近所有有关黑客攻击的消息,在我看来,让客户完全控制其数据会更好。 问题在于存储的数据可能是敏感的。我要做的是...当客户访问该网站时,会出现一个问题,询问“您是使用个人计算机还是公用计算机”。如果它们在公共计算机上,则该站点将拒绝访问。 如果他们在个人计算机上,它将提示他们设置密码。然后,将使用此密码对他们的所有数据进行加密。现在显然这不是太安全。加密方法使用JavaScript,而密码使用纯文本格式,因此我认为,精明的用户可以在localStorage中找到密码并访问数据。 我觉得这不是什么大问题。如果您使用的是个人计算机,则发生这种情况的可能性很小,因为……其他人需要访问其计算机上的特定用户帐户,其他人需要了解该网站……其他人需要了解localStorage以及如何访问它。敏感数据绝不会损害其身份或其他许多方面。它只是记录了大多数人不希望公开发布的内容。 所以真正的问题是,localStorage是否足够安全? 另一个问题..擦除您的localStorage有多困难?我不希望用户不小心擦除其数据。 最后-甚至值得加密/解密其数据,就好像您拥有可以访问该站点的密码一样。

5
为什么我们需要动态类型语言的枚举?
我在这里阅读一些代码,发现一个枚举用于存储html标签的名称。为什么我们需要这样做?使用此策略有什么好处? 我知道枚举在编译或静态类型的语言中有多么有用,但是当我看到动态类型的语言中的枚举时,我会感到好奇,就像上面显示的示例代码一样。因此,问题基本上可以归结为为什么我们需要使用动态类型语言的枚举,或者根本不需要它们?

5
为什么现在n层开发中的代码库现在有相等数量(甚至更多)的JavaScript代码?
我已经从事Web编程很长时间了,在某个地方,我无法知道为什么我们现在正在做我们所做的事情(或者我们是如何以这种方式来做事情的)? 我从基本的ASP Web开发开始,很早就在页面上混合了显示和业务逻辑。客户端开发之间千差万别(VBScript,不同的JavaScript风格),并且我们对服务器端验证有很多警告(因此我远离客户端逻辑)。 然后我搬到了ColdFusion了一段时间。ColdFusion可能是第一个使用其标签将显示和业务逻辑分开的Web开发框架。对我来说似乎很清楚,但非常冗长,并且ColdFusion的市场需求不高,所以我继续前进。 然后,我跳上ASP.NET的旅行车,开始使用他们的MVC方法。我还意识到Java似乎是企业系统的象牙塔语言,并尝试了MVC方法。后来,ASP.NET开发了这种MVVM设计模式,而Java(准确地说是J2EE或JEE)也很挣扎,并提出了其MVC2方法。 但是今天,我发现,后端编程不再是令人兴奋和进步的地方。而且,基于服务器端的MVC做法似乎已经过时了(人们真的不再使用JSTL吗?)。今天,在我从事的大多数项目中,我发现JavaScript框架和客户端开发是所有令人激动和创新的进步的来源。 为什么要进行从服务器到客户端的开发?我对我的一个JEE项目进行了简单的行计数,并且JavaScript中的代码行比Java多(第三方库除外)。我发现使用Java或C#等编程语言进行的大多数后端开发只是为了生成类似REST的界面,并且解决了显示,可视化,数据输入/输出,用户交互等所有艰苦的工作。通过诸如Angular,Backbone,Ember,Knockout等客户端框架... 在jQuery之前的时代,我看到了很多图,其中n层开发中的MVC中的M,V和C之间存在清晰的概念性界线。jQuery后,这些线在哪里绘制?看起来MVC和MVVM都可以在客户端的JavaScript代码中找到。 我想知道的是,为什么我们要进行这样的转换(从服务器端编程的重点到客户端的方方面面,从偏爱编译语言到脚本语言,从命令式到功能性编程,所有这些似乎都是同时发生的) ),此过渡/转移解决了哪些问题?

1
为什么要使用Bower?[关闭]
我完全理解像Python pip,Node npm或Ruby Gems这样的包管理器的好处,因为它们所做的工作远远不止于将文件添加到应用程序路径中。 也许我错过了重点,或者我很钝,但这是我可以看到的负面影响: 建立项目时的单独步骤 通过另一个软件包管理器单独安装依赖项(yo dawg) 使用bower.json/和/或根目录的项目更加混乱.bowerrc 依靠注册表是最新,正确且可用的 某些导入/引用(如图片)的内容将无法正常工作 与npm有很多重叠,并且通常不清楚何时使用哪个资源 我看到的积极因素是: 我不必手动下载依赖项 根据用户提示或类似情况,可选地将软件包安装为脚手架的一部分 我真的很想知道我没有意识到的任何好处,我应该说,我并不是想真正地想引起挑衅。


10
从微软技术转向Linux,NodeJS和其他开放源代码框架以节省启动资金是否值得?[关闭]
我目前正在参与一家初创公司,我是目前唯一参与其中的开发人员,其他人此刻将所有技术决定权交给我。 对于我的日常工作,我每天在使用Microsoft技术的软件公司工作,我们使用.NET,SqlServer,Windows Server等。但是,我意识到作为一家初创公司,我们需要降低成本,并且简要了解Windows托管的成本我很震惊地看到专用服务器的一些价格。我发现最便宜的是每月100英镑。另外,如果将来业务需要扩展,而我们最终需要多台服务器,则最终可能每年要花掉£000的£10的SQL Server / Windows Server许可费用。 然后,我快速查看了专用服务器的Linux托管价格,发现价格比Windows托管低waaaaaay。一个地方以每月不到20英镑的价格提供一台带有2核的机器。 这让我思考也许要走的路是在Linux上开源。 当我在工作中编写大量Javascript时(目前我正在开发一个单页面主干应用程序),我认为也许NodeJS和类似Express的Web框架可以使用。然后,我以为不是使用SQL,为什么不使用像MongoDB这样的开源NoSQL数据库,它对NodeJS有很好的支持? 我唯一关心的是,应用程序将要进行的一些工作将是动态地构建图像以及其他与图像相关的其他东西,例如,相当占用CPU的东西-所以我正在考虑也许可以用C ++编写任何CPU繁重的东西并将其作为Node中的模块使用。 这就是背景知识-但Linux基本上适合以下方面: 托管NodeJS / Express网站? 编译C ++节点模块? 使用像MongoDB这样的NoSQL DB? 转向这些不熟悉的技术以节省资金是一个好主意吗? 3个月更新 我在过去的几个月里一直在努力,所以我想如果有人感兴趣的话,我会进行更新。 最后,出于时间原因,我决定不使用NodeJS和Linux堆栈。我在一边进行启动,所以我每天工作9个小时,然后回家工作直到启动晚。以这种方式工作时,我显然需要尽可能提高效率,否则我将永远也不会最终交付产品。 在采纳了关于该线程的一些建议之后,我确实申请了Microsoft BizSpark,并被接受。这意味着我现在可以免费使用Visual Studio许可证,Windows Server许可证等。太棒了 希望在我们需要开始支付所有费用时,我们将交还足够多的款项,这将使其不成问题。 但是,不要以为我只是在使用Microsoft技术,因为我尝试了尽可能使用开放源代码的东西。我完成此操作的主要地方是我的数据层,在这里我决定使用PostgreSQL和MongoDB。我还在前端使用BackboneJS。 以下是我当前正在使用的技术/框架的摘要: 标准数据库资料:PostreSQL 日志记录和数据存储:MongoDB ORM:实体框架5 核心程式库:.NET(C#) Web框架:ASP.NET MVC3 UI:Razor视图引擎/ BackboneJS


5
Javascript模块化,基于服务器的MVC和业务现实
我知道这是一个非常广泛的问题,但是我已经分别处理了该问题的各个方面,并且正在努力将所有概念和技术结合在一起。 我想指定答案应包括以下技术: C# 带剃刀的MVC 3 带有jQuery的Javascript 如果这些内容有助于回答以下问题,则欢迎将其视为超越建议的建议(例如Backbone.js,Entity Framework等): 使用上面列出的技术,在组织代码和逻辑,同时保持可伸缩性和创建丰富,快速,干净的UI的能力方面,什么是最佳策略? 理想情况下,应将重点放在部署在企业/企业环境中的解决方案上。请注意,上面的技术列表不会更改,因此请不要提供“您应该使用xxx而不是现在使用的yyy ”的解决方案。 背景 我每天都使用jQuery,已经采用ASP.NET的MVC,并且已经使用C#很长时间了。因此,您可以假设这些技术的中高级知识来提出解决方案。 我将问题分成较小的部分,以使其更易于回答: 1.项目结构 鉴于我正在使用ASP.NET MVC(在Visual Studio 2010中),我想要一个目录结构解决方案,该解决方案可以接受这种类型的应用程序的主要布局。我猜想像早午餐一样,但是每个文件夹将包含什么以及它如何与应用程序的其他区域一起工作的更多细节。 2.数据访问 我想使用一种API类型的结构来尽可能地模块化我的数据访问。你可以假设很多POCO对象(的User,UserGroup,Customer,OrderHeader,OrderDetails,等),但也会有一些复杂的报表需要数据密集型的SQL和精心UI渲染。 EF + LINQ对于前者而言非常出色,但对于后者则不那么理想。在没有过于复杂或过于简单的情况下,我找不到适合两种情况的东西。 3.客户端代码组织和UI渲染 像大多数开发人员最先使用jQuery一样,我陷入了将代码混在一起的陷阱,但是很快发现它堆积并变得丑陋。尽管从那时起我就突飞猛进,但我仍在努力使代码模块化以及在不重复代码的情况下使用UI的各个部分。 举例来说,我可能会编写的典型代码看起来像这样,我评论了困扰我的东西(请注意,此后我已更改为使用延迟的AJAX调用,并从DOM操作中分离了实际的数据请求): $('#doSomethingDangerous').click(function () { // maybe confirm something first if (confirm('Are you sure you want to do this?')) { // show a spinner? something …

2
用全栈javascript分离前端和后端的方法?
假设我有一个前端,该前端主要是一个单页面的应用程序,它是使用angular,grunt和bower编写的。假设我有一个后端,主要是一个坐在ORM之上的REST API,它使用grunt,express和sequelize之类的东西从数据库中存储/检索对象。 角度应用程序执行用户看到的所有可视化内容,但是它是通过后端提供的服务上的GUI来完成的。 希望将它们分成两个不同的代码库,以允许独立开发,版本控制,持续集成,推送到开发等。 我的问题是,有什么方法可以干净地进行此操作?是否有针对全栈javascript的推荐最佳实践? 选项#1似乎是一个整体,即“不要将它们分开”。优点是构建链很简单,而且一切都集中在一个地方-但似乎有很多弊端。很难独立版本化,正面折断意味着背面无法展开,依此类推。 选项#2似乎是一个准整体,其中前端构建链导致将一堆文件写入后端。dist前端的目录将引用后端的某个目录,因此从本质上讲,当前端最小化,丑化等等时,它最终将发布到后端,后端将运行所有内容。 选项#3似乎是完全分开的:前端和后端各自在不同的端口上运行各自的服务器,并且它们是完全独立的项目。缺点似乎是需要将它们配置为了解彼此的端口。后端必须允许来自前端的CORS,并且前端需要知道所有这些端点的预期位置。 选项#4可能是使用docker-compose之类的东西将整个东西装配在一起。 我确定还有其他选择。建议的最佳做法是什么?

8
即使我没有发生舍入错误,比较浮点数的相等性是否也会误导初级开发人员?
例如,我想显示一个从0,0.5,... 5开始的按钮列表,每0.5跳一次。我使用for循环来做到这一点,并在按钮STANDARD_LINE上使用了不同的颜色: var MAX=5.0; var DIFF=0.5 var STANDARD_LINE=1.5; for(var i=0;i<=MAX;i=i+DIFF){ button.text=i+''; if(i==STANDARD_LINE){ button.color='red'; } } 在这种情况下,应该没有舍入错误,因为每个值在IEEE 754中都是准确的。 var MAX=10; var STANDARD_LINE=3; for(var i=0;i<=MAX;i++){ button.text=i/2.0+''; if(i==STANDARD_LINE/2.0){ button.color='red'; } } 一方面,原始代码更加简单并转发给我。但是我正在考虑一件事:i == STANDARD_LINE是否误导了初级队友?它是否掩盖了浮点数可能具有舍入误差的事实?阅读这篇文章的评论后: https://stackoverflow.com/questions/33646148/is-hardcode-float-precise-if-it-can-be-represented-by-binary-format-in-ieee-754 似乎有很多开发人员不知道某些浮点数是准确的。即使在我的情况下有效,我是否应该避免浮点数相等性比较?还是我在考虑这个问题?

6
Java中的动态代码评估-聪明还是草率?
我正在尝试为我的应用程序在Java中创建一个灵活的ACL框架。 许多ACL框架都建立在规则白名单上,其中规则的形式为owner:action:resource。例如, “ JOHN可以查看资源FOOBAR-1” “ MARY可以查看资源FOOBAR-1” “ MARY可以编辑资源FOOBAR-1” 这很有吸引力,因为规则可以轻松地序列化/持久化到数据库。但是我的应用程序具有复杂的业务逻辑。例如, “部门1中具有5年以上资历的所有用户都可以查看资源FOOBAR-1,否则未经授权” “部门2中的所有用户,如果日期是2016年3月15日之后,则可以查看资源FOOBAR-2,否则未经授权” 乍一想,设计一个可以处理无限复杂规则的数据库模式将是一场噩梦。因此,似乎我需要将它们“烘焙”到编译的应用程序中,为每个用户评估它们,然后根据评估结果生成owner:action:resource规则。 我想避免将逻辑烘焙到已编译的应用程序中。 因此,我正在考虑以谓词:action:resource的形式表示规则,其中谓词是确定是否允许用户的布尔表达式。该谓词将是Java的Rhino引擎可以评估的JavaScript表达式的字符串。例如, return user.getDept() == 1 && user.seniority > 5; 这样,可以轻松地将谓词保存到数据库中。 这很聪明吗?这是草率的吗?这是花哨的吗?这是过度设计的吗?这样安全吗(显然,Java可以将Rhino引擎沙箱化)。


1
立即调用的匿名JavaScript函数的术语是什么?
我正在为团队编写JavaScript样式指南,以便我们可以更轻松地组织和贡献文档。但是我遇到了一个小障碍,这就是我的问题所在... 我应该如何调用立即调用的匿名JavaScript函数。我知道我可以简单地将其称为“匿名函数”,但我想强调一下它被立即调用的事实。 这是一个例子: var MyVariable = (function(data){ return "another value" })("some value"); console.log(MyVariable); // "another value"

5
Javascript,HTML和CSS之间的紧密耦合:更现代的方法?
看到Java绑定到某些选择器以查找元素,存储数据和侦听事件是很常见的。看到这些用于样式的选择器也是很常见的。 jQuery(及其选择器引擎Sizzle)通过使用CSS类型的语法引用元素来支持和促进这一点。因此,在构建项目时,这种技术特别难以“取消学习”(或重构)。 我已经了解到,这是HTML和Javascript开发历史的结果,并且已经建立了浏览器来有效使用/解析/呈现这种耦合。但是随着网站变得越来越复杂,这种现实会给组织和维护这些单独的层带来困难。 我的问题是:现代网站是否可以避免这种情况? 如果我是前端开发的新手,并且希望以“正确的方式”学习事物,那么值得一开始学习去耦和避免这种依赖吗?这是否意味着避免使用jQuery,而推荐使用可促进更解耦结构的库?
29 javascript  html  css  jquery 

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.