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

首先,我希望创build的项目最简单的部分是作为单页网页应用程序实现的维基引擎。 我计划从一开始就提供一系列function,并增加大量function。

基本function

  • 创build页面(为该文章创buildwiki文章和论坛)
  • 标记和所见即所得markitup
  • 在标记/ html /所见即所得之间进行即时转换
  • 一个侧栏来快速导航
  • 一个用于select编辑/查看的顶部工具栏

高级function

  • 可configuration的侧栏通过不同的方法进行导航
  • 可configuration的工具栏(可能添加select的标记语言)
  • 标签
  • 可编辑待办事项的
  • 拖放file upload和图像附件

引擎最初由最基本的页面创build,标记和所见即所得的编辑和保存组成。 我最终希望通过拖放图像支持,file upload,实时数据图和用于定制视图的侧栏来扩展此基本引擎。

我已经做了一个相当广泛的search一个体面的项目,从我的项目为基础,但除了TiddlyWiki似乎没有任何好的基于JavaScript的维基引擎。 我也考虑过在现有的wiki引擎上应用Jquery,但是我相信最终我会重写它(再加上我想要添加的function更加令人兴奋)。 无论哪种方式,我已经到达实现这个野兽用JavaScript库+框架。

我知道,不能把这些框架中的一些相互比较,因为它们不是苹果。 我已经试图对各个框架的可比较的部分提出任何比较评论/问题,但我愿意纠正。

所以在这里我们去:

根据我自己的研究和意见,我把名单缩小到下面的项目。 我以有限的身份故意排除了像SproutCore,corMVC,YUI和其他一些东西,认为下面的项目更合适。

我的选项

  • jquery + jqueryUI + backbonejs
  • knockoutjs
  • javascriptMVC
  • 道场
  • ExtJS的
  • 热奶咖啡

jquery / UI + backbonejs

总体

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

UI

虽然jQueryUI或jqueryTools可能具有竞争力,但它们当然似乎不像其他框架的UIfunction。 具体来说,他们似乎是沉重的影响,但缺乏体面的布局切片支持。

javascriptMVC

总体

对我来说,JavascriptMVC看起来实际上是jquery + MVC(jqueryMX)扩展,还有一些其他用于logging(documentJS),functiontesting(funcUnit)以及代码和依赖pipe理(stealJS)的应用程序。 除了额外的模块的好处,我认为function的辩论真的归结为backbonejs与jqueryMX我是否正确,并有任何人一起工作或比较两者?

  • 特点:jupiter(jMVC的制造者)的function概述
  • 链接到jqueryMX

UI

JavascriptMVC将MXUI项目添加到Jquery的任何可用项目之上,所以我认为至less在这个类别中是一个小小的胜利。

knockoutjs

总体

我在这方面的想法和担忧与jQuery +主干评论非常相似。 他们似乎都提供了类似的function,但只是从不同的angular度。 经常提到的一个缺点是,knockoutjs将数据绑定的业务逻辑和表示紧密地联系在一起,并且这种绑定方法可能会破坏复杂的UI交互,但我很想听听为什么这是一个非问题。

  • 讨论主干vs基因敲除概念
  • knockoutjs的特点

UI

此刻空白

Dojo&ExtJS

总体

我将把Dojo和ExtJS的讨论结合起来,因为我最不了解他们,他们似乎在几乎相同的空间里玩。 关于这两个stackoverflow的大部分信息似乎是过时的。 从我所看到的是,它们都是适合桌面级应用程序实现的大型框架。 由于文档不好,Dojo被指责了,但似乎不再是这种情况。 ExtJS当然有商业许可证,但是对于你所得到的是合理的,我不会认为这太过分了。 ExtJS中的小部件似乎比Dojo更专业一些,但我当然可以在那里纠正。 我会有兴趣听到任何有经验的人。

UI

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

热奶咖啡

总体

然后是卡布奇诺。 没有CSS,没有HTML,但也可能很难使用现有的JavaScript库。 Objective-J似乎并不可怕,特别是考虑到他们认为能够编写纯javascript。 演示令人印象深刻,似乎密切接近维基引擎的用户界面需求。 基于cocoa的API对于不熟悉它的人来说是一个很好的select,但也许是值得的。 我听说布局引擎并不总是容易处理,但是这样一个年轻的,可能是颠覆性的技术肯定会有一些缺点。

UI

此刻空白

我很抱歉写这么多,但嘿,至less它不是斧头vs y vs z问题希望大量的便宜的答案。 所以你怎么看? 像维基引擎这样的桌面应该是什么基础,希望随着时间的推移能够变得更加丰富(复杂)function?

我会build议首先为您的项目提出具体的UI要求。 你尝试过哪些框架?

就我个人而言,我进入了ExtJS开发,因为我工作的项目需要大量的控件/小部件的定制。 ExtJS拥有大量的开箱即用function,可以随时扩展,合并,或者转化为业务所需的任何怪物。

ExtJS 4还允许你“皮肤”你的UI来进一步定制外观和感觉。

如果您是JavaScript新手,对Java感到满意,您甚至可以查看服务器端解决scheme,例如GWT , JSF甚至Vaadin

不确定你的时间表和资源,但是当我试图在多个框架/环境之间做出决定时,我会继续尝试快速构build一个原型。 即使这只是一两个主要的function,我发现世界上所有的研究和文档都不会用实际的工具来搭配。 我说每一天,看看你有多远。 这将给你一个很好的指示,哪些工具可以完成任务,并感觉最适合你。

meteor现在风靡一时( GitHub和Meteorpedia 上最 出色的 全栈JavaScript框架是用Meteor编写的wiki引擎。

发布video会让你在1:28之前就迷上了。

关于用户界面是不可知的,并且已经用Bootstrap和Famo.us进行了广泛的testing。 它还从相同的代码库中生成移动应用程序。

您所select的框架可能不会像您想像的那样限制您的用户界面select。 最近Henri Bergius关于解耦内容pipe理的文章说明了比我更好的一点 – 顺便说一下,链接到一个非常甜美的纯JavaScript(独立于框架) 就地内容编辑器 。

你不是一个人!

VanillaJS和Ampersand是推动更简单,更模块化JavaScript的重要举措 。

甚至还有一本关于它的书 。

简单性是由低估的es6function驱动的: Modules和SystemJS实现标准。 它甚至可以用在非es6系统上。

多么酷啊!

我想说,在你select候选人的时候你是错误的,因为你省略了AngularEmber ,这两个都比上面列出的其他框架更适合。

总的来说,我会说Angular.js是这个框架。

强调路由

你正在讨论的大部分内容(用于导航的单个页面应用)都是路由的function,或者前端如何解释URL导航栏中的文本。

Angular.js和Ember都有出色的路由器,可以让您在不需要额外代码的情况下完成您所需的一切。

为了您的利益,下面是Angular中可用于创build单页wiki的function的快速分解

网站本身的结构

Angular有一个称为UI路由器的令人惊叹的库,可以让你创build自定义的导航,并设置一个SEO友好的结构来显示你的内容。 多个视图也会允许顶部的工具栏。

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

所见即所得的编辑器

Angular是build立在双向绑定的基础之上的(当你改变某个地方的东西的时候,它会自动改变其他地方)。因此,它包含了很多可以和这种编辑器配合的function。 已经有一些好的,你只需要执行它们。

http://textangular.com/

图表和其他整洁的东西

Angular指令被devise用于创build可重用的Chart组件。 他们并不完全不同于Wordpress Widgets。 其中许多已经被开发出来,可以放到你的Angular项目中。

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

关于Ember,我不太了解,所以我不能说它的特点。

关于Backbone的一个build议,如果你决定使用它,你应该去Marionnete,因为它是Backbone,但是有更好的架构结构和更多的自信(我个人觉得Backbone没有设置任何指南,在大型应用程序中感觉像是一个缺点) 。

我和它合作了几个月,结合了不同的js库,不像其他的框架一样,消息pipe道是通过应用程序连接组件的好方法,但是保持解耦。

在这里,你有一个伟大的演讲,让我决定: https : //www.youtube.com/watch?v=qWr7x9wk6_c

在这里你有一个演示原型,也有拖放元素加上其他js库连接。 很想听听你对我的代码的看法,因为我有1.5年的网页开发工作…我仍然是一个新手: https : //github.com/Drasky-Vanderhoff/marionette-demo/

关于Knockout,如果你想与你已经拥有的内容进行交互,你将不会一直与后端连接。 我使用了6个月,最终需要使用很多其他的js库进行路由; 再加上我最终重复了很多Backbone和其他JS框架所具有的结构。 我要说的是,它不会妨碍你,成为一种工具,而不是一种限制。 这也是一年前的事情,所以有一些事情已经改变了。

有一件事,如果你发现Knockback(Knockout + Backbone)…避免它,文档不如它应该是,它会需要你更多的时间来学习它。 如果你想要先做一个快速的原型,看看是否你想要的。