小编fun*_*eah的帖子

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

首先,我希望创建的项目的最基本骨骼是作为单页面Web应用程序实现的wiki引擎.我计划从一开始就提供一系列功能,并提供大量功能.

基本功能

  • 页面创建(为该文章创建wiki文章和讨论论坛)
  • 加价和WYSIWYG ala markitup
  • 标记/ html/WYSIWYG之间的即时转换
  • 快速导航的侧栏
  • 用于选择编辑/视图的顶部工具栏

高级功能

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

该引擎最初将包括最基本的页面创建,标记和WYSIWYG编辑和保存.我最终希望通过拖放图像支持,文件上传,实时数据图和用于自定义视图的侧边栏来扩展此基本引擎.

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

我知道人们无法真正比​​较这些框架中的一些,因为它们非常不是苹果.我试图将任何比较评论/问题与相应框架的可比较部分进行框架,但我愿意接受纠正.

所以我们走了:

根据我自己的研究和意见,我将列表缩小到下面的项目.我故意遗漏SproutCore,corMVC,YUI等其他东西,因为我以有限的身份认为下面的项目会更合适.

我的选择


jquery/UI + backbonejs

总体

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

UI

虽然jQueryUI或jqueryTools可能具有竞争力,但它们似乎并不像其他框架的UI功能那样.具体来说,他们似乎对效果很重,但缺乏合适的布局切片支持.

javascriptMVC

总体

JavascriptMVC给我看起来它本质上是jquery + MVC(jqueryMX)扩展,以及一些其他用于记录的文档(documentJS),功能测试(funcUnit),以及代码和依赖管理(stealJS).除了附加模块的好处之外,我认为功能性辩论实际上归结为backbonejs与jqueryMX我是否对此有正确的看法并且有没有人合作或比较两者?

  • 特点:jupiter(jMVC的制造商)概述了他们的功能
  • 链接到jqueryMX

UI

JavascriptMVC 在Jquery可用的任何东西之上添加MXUI项目,所以我认为至少它在该类别中略微获胜.

knockoutjs

总体

我对此的想法和关注与jquery +骨干评论非常相似.他们似乎都提供类似的功能,但只是从不同的角度来看.一个经常被引用的缺点是,knockoutjs将业务逻辑和表示与数据绑定结合得过于紧密,并且这种绑定方法可能会因复杂的UI交互而崩溃,但我很想知道为什么这不是问题.

UI

此刻空白

Dojo和ExtJS

总体

我将结合讨论Dojo和ExtJS,因为我对它们知之甚少,而且它们似乎在几乎相同的空间中发挥作用.关于这两个的stackoverflow的大部分信息似乎已经过时了.从我所看到的是,它们都是适合桌面级别应用程序实现的大型框架.Dojo因文件不佳而遭到谴责,但似乎已不再适用.ExtJS当然有商业许可证,但是你得到的东西真的很合理,我也不会反对它.ExtJS中的小部件似乎比Dojo更专业,但我当然可以在那里纠正.我很想听听任何有这两方面经验的人.

UI

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

热奶咖啡

总体

然后是卡布奇诺.没有CSS,没有HTML,但也很难使用现有的JavaScript库.Objective-J似乎并不可怕,特别是考虑到它们也能够编写简单的javascript.演示令人印象深刻,似乎非常接近维基引擎的UI需求.基于可可的API对于不熟悉它的人来说是很多东西,但也许值得.我听说布局引擎并不总是很容易使用,但像这样的年轻且可能具有颠覆性的技术肯定会有一些缺点.

UI

此刻空白

我为写这么多而道歉但是嘿,至少它不是斧头与y …

javascript frameworks

107
推荐指数
3
解决办法
4593
查看次数

Angular,React和Blaze(客户端流星)之间的主要设计差异是什么?

我已经看过Angular vs. React,而Meteor问题多次问过.在流星方面,这个问题的答案不可避免地是对流星范围大得多的解释(有DDP,部署,所有服务器端的东西,以及它提供的所有其他东西).

我想将此问题仅限于Blaze引擎以及它们确实有些重叠的事情,特别是在编写或构建客户端代码方面可能提供额外功能和/或功能的情况.

  • 他们在哪里相互补充?(例如,https://github.com/lvbreda/Meteor_angularjs带来了什么)
  • 假设上面带来了一定的优势,如果使用纯流星,你如何弥补?
  • 鉴于angular鼓励客户端对MVC进行相当严格的代码分离,应该如何在meteor中的客户端上构建良好的代码以遵循其MVVM模式?(它是否仅仅来自模板,客户端模块和模型)

javascript design-patterns angularjs meteor

32
推荐指数
2
解决办法
1万
查看次数

是否有规范的meteor.js表单包?

是否存在一个被认为是规范的表单包或者可能与最终最终存在于核心中的表单相似的表单包?

在我的搜索中,我提出了两个主要的竞争者,基于活动,彻底和文档(但可能还有其他人):

如果有人查看了这两个,你可以评论你为什么或在哪里使用一个与另一个?

javascript forms meteor meteorite

15
推荐指数
1
解决办法
2277
查看次数

你如何使用订阅管理器与meteor的模板订阅?

Meteor最近推出了模板订阅功能.您现在可以this.subscribeTemeplate.xyz.onCreated调用中进行调用,只有订阅从服务器准备好后,帮助程序{{#if Template.subscriptionsReady}}才会成立.

不幸的是,这似乎与subs-managersubs-Cache明显不兼容

你是如何使用sub-Cache替代this.subscribe的,以便subsciptions manager制作的订阅ID将它变成_subscriptionHandles和_allSubsReady这个.subscribe的一部分?或者以其他方式询问,您如何获得{{#if Template.subscriptionsReady}}和函数Template.instance().subscriptionsReady()依赖于使用subs-Cache进行的模板订阅.

示例代码不起作用:

# in some top level file
share.subsCache = new SubsCache( 
  expireAter: 5  
  cacheLimit: 10
)

#in a template file
Template.entryRevisionInfo.onCreated ->
  share.subsCache.subscribe('somePub')
Run Code Online (Sandbox Code Playgroud)

templates publish-subscribe meteor

13
推荐指数
1
解决办法
839
查看次数

如何使用-number后缀对字符串进行MongoDB查询排序?

我有一个问题:

ownUnnamedPages = Entries.find( { author : this.userId, title : {$regex: /^unnamed-/ }}, {sort: { title: 1 }}).fetch()
Run Code Online (Sandbox Code Playgroud)

返回以下数组排序:

[ { 
    title: 'unnamed-1',
    text: '<p>sdaasdasdasd</p>',
    tags: [],
    _id: 'Wkxxpapm8bbiq59ig',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public' },
{ 
    title: 'unnamed-10',
    text: '',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public',
    _id: 'aDSN2XFjQPh9HPu4c' },
{ 
    title: 'unnamed-2',
    text: '<p>kkhjk</p>',
    tags: [],
    _id: 'iM9FMCsyzehQvYGKj',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public' },
{ 
    title: 'unnamed-3',
    text: '',
    tags: [],
    _id: 'zK2w9MEQGnwsm3Cqh',
    author: 'AHSwfYgeGmur9oHzu',
    visibility: 'public' }]
Run Code Online (Sandbox Code Playgroud)

问题是,它似乎排序第一个数字字符,所以它认为正确的序列是1,10,2,3等....我真正想要的是它对整个数字部分进行排序,以便10将结束.

我不希望通过为数字添加01或001等附加数字来实现此目的.

我该怎么办?

javascript mongodb

11
推荐指数
4
解决办法
1万
查看次数

React-native中的ReadableMap接口如何将JS转换为JAVA?

我试图了解如何正确地将选项从react-native的js端传递到java端.

react-native桥使用ReadableMap进行转换,但作为Java noob,我无法理解其工作原理.

更具体地说,我不明白:

  • 实际转换如何运作?
  • 如何判断下游Java代码需要什么类型/格式?
  • 如何正确使用ReadableMap来做到这一点?

一般来说,我想知道这是如何工作的,但我会给出一个具体的例子,我正在考虑给出一些背景信息.


react-native软件包公开了一个日期时间选择器.

JS方面有一个showTimePicker方法:

showTimePicker(date, callback) {
    date = date || new Date();
    console.log(this.props);
    debugger
    var options = {
        ...this.props,
        hour:date.getHours(),
        minute:date.getMinutes()
    };
    RCTDateTimePicker.showTimePicker(options, function (hour, minute) {
        date.setHours(hour);
        date.setMinutes(minute);
        callback(date);
    });
}
Run Code Online (Sandbox Code Playgroud)

RCTDateTimePicker.showTimePicker在本机端桥接到Java 方法:

@ReactMethod
public void showTimePicker(ReadableMap options, Callback callback) {
    DialogFragment timePicker = new TimePicker(options, callback);
    timePicker.show(activity.getFragmentManager(), "timePicker");
}
Run Code Online (Sandbox Code Playgroud)

哪个叫

public TimePicker(ReadableMap options, Callback callback) {
    final Calendar c = Calendar.getInstance();
    this.callback = callback;
    hour = options.hasKey("hour") …
Run Code Online (Sandbox Code Playgroud)

javascript java android react-native

10
推荐指数
1
解决办法
4651
查看次数

NodeJS:如何在服务器端观看大量文件/文件夹以进行更新?

我正在开发一个小型NodeJS应用程序,它基本上用作基于浏览器的桌面搜索,用于基于LAN的服务器,用户可以查询多个.局域网上的用户都可以访问该服务器上的共享文件夹,并且传统上只用于将文件放在该文件夹中以便在每个人之间共享,我希望保持该过程相同.

我遇到的第一个解决方案是fs.watchFile,它已经在其他stackoverflow问题中被触及.在第一个问题中,用户Ivo Wetzel指出,在Linux系统上,fs.watchFile使用inotify但是,认为fs.watchFile不应该用于大量的文件/文件夹.

在关于fs.watchFile用户的另一个问题中,tjameson首先重申,在Linux上,inotify将由fs.fileWatch使用,并建议仅使用node-inotify-plusplusnode-walk的组合,但再次声明此方法不应用于大量的文件.通过评论和响应,他建议只观察目录的修改时间,然后重新扫描相关目录以进行文件更改.

我最大的障碍似乎是,即使有tjameson的建议,监控文件夹的数量仍然存在严格的限制(其中有很多并且在不断增长).此外,它必须以递归方式完成,因为目录树有点深,也可能在较低的分支处进行更改,因此我必须在每个文件夹级别监视以下内容(或者监视文件夹的修改时间,然后扫描找出发生了什么):

  • 创建文件或子文件夹
  • 删除文件或子文件夹
  • 移动文件或子文件夹
  • 删除自我
  • 自我的举动

假设inotify的限制与上面所说的一致,那么当我拥有大量嵌套子文件夹时,这对我来说似乎可能是太多的监视器.真正令人敬畏的方式看起来会涉及kqueue,我后来发现这是一个关于google组中更好的fs.fileWatch的讨论主题.

我似乎很清楚,保留相关文件和文件夹信息的数据库是查询方面的适当行动方案,但保持该数据库与所关注目录下的文件系统的实际状态保持同步将是挑战.

社区的想法是什么?是否有一个更好或众所周知的解决方案来攻击我不知道的这个问题?最好只观看所有感兴趣的目录,例如修改时间,然后扫描以查明发生了什么?是否更好地观察所有相关的inotify警报并适当修改数据库?这不是像我这样的农民可以解决的问题吗?

filesystems search node.js

9
推荐指数
1
解决办法
2834
查看次数

如何在javascript(meteor.js)中操作返回的mongo集合/游标?

在使用Meteor.js和Mongo时,我使用find({ some arguments }),有时会找到({ some arguments }).fetch()分别返回游标和匹配文档数组.

这两者之间真正的区别是什么?(我什么时候才能使用其中一个?)

操作/迭代这些类型的返回对象的正确方法是什么?

例如,我有一个包含许多文档的集合,每个文档都有一个标题字段.

我的目标是获得所有标题字段值的数组,例如[doc1title,doc2title,doc3title]

我这样做了:

var i, listTitles, names, _i, _len;
names = Entries.find({}).fetch();
listTitles = [];
for (_i = 0, _len = names.length; _i < _len; _i++) {
    i = names[_i];
    listTitles.push(i.title);
}
Run Code Online (Sandbox Code Playgroud)

或等同于coffeescript

names = Entries.find({}).fetch()
listTitles = []
for i in names
    listTitles.push(i.title)
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我不知道它是正确的方式,甚至是半合理的方式.

javascript mongodb coffeescript meteor

9
推荐指数
2
解决办法
1万
查看次数

反应原生包的原生部分可以独立运行和开发吗?

跨平台react-native软件包具有本机android代码,本机iOS代码和javascript代码,可将它们连接到javascript世界.

大概在处理这样一个包的原生部分时,你可以将它们导入各自的IDE(android-studio和Xcode),并在IDE中进行UI开发.

当我将react-native软件包作为一个整体查看,或者将本机部分导入到它们各自的IDE中时,所说的本机部分似乎没有独立运行...至少不是作为独立的android或ios应用程序.

我的问题是如何使用本机IDE导入/构建/运行/调试本机响应包的本机部分?你通常还需要反应原生服务器和休息javscript桥接代码来运行吗?

我正在尝试修改本机部分的特定包是react-native-datetime.我希望能够将android部分导入android-studio并找出如何运行和修改其中一个选择器.

xcode android android-studio react-native

9
推荐指数
1
解决办法
179
查看次数

chrome调试器:在控制台中单击异常链接会在新选项卡中打开文件,而不是交叉链接到源文件

我打开了chrome调试器,显示控制台和sources选项卡.我正在调试meteor.js应用程序,并在控制台中获得异常,该异常显示堆栈跟踪中带有行号的文件链接.

堆栈跟踪和chrome窗口配置

我发誓当我以前点击这些时它会交叉链接到来源选项卡中的特定行.但现在只需在chrome中的新选项卡中打开文件:

文件在新标签中打开

我正在使用咖啡脚本并启用了源映射,并在最新的Ubuntu LTS和Chrome测试版中完成此操作.

console google-chrome coffeescript meteor source-maps

8
推荐指数
1
解决办法
530
查看次数