希望有人可以帮我清理一下.
我一直在阅读有关新的javascript应用程序框架,backbone.js,batman.js,ember.js等...
我看到很多实例使用Rails之上的框架.
有人可以向我解释.这不是需要大量重复才能使用它们吗?即.我需要完全复制每个模型和控制器吗?如果是这样,我每次都需要对它们进行更改吗?
我认为在浏览器上渲染模板有很大的好处,但是我觉得在一个已经很好组织的MVC结构上使用它们时,我遗漏了一些重要的东西.
有什么好处,看起来真的有多少重复?
我在这里读过这个问题
但它似乎没有解决重复问题.
提前致谢.
javascript-framework backbone.js ruby-on-rails-3 ruby-on-rails-3.1 ember.js
我环顾四周,没有看到这个问题.
在Javascript中确定页面的媒体类型(例如屏幕,打印,手持设备)有什么可靠的方法?我已经看过参考文献document.styleSheets[0].media,但是由于浏览器支持问题或者因为我不理解某些东西,我没有运气使用它.
我问,因为我希望Javascript在屏幕视图中隐藏某些内容,但不能在打印视图中隐藏.不能依赖媒体相关的样式来执行此操作,因为我使用Prototype来为元素运行切换开关,并且如果将元素声明为invisible(display: none),则Prototype将不允许将元素切换为可见-inline CSS*.我试图只为元素(<div style="@media print { foo: bar; } @media screen { blargh: bfargle; }">)设置特定于媒体的内联样式,但从我所知道的,这是不受支持的.
我知道我可以在样式表中循环并检查特定于打印的链接样式表是否处于活动状态,但我目前处于一种情况,即在单个链接样式表中混合了各种特定于介质的样式声明,所以这不好.是的,我可以将样式表拆分成不同的媒体类型,但我首先要弄清楚我是否可以用Javascript从DOM中可靠地拉出媒体类型,完全独立于CSS.哦,我已经尝试了"为打印视图隐藏元素,然后检查它是否可以用Javascript显示"但是那个'尽管这些元素不可见.如果有人想了解我在这里谈论的更多细节,我可以在编辑中详细说明.
*这是我没有理解的东西,并且经常被激怒.任何可以提供任何洞察力的人都会得到我的大力支持.
哪个JavaScript框架(prototype,script.aculo.us,Mootools,MochiKit ......)具有不错的CSS规则编辑支持?
这是关于更改样式规则.我希望有动态的CSS类改变.例:
<style>
#answer, .reveal { display: none; color: blue; }
#answer { /* additional stuff */ }
</style>
Run Code Online (Sandbox Code Playgroud)
现在,通过JavaScript,我想更改其中包含"display:none"的规则. - 我确信有时这是正确的方法; 当它不是正确的方法时,我不是在寻找替代方案.
哪个框架使以下内容变得简单:
(2.和3.仅使用DOM很容易,只要我从框架中获得CSS规则的句柄)
例如,YUI的StyleSheet一次只能在一张纸上搜索规则(有限,但对我来说足够了),但它不能像我的第一个例子那样显示,编辑或检索多选择器规则(对我来说太有限了).
YUI也无法获得单独的属性(底层DOM可以,但你无法通过YUI获得该结构).您可以单独删除"显示"属性,不过,如果你通过YUI手段得到规则的保持.
在dojox.html.styles下,Dojo有一些记录错误且不完整的东西
Ext JS有Ext.util.CSS.我检查了代码并在getRule()中发现了一个错误......否则选择器匹配(IE影响力不好)非常草率,这使得它对多选择器规则不利.它也无法通过API删除属性,但可以为您提供CSSRule,以便您自己完成. - CSS树行走尽可能原始:不降低媒体规则或导入.
$('.reveal').css(......等等......)不是答案,因为它根本不涉及CSS规则(它触及某些元素的CSS属性)!
我想知道依赖jQuery或MooTools这样的框架是否是一个好主意,还是应该使用纯JavaScript?
除了避免重新发明轮子,它们是否增加了任何特定的价值?
由于框架对公众开放,是否有可能利用框架中可能出现的任何安全漏洞(当然,无意中:))?
在选择框架或其他方面是否还有其他要考虑的问题?
这个问题是我在这里的另一个问题:无法理解node.js
我决定学习JavaScript,但是,尽管我从实践中学习,但我没有找到任何可以学习JavaScript的东西.
你建议我从哪些项目开始?从开始到掌握,我可以做些什么很酷的事情来提高我的技能?请不要为初学者提出几乎不可能的项目,我想知道关于JS的一切,但从一些不太容易但不是很难的事情开始.
我正在读这个:
http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/
我正在使用backbone.js.我喜欢它,虽然它需要太多的样板.无论如何.
这篇文章的作者似乎非常重视UI绑定和组合视图.
我想我知道ui绑定的基本优势,你可以在模型更改时更改视图的一小部分,而无需重新渲染整个视图.我不一定看到这一点.如果您的观点很大,也许您应该制作较小的视图?我已经看过knockoutjs的代码了,它充斥着丑陋的数据绑定内容.emberjs如何处理它?有一个例子吗?
我不知道他的意见是什么意思,有人可以澄清吗?
组合视图 - 像所有软件开发人员一样,我喜欢创建模块化可重用代码.出于这个原因,在编程UI时,我希望能够组合视图(最好是在模板层).这也应该带来丰富的视图组件层次结构的潜力.一个例子是可重用的分页小部件.
有一个例子吗?
谢谢
编辑:
这有助于制作类似视图的内容吗?
我想知道你们对这两个框架的看法,包括:
我已经知道并使用jQuery,我最近发现它缺乏用于大型Web应用程序的"企业就绪"组件.
现在我不想开始讨论jquery,或者为什么mootools不在那里,我想知道你们对这两个框架的具体看法.
谢谢!
在使用Backbone JS和jQuery Mobile为iPad Mobile Safari完成一个项目之后,让我觉得jQuery Mobile可能不是那个特定工作的合适工具.
我发现jQuery Mobile的性能一般都令人失望.许多移动JS框架(处理转换,对话框等)似乎都受到同样的影响.让jQuery Mobile和Backbone JS很好地协同工作似乎有点混乱.
我需要像jQuery Mobile这样的东西来处理拖放元素和页面转换(以及对话框).Backbone JS非常适合我们正在做的事情,因此我们希望将其保留在工具箱中.我们只针对iPhone和iPad进行项目,并且在本例中使用Objective-C本身做这些项目是不合适的.
最近完成的项目最终使用了jQuery,jQuery Mobile,jQuery UI,一些小插件,使jQuery UI与触摸,Backbone JS,Underscore JS一起工作......对于手机上的网络应用来说,这一切看起来都很重要!我想要一些功能强大且尺寸更小的东西
Sencha Touch似乎有很好的表现,但似乎你需要首先跳入它并完全按照它的工作原理.但也许我错了?我正在寻找一些与Backbone搭配不错的东西,它相对轻巧,并且有很多用于为iPhone/iPad构建精美UI的位(手势支持,页面/对话框转换,列表视图等).理想情况下,更像jQuery的东西 - 我称之为在DOM上执行这些操作并在我们不需要它时保持不变 - 而不是它是一个支配框架并且必须遵循它的规则(比如jQuery)移动,最有可能是Sencha Touch).还看到了jQTouch ......但现在这已经被Sencha接管了,这意味着它已经死了?
这有什么作用吗?轻量级,稳定,快速和可靠的东西,我们可以与Backbone JS一起使用,为Mobile Safari创建快速,响应迅速的Web应用程序...仍然具有所有有用的UI和转换等功能,可以让应用程序大放异彩?
javascript mobile-safari javascript-framework sencha-touch jquery-mobile
我真的是dojo的新手但是当我开始使用dojo版本1.7.2开发新的应用程序时,我也想使用新的AMD语法来实现功能.不幸的是我似乎没有得到它.:-(
让我最烦的是我不能简单地调用任何"require"-block中的函数.例如,我有一个页面,在开始时创建一个动态表,每行有几个小部件.然后我有一个按钮,每按一次就会添加一个空行.
没有AMD语法就很容易:
- 把我所有的"dojo.require()"放在HEAD中
- 然后创建一堆我自己的函数来创建表和小部件
- 添加行函数可以轻松访问任何全局变量我以前的功能填写了
但对于AMD来说,它是这样的:
初始函数创建表和小部件:
function fillReportTable(repId) {
require(["dojo/dom-construct", "dojo/dom-attr", "dijit/form/FilteringSelect",
"dojo/data/ItemFileReadStore", "dijit/form/ComboBox", "dijit/form/DateTextBox", "dijit/form/Select", "dojo/store/Memory"],
function (domConstruct, domAttr, FilteringSelect, ItemFileReadStore, ComboBox, DateTextBox, Select, Memory) {
// a lot of code to create the table, consisting of SEVERAL functions
function createNewRow(tbl) { ...}
function function1 () {... }
function function2 () {... }
function function3 () {... }
}
Run Code Online (Sandbox Code Playgroud)
现在,"添加空行"按钮调用自己的函数"addEmptyRow".
但是在这个函数中我必须:
- 再次为每个dojo模块做一个其他的需求
- 我不能使用任何"fillReportTable"函数"内部"的函数.例如"createNewRow"函数
function addEmptyRow() {
require(["dojo/dom-construct", "dojo/dom-attr", "dijit/form/FilteringSelect",
"dojo/data/ItemFileReadStore", "dijit/form/ComboBox", "dijit/form/DateTextBox", …Run Code Online (Sandbox Code Playgroud) 这更像是一种风格和偏好的问题而不是任何事情,尽管可能还存在性能方面的考虑.
如果你正在使用一个框架(比如说jQuery是为了参数,虽然它可以是任何框架),你需要编写一个新函数.这是一个简单的功能,您可以轻松完成它而无需使用框架.
无论如何使用框架是否有优势,因为它已经加载到浏览器的内存中,有一个易于访问的DOM映射等等?或者,普通的js总是会解析得更快,因为它是"原始的"并且不依赖于框架?
或者仅仅是品味问题?
javascript ×8
backbone.js ×2
dojo ×2
stylesheet ×2
amd ×1
coding-style ×1
css ×1
dom-events ×1
ember.js ×1
jquery ×1
media ×1
mootools ×1
prototypejs ×1
sencha-touch ×1
styles ×1
yui ×1