Blog

Blog

PHODAL

自己动手写编辑器——Lumia Sidebar

似乎从一开始我们就是在模仿别人的editor,不知道这是不是必要的,但是在有时候觉得没有必要再造一个轮子,或者说我们应该考虑我们想要的功能到系统里,而不是和别人一样?

最后效果

Mock atom编辑器到这里算是要告一段落了,献上截图一张。 lumia editor

Makefile

或许写脚本会比较好,但是还是没有Makefile给人的感觉爽

代码还是在github上,可能会有点大,中间还经历zip压缩了.git的过程

  zip -r app.nw * -x ".git/*"

zip不包含某路径的写说就是上面那个

nw = /Applications/node-webkit/node-webkit.app/Contents/MacOS/node-webkit

default:
    zip -r app.nw * -x ".git/*"
    @echo "done"
    $(nw) app.nw

这里似乎没有考虑跨平台,不过我想这不是个问题,问题都是要被node-webkit解决,又是严重依赖某一个库。

打包node_modules?

之前使用python的时候经历过类似的事,所以无论怎么说还是带上这个好,而且大小又不是很大。


  "dependencies": {
    "underscore": "~1.6.0",
    "jquery": "~2.1.0",
    "coffee-script": "~1.7.1",
    "backbone": "~1.1.2",
    "string": "~1.8.0",
    "jade":"~1.3.1"
  }
主要的库还是上面这些。

Lumia Sidebar

构造这样一个sidebar对于HTML来说还是比较简单,而且这里用的还是atom的样式。。

             <div class="tree-view-resizer tool-panel panel-left" style="width: 140px;">
                    <div class="tree-view-scroller">

                        <ul id="files"></ul>
                    </div>
                </div>

虽然可以写,但是显得有些没有必要。

唯一还要加的就是#file加个css

  

#files {
     font-size: 11px;
  }

接着

  • 遍历文件
  • 获取文件名
  • 打开文件

前两个事情就用node-webkit的示例过去了,我们还要做的就是打开文件。


    var folder = new folder_view.Folder($('#files'));
    folder.open(process.cwd());
    folder.on('navigate', function(dir, mime) {
        if (mime.type == 'folder') {
            folder.open(mime.path);
        } else {
            onChosenFileToOpen(mime.path);
        }
    });

也就是来判断是否是目录,当我们点击的是文件的时候打开文件。

onChosenFileToOpen();就是之前用于打开文件到编辑器的函数。

还要做的?

  • 增加包管理
  • 增加扩展
  • 增加终端功能
  • 修复bug?

最后呢?成为另外一个sublime text?另外一个atom?

欠缺的部分

  • 没有利用好nodejs的优势
  • 没有利用好webkit
  • 离系统底层远

缺少的核心:特色

一个编辑器应该有其特色才会有开发者用它,如果这个编辑器和那个编辑器用上去没有什么区别的话,那么他完全可以用一个更好的编辑器,有着更好的社区支持。而不是为了符合大众的需求,符合小众需求,就一部分人的需求而言,会发展得更好,也会有更好的竞争力。

在早期Vim相较于一个Emacs显得轻量级,但是Emacs比Vim强大得多,所以两个人群就分开了。

换在今天来说Sublime是一个轻量级的editor,相对于intellij idea而言,当然我们还会有其他选择比较textmate、atom,因为sublime是收费的。

对于有重构需求的人来说Intellij idea会是一个更好的选择,这是在一般的编辑器中不会有的,只是对于写其他语言的人来说,可能QT会是更好的答案,他们需要跨平台,需要其他更好的支持,不同的人对于IDE会有不同的需要,而IDE也是有针对性的,相比于没有针对性的editor来说

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签