V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
newghost
V2EX  ›  Node.js

免费开源的博客引擎,论坛系统,网站模板和轻量级的 CMS

  •  4
     
  •   newghost · 2014-08-07 07:29:00 +08:00 · 6700 次点击
    这是一个创建于 3751 天前的主题,其中的信息可能已经有所发展或是发生改变。
    特点

    简单,全栈
    前后端均基于JavaScript技术,前后台没有技术差异,安装布署简单,在线升级方便。

    NoDB,无配置
    不仅仅支持数据库, 默认数据存储在JSON文件中,同样支持mongodb等;默认无需配置。

    高性能
    所有数据都会存储在缓存层(内存),数据访问无延时,系统资源消耗少。




    Github地址: http://github.com/newghost/ourjs
    30 条回复    2014-08-07 21:05:09 +08:00
    molinxx
        1
    molinxx  
       2014-08-07 07:31:30 +08:00 via iPhone   ❤️ 1
    周末有空折腾一下~感谢开源~
    shihty5
        2
    shihty5  
       2014-08-07 07:35:05 +08:00
    感谢开源,顺便问一下为什么进了你的页面后,整个界面颜色变了?
    newghost
        3
    newghost  
    OP
       2014-08-07 07:39:37 +08:00
    @shihty5

    由于原来使用的主题版本过旧(基于bootstrap, version 2.3),且经过较长时间修改代码比较混乱,而且有很多自用内容(邮件列表,Share, Tracking Code等)。所以基于Foundation重做了一套前端主题(Theme),并更换了文本编辑器,体积更小,页面更简洁。两套主题使用同一套后端代码(只有配置文件不同),目前为Beta版,可能会有些问题。
    xiqingongzi
        4
    xiqingongzi  
       2014-08-07 07:51:16 +08:00 via Android
    感谢楼主开源
    pyshift
        5
    pyshift  
       2014-08-07 08:08:37 +08:00
    @newghost 感觉是他想问V2的黑色背景=。= 不知道理解的对不对
    reeco
        6
    reeco  
       2014-08-07 08:39:57 +08:00
    @shihty5 节点的背景
    hkongm
        7
    hkongm  
       2014-08-07 08:50:06 +08:00
    感谢开源
    watching
    570k
        8
    570k  
       2014-08-07 09:02:00 +08:00
    英文版的
    newghost
        9
    newghost  
    OP
       2014-08-07 09:21:48 +08:00
    @reeco
    @pyshift

    Thank you, 理解有误
    newghost
        10
    newghost  
    OP
       2014-08-07 09:24:10 +08:00
    @570k

    己在项目主页加入中文版支持链接
    seadir
        11
    seadir  
       2014-08-07 09:27:45 +08:00 via Android
    请问lz这个如何部署?有没有相关的教程
    halfblood
        12
    halfblood  
       2014-08-07 09:32:35 +08:00
    为啥要在实现一个webserver,和express比较有啥不同哦?感觉有点像是重复造轮子
    halfblood
        13
    halfblood  
       2014-08-07 09:33:11 +08:00
    我说的是WebSvr
    newghost
        14
    newghost  
    OP
       2014-08-07 09:33:21 +08:00
    @seadir

    文档正在整理中,请查看项目中的 “中文支持”
    newghost
        15
    newghost  
    OP
       2014-08-07 09:38:35 +08:00
    @halfblood

    确实造了个轮子

    WebSvr 是两年多以前在上家公司时做的一个小项目,当时只是做一个静态的Web Server,后来越做功能越多。

    基于它只要是个人比较熟悉,有什么特殊要求直接改底层就可以了。
    viaNull
        16
    viaNull  
       2014-08-07 11:27:26 +08:00
    感谢开源
    前两天在cNode 就看到啦。
    找时间学习下
    jakwings
        17
    jakwings  
       2014-08-07 11:35:07 +08:00
    看了一下 svr/root.js,添删评论的时候貌似还没有考虑到共时操作,有什么简单的解决方法吗?
    newghost
        18
    newghost  
    OP
       2014-08-07 12:15:25 +08:00   ❤️ 1
    @jakwings

    node.js 是单线程异步模型,

    设计思想是首先会更新内存并立即返回,然后同步到文件系统(在一段时间内同步一次,如2秒),

    应该不会出现互斥的问题。
    newghost
        19
    newghost  
    OP
       2014-08-07 12:15:40 +08:00
    @viaNull

    感谢,欢迎测试
    towser
        20
    towser  
       2014-08-07 12:18:10 +08:00
    全部放缓存数据量大了会不会炸裂?
    newghost
        21
    newghost  
    OP
       2014-08-07 12:29:41 +08:00
    @towser

    曾经也有一些人样问过,经过一段时间实践和测算应该不会。


    1) JSON 数据并不会占用多少内存,我测试过一个网站,平均每天发贴1篇,回贴N篇(目前己有450+贴),内存消耗量比布暑初期并没有多占用多少内存(目前仍< 90Mb)。照这个趋势,保守估计1G内存最少可以使用10年。

    2) 因为node.js的异步模型,内存消耗基本跟访问量无关,没有线程去消耗内存资源,我通过google analytics在测试网站上看到100~200人同时在线时的线程消耗内存量与闲时访问量并没有多大差别。

    3) Node JavaScript V8可能单个线程有内存限制,如果流量和规模真的达到这个限制,可能会采取多进程来处理这个问题。但是现在离遇到这个问题还很遥远。
    rentaro
        22
    rentaro  
       2014-08-07 13:17:14 +08:00
    感谢楼主分享,请问这个项目到今天为止做了多久
    newghost
        23
    newghost  
    OP
       2014-08-07 13:27:10 +08:00   ❤️ 1
    @rentaro

    ourjs从去年开始,最初版本用了两周,10月份上线测试,在运行中不断调整,平均每周大概会花几个小时维护升级,最近一个月升级和整理代码花费的时间比较多。

    websvr 是很早的一个项目,有很长一段时间没有维护,ourjs开始以后开始跟着一起修改。
    jakwings
        24
    jakwings  
       2014-08-07 13:53:49 +08:00
    @newghost 啊,我都忘了是单线程的了。可是 Node.js 的 disk IO 并不是单线程的,无法保证回调函数的执行顺序。
    jakwings
        25
    jakwings  
       2014-08-07 13:57:32 +08:00
    @jakwings 啊,我貌似说错了,貌似 Disk IO 也是单线程的。只是 fs.writeFile 回调顺序不知道是否确定……
    newghost
        26
    newghost  
    OP
       2014-08-07 14:15:34 +08:00
    @jakwings

    应该所有的io操作都是阻塞的。

    增删改操作会等数据IO,完成以后执行,下一步就是直接跳转或者是关闭请求,这里的回调顺序应该没有什么影响。而且实际上线时也并没有遇到执行顺序问题。

    adapter.update(article._id, 'article', article, function(result) {
    //After update merge other fields from the old article
    utility.merge(article, Articles.all[article._id]);
    Articles.update(article);
    redirect(); //跳转url
    });


    你说的那种情况应该是两个有同时编辑一篇文章,一个人先保存,一个人后保存,然后后来的会把前面的覆盖的,但是应该所有的BLOG系统都有这个问题。
    towser
        27
    towser  
       2014-08-07 15:59:49 +08:00   ❤️ 1
    @newghost 蛮好。给赞。
    zzutmebwd
        28
    zzutmebwd  
       2014-08-07 16:52:17 +08:00 via Android
    @shihty5 节点主题
    jakwings
        29
    jakwings  
       2014-08-07 20:14:58 +08:00   ❤️ 1
    @newghost 你不是说这可以做论坛系统么,假如一篇文章太热,很多人在回复同一篇文章,这个问题应该会很常见吧……
    还是模仿关系型数据库为每篇文章开一个 collection 收集独立的评论内容比较稳妥。
    newghost
        30
    newghost  
    OP
       2014-08-07 21:05:09 +08:00   ❤️ 1
    @jakwings

    你说的这种问题还没有考虑过,如果遇到的话应该也可以解决,会优化一下,评论成功时将此评论 push 入 cache array 而不更新整个reply array。 q

    最初也想过你说的这种方案,后来考虑到增加一种collection的话开销会比较大。因为评论的有时侯可能会非常随意,导致数量会特别多,评论又都特别短,信息量不大,这套系统又是要兼容文件系统的,每条评论存成一个文件会造成比较大资源开销,初始化的时侯每条评论都要载入内存的,然后进分类,在网站内容多了以后,这个过程可能会比较长。 所以权衡了下采用了比较简单的方案,把评论与article内容都存在一个json文件里。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5836 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:41 · PVG 10:41 · LAX 18:41 · JFK 21:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.