我的项目和这些Javascript框架在哪里出错?


107

首先,我要创建的项目的最简单的部分是作为单页Web应用程序实现的Wiki引擎。我计划从一开始就拥有一组可用的功能,并且将来还会增加很多功能。

基本特征

  • 页面创建(同时创建Wiki文章和该文章的讨论论坛)
  • 标记和WYSIWYG ala 标记
  • 标记/ html /所见即所得之间的即时转换
  • 侧栏快速浏览
  • 用于选择编辑/查看的顶部工具栏

高级功能

  • 可配置的侧栏,通过不同的方法导航
  • 可配置的工具栏(可能添加选择的标记语言)
  • 标签
  • 可编辑的待办事项
  • 拖放文件上传和图像附件

该引擎最初将由最基本的页面创建,标记,所见即所得编辑和保存组成。我最终希望通过拖放图像支持,文件上传,实时数据图以及用于自定义视图的侧栏来扩展此基本引擎。

我已经对一个不错的项目进行了相当广泛的搜索,以此作为我的项目的基础,但是除了TiddlyWiki之外,似乎没有任何基于JavaScript的良好Wiki引擎。我也考虑过在现有的Wiki引擎之上应用Jquery,但我相信无论如何我最终还是会重写它(加上我随心所欲地添加我想要的功能更令人兴奋)。无论哪种方式,我都可以使用javascript库+框架来实现此野兽。

我知道不能真正将其中的某些框架相互比较,因为它们不是苹果与苹果。我已经尝试对各个框架的可比部分提出任何比较评论/问题,但我愿意接受纠正。

所以我们开始:

根据我自己的研究和观点,我将列表缩小到以下各项。我特意忽略了诸如SproutCore,corMVC,YUI之类的东西,因为我以有限的能力认为以下各项会更合适。

我的选择


jQuery / UI +主干

总体

根据我的阅读,这种组合被许多人使用和喜爱,并且非常灵活和可扩展。我主要担心的是,这种组合根本不是开发面向桌面的UI界面的最佳起点。

用户界面

尽管jQueryUI或jqueryTools可能具有竞争力,但它们显然与其他框架的UI功能不相上下。具体来说,它们似乎在效果上很沉重,但缺乏体面的布局切片支持。

javascriptMVC

总体

在我看来,JavascriptMVC本质上是jquery + MVC(jqueryMX)扩展,以及其他一些用于记录文档(documentJS),功能测试(funcUnit)以及代码和依赖项管理(stealJS)的应用程序。除了附加模块的好处之外,我认为功能的争论实际上归结于与js和jqueryMX的对比。

  • 功能:jupiter(jMVC的制造商)功能概述
  • 链接到jqueryMX

用户界面

JavascriptMVC将MXUI项目添加到Jquery可用的所有内容之上,因此我认为至少在该类别中这是一个小小的胜利。

淘汰赛

总体

我对此的想法和担忧与jquery +主干评论非常相似。它们似乎都提供相似的功能,但是只是从不同的角度。一个经常被提及的缺点是,knockoutjs太紧密地将业务逻辑和表示与数据绑定耦合在一起,并且这种绑定方法可能会因复杂的UI交互而崩溃,但是我很想听听为什么这不是问题。

用户界面

此刻空白

Dojo和ExtJS

总体

我将讨论Dojo和ExtJS结合在一起,因为我对它们了解最少,而且它们似乎在几乎相同的空间中发挥作用。关于这两者的关于stackoverflow的大多数信息似乎都是过时的。从我所看到的是,它们都是适用于台式机应用程序实施的大型框架。Dojo因糟糕的文档记录而备受指责,但事实似乎不再如此。ExtJS当然具有商业许可,但是对于您所获得的东西来说这确实是合理的,我不会对此过于反对。ExtJS中的小部件似乎比Dojo更加专业,但是我可以肯定在那里得到纠正。我很想听听任何人在这两个方面都有经验。

用户界面

Dojo具有dijit UI库ExtJS具有UI功能,但它们不在Ext核心中。这是文档,这是他们的演示

卡布奇诺咖啡

总体

然后是卡布奇诺咖啡。没有CSS,没有html,但是使用现有的javascript库也可能会很困难。Objective-J似乎并不可怕,尤其是考虑到他们吹捧也能够编写普通的javascript。这些演示令人印象深刻,并且似乎非常接近Wiki引擎的UI需求。对于不熟悉它的人来说,基于可可的API可以吸收很多东西,但也许值得。我听说布局引擎并不总是易于使用,但是像这样的年轻且可能会破坏性的技术肯定会存在一些缺点。

用户界面

此刻空白

我为写了这么多而道歉,但是,嘿,至少它不是ax vs y vs z问题,希望能提供大量廉价答案。所以你怎么看?我的台式机(如Wiki引擎)的基础应该是什么,随着时间的推移,该基础有望变得功能更加丰富(阅读复杂)?


9
+1是一个非常详细和深思熟虑的问题!
肖恩·维埃拉

8
不确定您的时间表和资源,但是当我试图在多个框架/环境之间做出决定时,我只是继续尝试并快速构建一个原型。即使只是一两个主要功能,我发现世界上所有的研究和文档都无法真正地尝试使用这些工具来构建某些东西。我说每个人花一天时间,看看能走多远。这样可以很好地表明哪些工具可以完成任务,让您感到最舒适。
Brian Flanagan

1
@Brian Flanagan移动到一个答案-即使是“元”。

1
您是否看过tiddlywiki.com,我认为这是使用JavaScript完成的自包含的Wiki
Bernhard

是的,我看了tiddlywiki。从很多方面来说,这都是这个项目的灵感,但是我对这个项目有自己的基础和方向。
funkyeah

Answers:


4

我建议首先为您的项目提出特定的UI要求。您尝试了以下哪些框架?

我个人从事ExtJS开发是因为我从事的项目需要大量的控件/小部件自定义。ExtJS开箱即用,可以随时对其进行扩展,组合或合并,以适应您的业务需求。

ExtJS 4还允许您“缩放” UI,以进一步自定义外观。

如果您不熟悉JavaScript并且对Java熟悉,那么您甚至可以考虑使用服务器端解决方案,例如GWTJSF甚至Vaadin


19

不确定您的时间表和资源,但是当我试图在多个框架/环境之间做出决定时,我只是继续尝试并快速构建原型。即使只是一两个主要功能,我发现世界上所有的研究和文档都无法真正地尝试使用这些工具来构建某些东西。我说每个人花一天时间,看看能走多远。这样可以很好地表明哪些工具可以完成任务,让您感到最舒适。


6

如今风靡一时(GitHubStare 上最受欢迎的全栈JavaScript框架是Meteor编写的wiki引擎。

推出视频将让你通过1:28大呼过瘾。

它与UI无关,并且已经通过Bootstrap和Famo.us进行了广泛的测试。它还从相同的代码库生成移动应用程序。


1
而且有与React的集成,但这仅适用于100%参与其中的人员。使用jquery插件和svg / canvas绘图库也有很多关于Meteor的知识,也没有问题。
imslavko 2014年

1

您选择的框架可能不会像您想象的那样限制您的UI选择。Henri Bergius最近发表的有关解耦内容管理的文章比我所能说明的要好得多-顺便说一句,它链接到一个非常漂亮的纯JavaScript(独立框架)的就地内容编辑器


我当然在挖掘所见即所得的Aloha编辑器。我一定会将其停靠在屏幕顶部,并添加标签以某种格式的标记查看文本区域。我的另一个主要选择是markItUp的味道。
funkyeah 2011年

1

你不是一个人!

VanillaJSAmpersand ..是简化驱动器和模块化Java的重要驱动器的典范。

甚至有一关于它的

简化的es6功能(模块SystemJS实施标准)推动着简单性的发展。它甚至可以在非es6系统上使用。

多么酷啊!


1

我要说的是,在整体候选人选择上您是错误的,因为您省略了AngularEmber,这两个都比列出的其他框架更适合。

总体而言,我会说Angular.js是该框架。

强调路由

您正在谈论的大部分内容(用于导航的多个侧边栏,一个页面应用程序)都是路由功能,或者是前端如何解释URL导航栏中的文本。

Angular.js和Ember都有出色的路由器,使您无需额外的代码即可完成所需的一切。

为了您的利益,这是Angular中可用于创建单页Wiki的功能的快速细分。

网站本身的结构

Angular有一个了不起的库,称为UI Router,它使您既可以创建自定义导航,又可以设置SEO友好结构来显示您的内容。多个视图也将允许顶部工具栏。

UI路由器教程:http : //cacodaemon.de/index.php? id= 57

所见即所得编辑器

Angular建立在实时双向绑定上(当您在某处更改某些内容时,它会自动在其他地方更改。)因此,Angular打包了许多功能,可与这种编辑器很好地配合使用。已经取得了一些好的结果,您只需要实现它们。

http://textangular.com/

图形和其他整洁的东西

Angular指令旨在执行诸如创建可重用的Chart组件之类的操作。它们与Wordpress Widgets并不完全不同。其中许多已经开发,可以放入您的Angular项目中。

http://www.sitepoint.com/creating-charting-directives-using-angularjs-d3-js/

关于Ember,我对其了解不多,因此无法谈论其特殊功能。


0

关于Backbone的一个建议,如果您决定使用它,则应该选择Marionnete,因为它是Backbone,但具有更好的体系结构和更自以为是(我个人认为Backbone没有设置任何准则,这在大型应用程序中感觉像是一个缺点) 。

我使用它几个月来结合了不同的js库,并且不会像其他框架那样妨碍您的工作,并且消息管道是通过应用程序连接组件但保持解耦的一种非常好的方法。

在这里,您的精彩演讲让我为此决定:https : //www.youtube.com/watch?v=qWr7x9wk6_c

在这里,您有一个演示原型,该原型还具有拖放元素以及其他连接的js库。我很想听听您对我的代码的看法,因为我从事Web开发已有1.5年了...我仍然是新手:https : //github.com/Drasky-Vanderhoff/marionette-demo/

关于Knockout,如果您想与已经拥有的内容进行交互并且不会一直与后端保持联系,那真的很好。我用了6个月的时间,最终需要使用许多其他js库进行路由;再加上我最终重复了Backbone和其他JS框架最终拥有的许多结构。我要说的是,它完全不会妨碍您,成为工具而不是约束。同样是大约一年前,因此一些事情已经改变。

一件事,如果您发现Knockback(Knockout + Backbone)...避免使用它,说明文档就不如应有的那样,这将花费您更多的时间来学习它。如果要这样做,请先制作一个快速的原型,看看是否是您想要的。


自您发布此消息已经一年了。在我现在开始新开发的过程中,Marionette是否仍然坚持作为Java语言开发的首选?
AlVaz 2015年

一点也不不是,现在最好使用Angular.js或React.js(如果需要,可以将两者结合使用)。如果您想同时为应用程序提供移动版本和Web版本,我强烈建议您使用React.js,因为React Native被用于制作iOS和Android本机应用程序。React.js和native都具有相同的概念,结构和范式(学习一次,到处使用,知道React.js == React Native,是的,我不使用三重等于:P)
DraskyVanderhoff 2015年

此外,还有一些使用Polymer的Web组件,我强烈建议您检查一下是否要使用明年可能是最热门的框架。最后,如果您需要100%实时数据同步/三种方式的数据绑定,那么Meteor是一个不错的选择,特别是因为如果您为参数编写验证器,那么它将在后端和前端运行相同的验证器,因此无需使用2个代码相同的基数
DraskyVanderhoff,2015年

需要澄清的是,我从未说过Marionette是我的最佳选择(当时实际上是Angular),我说的是,如果您要使用Backbone.js,则使用Marionette.js代替。
DraskyVanderhoff,2015年
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.