我开发了一个单页应用程序原型,它在前端使用Backbone,并在服务器上使用瘦RESTful API来获取它的数据.
来自繁重的服务器端应用程序开发(php和python),我非常喜欢使用胖客户端MVC的新的不同设计方法,但我对如何最好地将应用程序限制为登录的经过身份验证的用户感到困惑.
我更喜欢将应用程序本身放在登录后面,并且除了站点的本机登录之外,还希望最终实现其他类型的登录(openid,fb connect等).我不清楚这是如何完成的并且一直在搜索 - 但是在找到让我清楚的信息方面不成功.
总体而言,目前注册用户并要求他们登录以使用您的单页应用程序的最佳做法是什么?
用户登录后,api请求如何进行身份验证?我可以存储会话但是如何在API调用中检测此会话,或者我是否需要在每次单独的API调用中传递一个令牌?任何答案都将非常感谢!
javascript authentication javascriptmvc backbone.js single-page-application
我们在应用程序中使用事件驱动的JavaScript MVC框架,但是对于较大的数据集存在性能问题.我们已经实现了React中使用的许多相同技术来缓解我们的问题(按时间间隔渲染,比较数据状态并仅更新更改的内容),但我担心我们正在实施我们自己的,不太完整的,框架.在我们采用React来处理数据量很大的UI之前,有哪些替代方案?
我正在构建一个多页面的javascript应用程序.我已经阅读了很多设计模式,并使用Core/Facade/Module方法创建应用程序w /松散耦合(pub/sub scribing to events).
我有一个非常好的系统,可以在部署时将所有模块文件和相关的依赖项缩小并组合成一个外部javascript文件.最小化我的应用程序的额外HTTP请求是一个设计目标 - 因此我对AMD(异步模块定义)不太感兴趣.
我正在使用Nicholas Zakas的可扩展JavaScript应用程序架构演示文稿中指出的指南
http://www.youtube.com/watch?v=vXjVFPosQHw
&&
Addy Osmani的大规模JavaScript应用程序架构模式 http://addyosmani.com/largescalejavascript/
&&
这个高级教程,来自Nettuts的Andrew Burgess,编写模块化JavaScript http://marketplace.tutsplus.com/item/writing-modular-javascript/128103/?ref=addyosmani&ref=addyosmani&clickthrough_id=90060087&redirect_back=true
我的问题是关于如何管理此应用程序的不同页面及其相关模块的建议.我还使用Backbonejs的Router类w/ballupton的History.js库来操作HTML5历史/状态API并动态加载页面而不刷新,同时保持不支持HTML状态API的旧浏览器的向后兼容性.我的所有页面都共享一个公共代码库(单个缩小和压缩的js文件).
这是我想在我的应用程序中使用的结构的大纲:
它本质上是一种混合方法.上半部分包含Core/Facade/Module模式,其中包含不相互直接交互并通过外观发布/订阅通知的离散模块.
下半部分由我提出的应用程序结构组成,当状态/ url发生更改时通知"主控制器",主控制器执行任何全局操作(如初始化我的UI的标题和侧边栏菜单,如果尚未初始化)并指示相关的子控件运行它的init()方法(以及在之前加载的任何控制器上调用destroy();).每个子控制器(与ex:主页,日历页面,预订页面等相关)从可用模块池中挑选模块并初始化它们.
这是一个很好的方法,还是我处于糟糕的轨道?我可以看到模块仍然彼此独立,这有利于可伸缩性.
我还考虑将路由器和控制器视为离散模块并让它们发布/订阅Core,并且每个控制器以某种方式初始化它所需的模块页面.
我正在使用window.historyJavascriptMVC应用程序为每个控制器启用后退/前进/刷新功能.每次我加载一个新的控制器,我都 window.history.pushState用来为历史添加一个新的状态.然后在返回/刷新时我正在使用已保存的状态并重新使用数据来再次构建控制器.
除了特定场景中的一个问题外,整个想法都很好.我收到以下错误:
无法在"历史记录"上执行"pushState":无法克隆对象.
在其他方案中添加相同的数据没有问题.什么可能导致此错误?谢谢你的帮助.
我想将JavaScript框架用于复杂的Web应用程序.我一直在看Backbone.js,knockout.js和JavaScriptMVC.作为客户端JavaScript重型网络应用程序的新手,我不确定选择哪一个.每个人都有一个非常不同的方法来分离关注点.模型/视图/控制器与模型/视图/ ViewModel与模型/视图/集合.
你们有什么感想?决定因素是什么?哪一个最容易上手?你的经历是什么样的?
我有一个单页javascript应用程序(使用JavascriptMvc完成)和一个后端,REST服务构建在ASP.NET MVC3之上(使用NServiceMVC完成).
REST服务安装并运行了MiniProfiler,并且每个AJAX请求都会返回X-MiniProfiler-Ids标头.我确实有miniprofiler运行和工作,但我找不到任何关于此的信息,所以我不确定我是否正确地做到了这一点.
这是一个受支持的方案,现在有一种特定的方法吗?
我目前正在做的是:
在HTML应用程序(这是所有静态代码,没有动态的东西),我有:
<script type="text/javascript" src="/api/profiler"></script>
Run Code Online (Sandbox Code Playgroud)
在我的MVC应用程序中,我有:
public ActionResult Profiler()
{
if (!ControllerContext.HttpContext.IsDebuggingEnabled)
{
return new EmptyResult();
}
return new ContentResult() {
Content = StackExchange.Profiling.MiniProfiler.RenderIncludes(
position: RenderPosition.Right,
showControls: true
)
.ToString()
.Replace("<script type=\"text/javascript\">", "")
.Replace("</script>", "")
};
}
Run Code Online (Sandbox Code Playgroud)
很明显,这里有一个黑客删除硬编码<script>标签.
除此之外,从MVC的其他方面来看,profiler与通常使用完全相同.当您在应用程序中执行导致REST调用的操作时,miniprofiler会在角落中显示它.使用该showControls:true参数在这里也非常有用所以清除按钮会显示,因为否则您只需获得一个常量的操作列表,因为整个页面基本上不会刷新.
这是"正确"的方式吗,还是有更好的方法?
我正在评估Backbone.js,以便在我的网络应用程序中保持数据和UI同步.然而,Backbone的大部分价值似乎在于它使用RESTful接口.虽然我将来可能会添加服务器端备份,但我的主要用例是使用HTML5本地存储离线存储所有数据.
对于这样的用例,Backbone是否过度杀伤?如果是这样,是否有更好的解决方案,专注于在数据更改时更新UI,反之亦然?(我也在研究Knockout和Javascript MVC.)
编辑:我现在也在研究Angular.js和jQuery Data Link.
我有一个名为gallery的视图选项.我想在渲染图库时(直到它关闭)听取并处理keydown事件.
我如何在骨干事件中这样做?我已经尝试了'keydown X'的所有变体:功能,但没有一个有效.
几天前我问过这个问题,没有人回答.
我也问了它,forum.javascriptMVC.com现在我有了答案,但是我需要更多的想法.
题:
I read javascriptMVC's documents and I loved it.
But I don't know how to use it in a large scale project.
Run Code Online (Sandbox Code Playgroud)
我认为在服务器端需要一个MVC框架,或者可以提供很多帮助.我使用过服务器端PHP框架.
我很困惑,我JavascriptMVC项目的理解是,他们处理的浏览器捕捉事件客户端事件,执行AJAX请求,管理从服务器的响应/数据也显示他们对用户在图形界面.
我知道在PHP MVC项目中我们还有控制器(和操作),它们中的任何一个都是一个带有单个入口点的单独页面,我的观点是这些页面是完整的HTTP请求.
我认为这两个框架的组合将是一个形式单一或几个重文件(包括JS,CSS,IMGS等)的负载和诸如steal.js由另一个JavaScript libary管理.现在,用户可以使用网站,并导致运行可能会在UI改变的东西或导致AJAX请求,如雅虎邮箱,其中大多数事情发生JS功能的操作(如事件)工作一个页面.
那么这将如何影响PHP中控制器和动作的设计?我的意思是通常在PHP MVC框架中,很多控制器和动作意味着很多页面.我认为,由于AJAX,控制器和动作的数量实际上应该更少.我还认为,由于JMVC,大多数控制器(和操作)应该转向AJAX响应器,但是在这种情况下如何处理布局和视图?
最后
像Backbone.js,Angular,Ember.js等JavaScript MVC框架如今风靡一时.我知道他们非常适合防止意大利面条代码和所有,但我真的不明白为什么他们像他们一样起飞.
经过所有这些年来确保使用渐进增强等功能可以访问网站,当禁用JavaScript时,这种事情无论如何都无法正常工作.看看https://app.getblimp.com/.这是一个很棒的应用程序,但如果JS被禁用,整个事情就没用了.还记得几年前Target被起诉超过一百万美元因为他们的网站无法访问吗?
另一件事是如何将HTML集成到JS中.无论将标记与HTML分开发生了什么,CSS都会分别用于演示和JS分离行为?为什么服务器应该处理的所有这些东西都是由JavaScript完成的?
有人可以指出为什么JavaScript MVC框架将用于传统的服务器端MVC框架,如PHP的Zend,Ruby on Rails或Python?
我只是不明白!
javascript model-view-controller accessibility mvvm javascriptmvc
javascriptmvc ×10
javascript ×8
backbone.js ×4
html5 ×2
knockout.js ×2
ajax ×1
module ×1
mvvm ×1
offline ×1
performance ×1
php ×1
view ×1